sleglste.pas 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. program sleglste;
  2. uses
  3. typ,
  4. iom,
  5. omv,
  6. sle;
  7. const
  8. k1 = -20;
  9. k2 = 20;
  10. l1 = -10;
  11. l2 = 10;
  12. r1 = -10;
  13. r2 = 18;
  14. v1 = -8;
  15. v2 = 18;
  16. rwa = l2 - l1 + 1;
  17. var
  18. ex, nv, i, m, n, term, k, l, r, v: ArbInt;
  19. a: array[k1..k2, l1..l2] of ArbFloat;
  20. b, e: array[r1..r2] of ArbFloat;
  21. x: array[v1..v2] of ArbFloat;
  22. begin
  23. Write('program results sleglste ');
  24. case SizeOf(ArbFloat) of
  25. 4: writeln('(single)');
  26. 8: writeln('(double)');
  27. 6: writeln('(real)');
  28. end;
  29. Read(nv);
  30. writeln;
  31. writeln(' number of examples: ', nv: 2);
  32. for ex := 1 to nv do
  33. begin
  34. writeln;
  35. writeln(' example number :', ex: 2);
  36. Read(k, l, r, v, m, n);
  37. iomrem(input, a[k, l], m, n, rwa);
  38. iomrev(input, b[r], m);
  39. slegls(a[k, l], m, n, rwa, b[r], x[v], term);
  40. writeln;
  41. writeln(' A =');
  42. iomwrm(output, a[k, l], m, n, rwa, numdig);
  43. writeln;
  44. writeln(' b =');
  45. iomwrv(output, b[r], m, numdig);
  46. writeln;
  47. writeln(' term=', term: 2);
  48. case term of
  49. 1:
  50. begin
  51. writeln;
  52. writeln(' x =');
  53. iomwrv(output, x[v], n, numdig);
  54. writeln;
  55. writeln(' Ax - b =');
  56. omvmmv(a[k, l], m, n, rwa, x[v], e[r]);
  57. for i := 1 to m do
  58. e[r - 1 + i] := e[r - 1 + i] - b[r - 1 + i];
  59. iomwrv(output, e[r], m, numdig);
  60. end;
  61. 2: writeln(' A is (nearly) singular');
  62. 3: writeln('wrong input (n<1 or m<n)')
  63. end;
  64. writeln(' -------------------------------------------');
  65. end;
  66. end.
  67. program sleglste;
  68. uses
  69. typ,
  70. iom,
  71. omv,
  72. sle;
  73. const
  74. k1 = -20;
  75. k2 = 20;
  76. l1 = -10;
  77. l2 = 10;
  78. r1 = -10;
  79. r2 = 18;
  80. v1 = -8;
  81. v2 = 18;
  82. rwa = l2 - l1 + 1;
  83. var
  84. ex, nv, i, m, n, term, k, l, r, v: ArbInt;
  85. a: array[k1..k2, l1..l2] of ArbFloat;
  86. b, e: array[r1..r2] of ArbFloat;
  87. x: array[v1..v2] of ArbFloat;
  88. begin
  89. Write('program results sleglste ');
  90. case SizeOf(ArbFloat) of
  91. 4: writeln('(single)');
  92. 8: writeln('(double)');
  93. 6: writeln('(real)');
  94. end;
  95. Read(nv);
  96. writeln;
  97. writeln(' number of examples: ', nv: 2);
  98. for ex := 1 to nv do
  99. begin
  100. writeln;
  101. writeln(' example number :', ex: 2);
  102. Read(k, l, r, v, m, n);
  103. iomrem(input, a[k, l], m, n, rwa);
  104. iomrev(input, b[r], m);
  105. slegls(a[k, l], m, n, rwa, b[r], x[v], term);
  106. writeln;
  107. writeln(' A =');
  108. iomwrm(output, a[k, l], m, n, rwa, numdig);
  109. writeln;
  110. writeln(' b =');
  111. iomwrv(output, b[r], m, numdig);
  112. writeln;
  113. writeln(' term=', term: 2);
  114. case term of
  115. 1:
  116. begin
  117. writeln;
  118. writeln(' x =');
  119. iomwrv(output, x[v], n, numdig);
  120. writeln;
  121. writeln(' Ax - b =');
  122. omvmmv(a[k, l], m, n, rwa, x[v], e[r]);
  123. for i := 1 to m do
  124. e[r - 1 + i] := e[r - 1 + i] - b[r - 1 + i];
  125. iomwrv(output, e[r], m, numdig);
  126. end;
  127. 2: writeln(' A is (nearly) singular');
  128. 3: writeln('wrong input (n<1 or m<n)')
  129. end;
  130. writeln(' -------------------------------------------');
  131. end;
  132. end.