eigsv3te.pas 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. program eigsv3te;
  2. uses
  3. typ,
  4. iom,
  5. omv,
  6. eig;
  7. const
  8. m1 = -4;
  9. m2 = 20;
  10. n1 = -5;
  11. n2 = 10;
  12. r1 = -3;
  13. r2 = 18;
  14. s1 = -2;
  15. s2 = 18;
  16. x1 = -5;
  17. x2 = 22;
  18. y1 = -3;
  19. y2 = 21;
  20. l1 = -2;
  21. l2 = 17;
  22. rwa = n2 - n1 + 1;
  23. rwu = s2 - s1 + 1;
  24. rwv = y2 - y1 + 1;
  25. var
  26. ex, nex, k, i, j, m, n, p, term, l, r, s, x, y: ArbInt;
  27. a, usvt, e: array[m1..m2, n1..n2] of ArbFloat;
  28. u, ut, utu, us: array[r1..r2, s1..s2] of ArbFloat;
  29. v, vt, vtv: array[x1..x2, y1..y2] of ArbFloat;
  30. q: array[l1..l2] of ArbFloat;
  31. begin
  32. Write(' program results eigsv3te');
  33. case sizeof(ArbFloat) of
  34. 4: writeln('(single)');
  35. 6: writeln('(real)');
  36. 8: writeln('(double)');
  37. end;
  38. Read(nex);
  39. writeln;
  40. writeln('number of examples', nex: 2);
  41. writeln;
  42. for ex := 1 to nex do
  43. begin
  44. writeln;
  45. writeln(' example number :', ex: 2);
  46. Read(k, p, l, r, s, x, y, m, n);
  47. iomrem(input, a[k, p], m, n, rwa);
  48. eigsv3(a[k, p], m, n, rwa, q[l], u[r, s], rwu, v[x, y], rwv, term);
  49. writeln;
  50. writeln(' a =');
  51. iomwrm(output, a[k, p], m, n, rwa, 17);
  52. writeln;
  53. writeln(' term=', term: 2);
  54. if term = 1 then
  55. begin
  56. writeln;
  57. writeln(' q =');
  58. iomwrv(output, q[l], n, numdig);
  59. writeln;
  60. writeln(' u =');
  61. iomwrm(output, u[r, s], m, n, rwu, numdig);
  62. writeln;
  63. writeln(' v =');
  64. iomwrm(output, v[x, y], n, n, rwv, numdig);
  65. writeln;
  66. writeln(' u(t) x u =');
  67. omvtrm(u[r, s], m, n, rwu, ut[r, s], rwu);
  68. omvmmm(ut[r, s], n, m, rwu, u[r, s], n, rwu, utu[r, s], rwu);
  69. iomwrm(output, utu[r, s], n, n, rwu, numdig);
  70. writeln;
  71. writeln(' v(t) x v =');
  72. omvtrm(v[x, y], n, n, rwv, vt[x, y], rwv);
  73. omvmmm(vt[x, y], n, n, rwv, v[x, y], n, rwv, vtv[x, y], rwv);
  74. iomwrm(output, vtv[x, y], n, n, rwv, numdig);
  75. writeln;
  76. writeln(' a - u x sigma x v(t) = ');
  77. for i := 1 to m do
  78. for j := 1 to n do
  79. us[r - 1 + i, s - 1 + j] := u[r - 1 + i, s - 1 + j] * q[l - 1 + j];
  80. omvmmm(us[r, s], m, n, rwu, vt[x, y], n, rwv, usvt[k, p], rwa);
  81. for i := 1 to m do
  82. for j := 1 to n do
  83. e[k - 1 + i, p - 1 + j] := a[k - 1 + i, p - 1 + j] - usvt[k - 1 + i, p - 1 + j];
  84. iomwrm(output, e[k, p], m, n, rwa, numdig);
  85. end;
  86. end;
  87. Close(input);
  88. Close(output);
  89. end.