Помощь - Поиск - Пользователи - Календарь
Полная версия: Задачка
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Nata
Плиз, помогите с задачкой!Оч срочно!
"Найти решение системы линейных уравнений x=Ax+b последовательным нахождением членов ряда:
b+Ab+(A^2)b+(A^3)b+...,
где матрица А: 0,4 0,12 -0,51
0,34 -0,08 0,17
0,16 0,74 0,15

матрица В: -0,64
1,42
-0,42
Sto
Система решается методом Гаусса.
Uses
Crt;
Var
i, j, k, nom : Integer;
max, t, u : Real;
a : Array[1..3,1..3] Of Real;
b : Array[1..3] Of Real;
r : Array[1..3] Of Real;
Begin
ClrScr;
WriteLn('Metod Gayssa');
For i := 1 To 3 Do
Begin
WriteLn('Vvedite koef pri neizvesnux dlja ',i,' yravnenija');
WriteLn('Vvedite koef pri x1'); ReadLn(a[i,1]);
WriteLn('Vvedite koef pri x2'); ReadLn(a[i,2]);
WriteLn('Vvedite koef pri x3'); ReadLn(a[i,3]);
WriteLn('Vvedite svobodnuj chlen yravnenija'); ReadLn(b[i]);
ClrScr;
End;
WriteLn('Sistema'); ReadLn(a[i,1]);
WriteLn;
For i := 1 To 3 Do
Begin
For j := 1 To 3 Do
Begin
If j = 1 Then
Write(a[i,j]:1:0,'*x',j);
If (j = 2) Or (j = 3) Then
Write('+',a[i,j]:1:0,'*x',j);
If a[i,j] >= 0 Then
Write('+',a[i,j]:1:0,'*x',j)
Else Write(a[i,j]:1:0,'*x',j);
End;
WriteLn('=',b[i]:1:0);
End;
WriteLn;
For k := 1 To 3 Do
Begin
max := abs(a[k,k]);
nom := k;
For i := k+1 To 3 Do
Begin
If abs(a[i,k]) > max Then
Begin
max := a[i,k];
nom := i;
End;
End;
If nom <> k Then
Begin
t := b[k]; b[k] := b[nom]; b[nom] := t;
For j := 1 To 3 Do
Begin
t := a[k,j]; a[k,j] := a[nom,j]; a[nom,j] := t;
End;
End;
t := a[k,k]; b[k] := b[k]/t;
For j := k+1 To 3 Do a[k,j] := a[k,j]/t;
For i := k+1 To 3 Do
Begin
t := a[i,k];
For j := k+1 To 3 Do a[i,j] := a[i,j] - t*a[k,j];
b[i] := b[i] - t*b[k];
End;
End;
For i := 3 DownTo 1 Do
Begin
u := b[i];
For j := 3 DownTo 2 Do
u := u - a[i,j]*r[j];
r[i] := u;
End;
For i := 1 To 3 Do WriteLn('x',i,' = ',r[i]:5:2);
ReadKey;
End.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.