eiggs3te.pas 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. program eiggs3te;
  2. uses
  3. typ,
  4. iom,
  5. omv,
  6. eig;
  7. const
  8. m1 = -10;
  9. m2 = 10;
  10. m3 = -4;
  11. m4 = 15;
  12. n1 = -5;
  13. n2 = 10;
  14. n3 = -3;
  15. n4 = 10;
  16. var
  17. i, j, ex, nex, i1, j1, i2, j2, n, term: ArbInt;
  18. a: array[m1..m2, n1..n2] of ArbFloat;
  19. x, e: array[m3..m4, n3..n4] of ArbFloat;
  20. lam: array[m1..m2] of ArbFloat;
  21. begin
  22. Write(' program results eiggs3te');
  23. case sizeof(ArbFloat) of
  24. 4: writeln('(single)');
  25. 6: writeln('(real)');
  26. 8: writeln('(double)');
  27. end;
  28. Read(nex);
  29. writeln;
  30. writeln('number of examples', nex: 2);
  31. writeln;
  32. for ex := 1 to nex do
  33. begin
  34. writeln('example number', ex: 2);
  35. writeln;
  36. Read(i1, j1, i2, j2, n);
  37. for i := 1 to n do
  38. for j := 1 to i do
  39. Read(a[i1 + i - 1, j1 + j - 1]);
  40. eiggs3(a[i1, j1], n, n2 - n1 + 1, lam[i1], x[i2, j2], n4 - n3 + 1, term);
  41. for i := 1 to n do
  42. for j := 1 to i - 1 do
  43. a[i1 + j - 1, j1 + i - 1] := a[i1 + i - 1, j1 + j - 1];
  44. writeln;
  45. writeln('A=');
  46. iomwrm(output, a[i1, j1], n, n, n2 - n1 + 1, numdig);
  47. writeln;
  48. writeln('term=', term: 2);
  49. if term = 1 then
  50. begin
  51. writeln;
  52. writeln('lambda=');
  53. iomwrv(output, lam[i1], n, numdig);
  54. writeln;
  55. writeln('X=');
  56. iomwrm(output, x[i2, j2], n, n, n4 - n3 + 1, numdig);
  57. writeln;
  58. writeln('AX-lambda.X = ');
  59. omvmmm(a[i1, j1], n, n, n2 - n1 + 1, x[i2, j2], n, n4 - n3 + 1,
  60. e[i2, j2], n4 - n3 + 1);
  61. for j := 1 to n do
  62. for i := 1 to n do
  63. e[i + i2 - 1, j + j2 - 1] := e[i + i2 - 1, j + j2 - 1] - lam[i1 + j - 1] * x[i + i2 - 1, j + j2 - 1];
  64. iomwrm(output, e[i2, j2], n, n, n4 - n3 + 1, numdig);
  65. end;
  66. writeln('-------------------------------------------------------');
  67. end;
  68. Close(input);
  69. Close(output);
  70. end.