eigsv3te.pas 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  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.
  90. program eigsv3te;
  91. uses
  92. typ,
  93. iom,
  94. omv,
  95. eig;
  96. const
  97. m1 = -4;
  98. m2 = 20;
  99. n1 = -5;
  100. n2 = 10;
  101. r1 = -3;
  102. r2 = 18;
  103. s1 = -2;
  104. s2 = 18;
  105. x1 = -5;
  106. x2 = 22;
  107. y1 = -3;
  108. y2 = 21;
  109. l1 = -2;
  110. l2 = 17;
  111. rwa = n2 - n1 + 1;
  112. rwu = s2 - s1 + 1;
  113. rwv = y2 - y1 + 1;
  114. var
  115. ex, nex, k, i, j, m, n, p, term, l, r, s, x, y: ArbInt;
  116. a, usvt, e: array[m1..m2, n1..n2] of ArbFloat;
  117. u, ut, utu, us: array[r1..r2, s1..s2] of ArbFloat;
  118. v, vt, vtv: array[x1..x2, y1..y2] of ArbFloat;
  119. q: array[l1..l2] of ArbFloat;
  120. begin
  121. Write(' program results eigsv3te');
  122. case sizeof(ArbFloat) of
  123. 4: writeln('(single)');
  124. 6: writeln('(real)');
  125. 8: writeln('(double)');
  126. end;
  127. Read(nex);
  128. writeln;
  129. writeln('number of examples', nex: 2);
  130. writeln;
  131. for ex := 1 to nex do
  132. begin
  133. writeln;
  134. writeln(' example number :', ex: 2);
  135. Read(k, p, l, r, s, x, y, m, n);
  136. iomrem(input, a[k, p], m, n, rwa);
  137. eigsv3(a[k, p], m, n, rwa, q[l], u[r, s], rwu, v[x, y], rwv, term);
  138. writeln;
  139. writeln(' a =');
  140. iomwrm(output, a[k, p], m, n, rwa, 17);
  141. writeln;
  142. writeln(' term=', term: 2);
  143. if term = 1 then
  144. begin
  145. writeln;
  146. writeln(' q =');
  147. iomwrv(output, q[l], n, numdig);
  148. writeln;
  149. writeln(' u =');
  150. iomwrm(output, u[r, s], m, n, rwu, numdig);
  151. writeln;
  152. writeln(' v =');
  153. iomwrm(output, v[x, y], n, n, rwv, numdig);
  154. writeln;
  155. writeln(' u(t) x u =');
  156. omvtrm(u[r, s], m, n, rwu, ut[r, s], rwu);
  157. omvmmm(ut[r, s], n, m, rwu, u[r, s], n, rwu, utu[r, s], rwu);
  158. iomwrm(output, utu[r, s], n, n, rwu, numdig);
  159. writeln;
  160. writeln(' v(t) x v =');
  161. omvtrm(v[x, y], n, n, rwv, vt[x, y], rwv);
  162. omvmmm(vt[x, y], n, n, rwv, v[x, y], n, rwv, vtv[x, y], rwv);
  163. iomwrm(output, vtv[x, y], n, n, rwv, numdig);
  164. writeln;
  165. writeln(' a - u x sigma x v(t) = ');
  166. for i := 1 to m do
  167. for j := 1 to n do
  168. us[r - 1 + i, s - 1 + j] := u[r - 1 + i, s - 1 + j] * q[l - 1 + j];
  169. omvmmm(us[r, s], m, n, rwu, vt[x, y], n, rwv, usvt[k, p], rwa);
  170. for i := 1 to m do
  171. for j := 1 to n do
  172. e[k - 1 + i, p - 1 + j] := a[k - 1 + i, p - 1 + j] - usvt[k - 1 + i, p - 1 + j];
  173. iomwrm(output, e[k, p], m, n, rwa, numdig);
  174. end;
  175. end;
  176. Close(input);
  177. Close(output);
  178. end.