slegsylt.pas 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. program slegsylt;
  2. uses
  3. typ,
  4. iom,
  5. sle;
  6. const
  7. m1 = -8;
  8. m2 = 12;
  9. nmax = 10;
  10. type
  11. row = array[1..nmax] of ArbFloat;
  12. var
  13. i, j, n, k, l, v, nv, term: ArbInt;
  14. ca: ArbFloat;
  15. b, x: array[m1..m2] of ArbFloat;
  16. a: array[m1..m2] of ^row;
  17. begin
  18. Assign(input, ParamStr(1));
  19. Reset(input);
  20. Assign(output, ParamStr(2));
  21. Rewrite(output);
  22. Write('program results slegsylt ');
  23. case SizeOf(ArbFloat) of
  24. 4: writeln('(single)');
  25. 8: writeln('(double)');
  26. 6: writeln('(real)');
  27. end;
  28. writeln;
  29. Read(randseed);
  30. writeln(' randseed = ', randseed: 15);
  31. Read(nv);
  32. writeln;
  33. writeln(' number of examples: ', nv: 2);
  34. for v := 1 to nv do
  35. begin
  36. writeln;
  37. writeln(' example number :', v: 2);
  38. Read(k, l, n);
  39. for i := 1 to n do
  40. begin
  41. Getmem(a[i + k - 1], n * sizeOf(ArbFloat));
  42. iomrev(input, a[i + k - 1]^[1], i);
  43. end;
  44. iomrev(input, b[l], n);
  45. slegsyl(n, a[k], b[l], x[l], ca, term);
  46. writeln;
  47. writeln(' A =');
  48. for i := 1 to n do
  49. for j := i + 1 to n do
  50. a[i + k - 1]^[j] := a[j + k - 1]^[i];
  51. for i := 1 to n do
  52. iomwrv(output, a[i + k - 1]^[1], n, numdig);
  53. for i := n downto 1 do
  54. Freemem(a[i + k - 1], n * sizeOf(ArbFloat));
  55. writeln;
  56. writeln('b=');
  57. iomwrv(output, b[l], n, numdig);
  58. writeln;
  59. writeln('term=', term: 2);
  60. writeln;
  61. case term of
  62. 1:
  63. begin
  64. writeln('x=');
  65. iomwrv(output, x[l], n, numdig);
  66. writeln;
  67. writeln(' ca = ', ca: 12);
  68. end;
  69. 2: writeln('solution not possible');
  70. 3: writeln(' wrong value of n');
  71. end;
  72. writeln('-----------------------------------------------');
  73. end; {example}
  74. end.
  75. program slegsylt;
  76. uses
  77. typ,
  78. iom,
  79. sle;
  80. const
  81. m1 = -8;
  82. m2 = 12;
  83. nmax = 10;
  84. type
  85. row = array[1..nmax] of ArbFloat;
  86. var
  87. i, j, n, k, l, v, nv, term: ArbInt;
  88. ca: ArbFloat;
  89. b, x: array[m1..m2] of ArbFloat;
  90. a: array[m1..m2] of ^row;
  91. begin
  92. Assign(input, ParamStr(1));
  93. Reset(input);
  94. Assign(output, ParamStr(2));
  95. Rewrite(output);
  96. Write('program results slegsylt ');
  97. case SizeOf(ArbFloat) of
  98. 4: writeln('(single)');
  99. 8: writeln('(double)');
  100. 6: writeln('(real)');
  101. end;
  102. writeln;
  103. Read(randseed);
  104. writeln(' randseed = ', randseed: 15);
  105. Read(nv);
  106. writeln;
  107. writeln(' number of examples: ', nv: 2);
  108. for v := 1 to nv do
  109. begin
  110. writeln;
  111. writeln(' example number :', v: 2);
  112. Read(k, l, n);
  113. for i := 1 to n do
  114. begin
  115. Getmem(a[i + k - 1], n * sizeOf(ArbFloat));
  116. iomrev(input, a[i + k - 1]^[1], i);
  117. end;
  118. iomrev(input, b[l], n);
  119. slegsyl(n, a[k], b[l], x[l], ca, term);
  120. writeln;
  121. writeln(' A =');
  122. for i := 1 to n do
  123. for j := i + 1 to n do
  124. a[i + k - 1]^[j] := a[j + k - 1]^[i];
  125. for i := 1 to n do
  126. iomwrv(output, a[i + k - 1]^[1], n, numdig);
  127. for i := n downto 1 do
  128. Freemem(a[i + k - 1], n * sizeOf(ArbFloat));
  129. writeln;
  130. writeln('b=');
  131. iomwrv(output, b[l], n, numdig);
  132. writeln;
  133. writeln('term=', term: 2);
  134. writeln;
  135. case term of
  136. 1:
  137. begin
  138. writeln('x=');
  139. iomwrv(output, x[l], n, numdig);
  140. writeln;
  141. writeln(' ca = ', ca: 12);
  142. end;
  143. 2: writeln('solution not possible');
  144. 3: writeln(' wrong value of n');
  145. end;
  146. writeln('-----------------------------------------------');
  147. end; {example}
  148. end.