eiggs4te.pas 2.0 KB

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