invgente.pas 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. program invgente;
  2. uses
  3. typ,
  4. iom,
  5. inv;
  6. const
  7. m1 = -10;
  8. m2 = 10;
  9. n1 = -5;
  10. n2 = 10;
  11. var
  12. t, aantal, kk, ii, jj, k, j, n, term: ArbInt;
  13. s: ArbFloat;
  14. u, h, a: array[m1..m2, n1..n2] of ArbFloat;
  15. begin
  16. Write(' program results invgente');
  17. case sizeof(ArbFloat) of
  18. 4: writeln('(single)');
  19. 6: writeln('(real)');
  20. 8: writeln('(double)');
  21. end;
  22. Read(aantal);
  23. writeln;
  24. writeln(' number of examples:', aantal: 3);
  25. for t := 1 to aantal do
  26. begin
  27. writeln;
  28. writeln(' example nr ', t: 3);
  29. Read(k, j, n);
  30. iomrem(input, a[k, j], n, n, n2 - n1 + 1);
  31. writeln;
  32. writeln('a =');
  33. iomwrm(output, a[k, j], n, n, n2 - n1 + 1, numdig);
  34. for ii := 1 to n do
  35. for jj := 1 to n do
  36. h[k - 1 + ii, j - 1 + jj] := a[k - 1 + ii, j - 1 + jj];
  37. invgen(n, n2 - n1 + 1, a[k, j], term);
  38. writeln;
  39. writeln('term=', term: 2);
  40. if term = 1 then
  41. begin
  42. writeln('inv(a)=');
  43. iomwrm(output, a[k, j], n, n, n2 - n1 + 1, numdig);
  44. for ii := 1 to n do
  45. for jj := 1 to n do
  46. begin
  47. s := 0;
  48. for kk := 1 to n do
  49. s := s + h[k - 1 + ii, j - 1 + kk] * a[k - 1 + kk, j - 1 + jj];
  50. u[ii, jj] := s;
  51. end; {ii,jj}
  52. writeln;
  53. writeln('a x inv(a) =');
  54. iomwrm(output, u[1, 1], n, n, n2 - n1 + 1, numdig);
  55. end; {term=1}
  56. end; {t}
  57. Close(input);
  58. Close(output);
  59. end.