Пост
Hello :)

Твиты

-

Решение СЛАУ методом Гаусса

Завтра, экзамен по предмету "Модели и методы обработки экспериментальных данных" задание было: Составить программу решения систем линейных алгебраических уравнений. Сижу, готовлюсь.

gauss.pas
  1. Program zhGauss;
  2. Uses Crt;
  3. Const n0=10;
  4. Type TMatr=array[1..n0,1..n0+1] of Real;
  5. TV =array[1..n0] of Real;
  6. var
  7. Matr:TMatr;
  8. i,j,n:integer;
  9. Procedure OutPutMtr(Matr:TMatr;n:integer);
  10. var i,j:integer;
  11. begin
  12. for i:=1 to n do begin
  13. writeln;
  14. for j:=1 to n do
  15. write(Matr[i,j]:6:3);
  16. end;
  17. writeln;
  18. end;
  19. Procedure Gauss(Matr:Tmatr;Pr:Tv;var V:Tv;p:integer);
  20. var i,k,j:Integer;
  21. d,s:real;
  22. begin
  23. for i:=1 to p do
  24. Matr[i,n+1]:=pr[i];
  25. {Прямой ход}
  26. for i:=1 to p do begin
  27. d:=Matr[i,i];
  28. {writeln('d=',d);}
  29. for k:=1 to p+1 do
  30. Matr[i,k]:=Matr[i,k]/d;
  31. OutPutMtr(Matr,p);
  32. readln;
  33. for n:=i+1 to p do begin
  34. d:=Matr[n,i];
  35. for j:=1 to p+1 do
  36. Matr[N, j]:= Matr[N, j] - d * Matr[i, j];
  37. OutPutMtr(Matr,p);
  38. readln;
  39. end;
  40. end;
  41. OutPutMtr(Matr,p);{Обратный ход}
  42. v[p]:=Matr[p,p+1]/Matr[p,p];
  43. for i:=p-1 downto 1 do begin
  44. s:=0;
  45. for k:=i+1 to p do
  46. s:=s+matr[i,k]*v[k];
  47. v[i]:=Matr[i,p+1]-s;
  48. end;
  49. end;
  50. var Pr0,v0,pr1,v:Tv;
  51. Sr,D:Tv;
  52. mn,ss,dd,s:real;
  53. kk,kkk,r,f:integer;
  54. begin
  55. ClrScr;
  56. {ввод свободных членов}
  57. n:=4; writeln('Введите правые части');
  58. for i:=1 to n do begin
  59. readln(r);
  60. pr0[i]:=r;
  61. end;
  62. writeln('Введите матрицу');
  63. {Ввод матрицы[1,1],[1,2]...}
  64. for i:=1 to n do
  65. for j:=1 to n do begin
  66. readln(f);
  67. Matr[i,j]:=f;end;
  68. {For i:=1 to n do Matr[i,i]:=2;}
  69. writeln('Исходная матрица');
  70. OutPutMtr(Matr,n);
  71. writeln('Правые части');
  72. for i:=1 to n do
  73. write(Pr0[i]:6:3);
  74. writeln;
  75. Gauss(Matr,Pr0,v0,n);
  76. writeln('Результат:');
  77. for i:=1 to n do
  78. write(v0[i]:6:3);
  79. writeln;
  80. FOR i:=1 TO N DO begin
  81. s:=0;
  82. for j:=1 to n do
  83. s:=s+matr[i,j]*v0[j];
  84. Pr1[i]:=s;
  85. end;
  86. writeln;
  87. writeln('Ошибки');
  88. for i:=1 to n do
  89. writeln(Pr0[i],' ',Pr1[i]);
  90. readln;
  91. end.

p/s кодинг не мой.

  • Serj, 11 декабря 2011
1 комментарий
Avatar
  1. Евгений Ильин
    Евгений Ильин
    14 июня 2012 17:34
    ол

© SERJ.WS 2011-2021