eigts2te.pas 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. program eigts2te;
  2. uses
  3. eig,
  4. iom,
  5. typ;
  6. const
  7. m1 = -9;
  8. m2 = 37;
  9. var
  10. t: ArbFloat;
  11. i, ex, nex, k1, k2, i1, j1, n, term: ArbInt;
  12. d, cd, lam: array[m1..m2] of ArbFloat;
  13. begin
  14. Write(' program results eigts2te');
  15. case sizeof(ArbFloat) of
  16. 4: writeln('(single)');
  17. 6: writeln('(real)');
  18. 8: writeln('(double)');
  19. end;
  20. Read(nex);
  21. writeln;
  22. writeln('number of examples', nex: 2);
  23. writeln;
  24. for ex := 1 to nex do
  25. begin
  26. writeln('example number', ex: 2);
  27. writeln;
  28. if ex < nex then
  29. begin
  30. Read(i1, j1, n, k1, k2);
  31. iomrev(input, d[i1], n);
  32. iomrev(input, cd[j1 + 1], n - 1);
  33. end
  34. else
  35. begin
  36. i1 := 1;
  37. j1 := 1;
  38. n := 30;
  39. k1 := 5;
  40. k2 := 8;
  41. for i := 1 to n do
  42. begin
  43. t := i;
  44. d[i] := sqr(t * t);
  45. end;
  46. for i := 2 to n do
  47. cd[i] := i - 1;
  48. end;
  49. eigts2(d[i1], cd[j1 + 1], n, k1, k2, lam[j1 + k1 - 1], term);
  50. writeln('diag =');
  51. iomwrv(output, d[i1], n, numdig);
  52. writeln('codiag =');
  53. iomwrv(output, cd[j1 + 1], n - 1, numdig);
  54. writeln;
  55. writeln('k1=', k1: 2, ' k2=', k2: 2);
  56. writeln;
  57. writeln('term=', term: 2);
  58. if term = 1 then
  59. begin
  60. writeln('lambda=');
  61. iomwrv(output, lam[j1 + k1 - 1], k2 - k1 + 1, numdig);
  62. end;
  63. writeln('------------------------------------------------------');
  64. end;
  65. Close(input);
  66. Close(output);
  67. end.
  68. program eigts2te;
  69. uses
  70. eig,
  71. iom,
  72. typ;
  73. const
  74. m1 = -9;
  75. m2 = 37;
  76. var
  77. t: ArbFloat;
  78. i, ex, nex, k1, k2, i1, j1, n, term: ArbInt;
  79. d, cd, lam: array[m1..m2] of ArbFloat;
  80. begin
  81. Write(' program results eigts2te');
  82. case sizeof(ArbFloat) of
  83. 4: writeln('(single)');
  84. 6: writeln('(real)');
  85. 8: writeln('(double)');
  86. end;
  87. Read(nex);
  88. writeln;
  89. writeln('number of examples', nex: 2);
  90. writeln;
  91. for ex := 1 to nex do
  92. begin
  93. writeln('example number', ex: 2);
  94. writeln;
  95. if ex < nex then
  96. begin
  97. Read(i1, j1, n, k1, k2);
  98. iomrev(input, d[i1], n);
  99. iomrev(input, cd[j1 + 1], n - 1);
  100. end
  101. else
  102. begin
  103. i1 := 1;
  104. j1 := 1;
  105. n := 30;
  106. k1 := 5;
  107. k2 := 8;
  108. for i := 1 to n do
  109. begin
  110. t := i;
  111. d[i] := sqr(t * t);
  112. end;
  113. for i := 2 to n do
  114. cd[i] := i - 1;
  115. end;
  116. eigts2(d[i1], cd[j1 + 1], n, k1, k2, lam[j1 + k1 - 1], term);
  117. writeln('diag =');
  118. iomwrv(output, d[i1], n, numdig);
  119. writeln('codiag =');
  120. iomwrv(output, cd[j1 + 1], n - 1, numdig);
  121. writeln;
  122. writeln('k1=', k1: 2, ' k2=', k2: 2);
  123. writeln;
  124. writeln('term=', term: 2);
  125. if term = 1 then
  126. begin
  127. writeln('lambda=');
  128. iomwrv(output, lam[j1 + k1 - 1], k2 - k1 + 1, numdig);
  129. end;
  130. writeln('------------------------------------------------------');
  131. end;
  132. Close(input);
  133. Close(output);
  134. end.