sleglste.pas 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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.