eiggs4te.pas 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  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.
  77. program eiggs4te;
  78. uses
  79. typ,
  80. iom,
  81. omv,
  82. eig;
  83. const
  84. p1 = -9;
  85. p2 = 5;
  86. n1 = -10;
  87. n2 = 8;
  88. p3 = -10;
  89. p4 = 7;
  90. n3 = -11;
  91. n4 = 9;
  92. rwa = n2 - n1 + 1;
  93. rwx = n4 - n3 + 1;
  94. var
  95. i, j, ex, nex, m2, k1, k2, i2, j2, i1, j1, n, term: ArbInt;
  96. a: array[p1..p2, n1..n2] of ArbFloat;
  97. x, e: array[p3..p4, n3..n4] of ArbFloat;
  98. lam: array[p1..p2] of ArbFloat;
  99. begin
  100. Write(' program results eiggs4te');
  101. case sizeof(ArbFloat) of
  102. 4: writeln('(single)');
  103. 6: writeln('(real)');
  104. 8: writeln('(double)');
  105. end;
  106. Read(nex);
  107. writeln;
  108. writeln('number of examples', nex: 2);
  109. writeln;
  110. for ex := 1 to nex do
  111. begin
  112. writeln('example number', ex: 2);
  113. writeln;
  114. Read(i1, j1, i2, j2, n, k1, k2);
  115. for i := 1 to n do
  116. for j := 1 to i do
  117. Read(a[i1 + i - 1, j1 + j - 1]);
  118. eiggs4(a[i1, j1], n, rwa, k1, k2, lam[i1 + k1 - 1], x[i2, j2 + k1 - 1],
  119. rwx, m2, term);
  120. writeln;
  121. writeln('A=');
  122. for i := 1 to n do
  123. for j := 1 to i - 1 do
  124. a[i1 + j - 1, j1 + i - 1] := a[i1 + i - 1, j1 + j - 1];
  125. iomwrm(output, a[i1, j1], n, n, n2 - n1 + 1, numdig);
  126. writeln;
  127. writeln('k1=', k1: 2, ' k2=', k2: 2);
  128. writeln;
  129. writeln('term=', term: 2);
  130. if term < 3 then
  131. begin
  132. writeln('lambda=');
  133. iomwrv(output, lam[i1 + k1 - 1], k2 - k1 + 1, numdig);
  134. writeln;
  135. writeln(' m2 =', m2: 2);
  136. writeln;
  137. writeln('X=');
  138. iomwrm(output, x[i2, j2 + k1 - 1], n, m2 - k1 + 1, rwx, numdig);
  139. writeln;
  140. writeln('AX-lambda.X = ');
  141. omvmmm(a[i1, j1], n, n, n2 - n1 + 1, x[i2, j2 + k1 - 1], m2 - k1 + 1, n4 - n3 + 1,
  142. e[i2, j2 + k1 - 1], n4 - n3 + 1);
  143. for j := k1 to m2 do
  144. for i := 1 to n do
  145. 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];
  146. iomwrm(output, e[i2, j2 + k1 - 1], n, m2 - k1 + 1, n4 - n3 + 1, numdig);
  147. end;
  148. writeln('---------------------------------------------------------');
  149. end;
  150. Close(input);
  151. Close(output);
  152. end.