Материалы сайта
Это интересно
Лабораторные работы по вычислительной математике
ЛАБОРАТОРНАЯ РАБОТА №7 «Методы решения систем линейных уравнений ». Студента группы ПВ-22 Малютина Максима. Задание. Составить программу, отладить ее на тестовом примере, рассмотренном на лекции. Система : При решении примера на лекции: x1 = 0.526; x2 =0.628; x3 = 0.64; x4 = 1.2. Векторы a, b, c, d. a = {0; 2; 2; 3} b = {5; 4.6; 3.6; 4.4} c = {-1; -1; -0.8; 0} d = {2; 3.3; 2.6; 7.2} Прямой ход прогонки заключается в нахождении прогоночных коэффициентов: Обратный ход метода прогонки заключается в нахождении неизвестных xn, xn-1, ... x1. Он начинается с равенства: xn=bn+1; const max=10; type matrix=array[1..max] of real; matrix_2=array[0..max] of real; procedure input_matr(var a:matrix;n:byte;c:char); var i:byte; begin for i:=1 to n do begin writeln('Введите ',i ,'-ый элемент массива ',c); readln(a[i]) end end; procedure process(a,b,c,d:matrix;var x:matrix;n:byte); var alfa,betta:matrix_2; gamma,fi:matrix; i:byte; begin betta[0]:=0; alfa[0]:=0; for i:=1 to n do begin gamma[i]:=b[i]+a[i]*alfa[i-1]; fi[i]:=d[i]-a[i]*betta[i-1]; alfa[i]:=-c[i]/gamma[i]; betta[i]:=fi[i]/gamma[i] end; x[n]:=betta[n]; for i:=n-1 downto 1 do x[i]:=alfa[i]*x[i+1]+betta[i] end; procedure out_matr_x(a:matrix;n:byte); var i:byte; begin for i:=1 to n do writeln(i ,' корень уравнения равен ',a[i]:5:3) end; var i:byte; a,b,c,d,x,gamma,fi:matrix; alfa,betta:matrix_2; n:byte; begin writeln('Введите размерность системы '); readln(n); if (n>=2) and (n<=10) then begin input_matr(a,n,'a'); input_matr(b,n,'b'); input_matr(c,n,'c'); input_matr(d,n,'d'); process(a,b,c,d,x,n); out_matr_x(x,n) end else writeln('1< Размерность <=10 !!! ') end. Результат работы программы: 1 корень уравнения равен 0.526 2 корень уравнения равен 0.628 3 корень уравнения равен 0.640 4 корень уравнения равен 1.200 ----------------------- [pic] [pic] [pic] [pic]