eiggs3te.pas 3.5 KB

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