Решение систем линейных уравнений



Ниже приведен пример решения системы линейных уравнений с применением функций входящих в пакет linalg

> restart;

> with(linalg):

> C:=matrix(4,4,[[0.02,0.016,0.3,0.15],[-0.06,0.067,0.027,0.1], [0.45,0.133,0.08,0.139], [0.011,0.25,-0.2,0.1]]):

> A:=evalm(C);

> opr:=det(A);

> A:=evalm(C):

> B:=matrix(4,1,[0.662,0.029,2.312,0.379]);

По формулам Крамера

> A 1:= copyinto ( B , A ,1,1);

> A:=evalm(C): A2:=copyinto(B,A,1,2);

> A:=evalm(C): A3:=copyinto(B,A,1,3);

> A:=evalm(C): A4:=copyinto(B,A,1,4);

> x1:=det(A1)/opr;

> x2:=det(A2)/opr;

> x3:=det(A3)/opr;

> x4:=det(A4)/opr;

> X:=vector(4,[x1,x2,x3,x4]);

Блочным методом

> with(linalg):

> A:=evalm(C):

> X:=multiply(inverse(A),B);

Методом простых итераций

Интерактивный ввод исходных данных

> restart:

> with(linalg):

> A:=array(1..3,1..3):

> entermatrix(A):

Последовательный ввод в окне элементов матрицы А

> A:=(%);

> B:=array(1..3,1..1):

> entermatrix(B):

Последовательный ввод в окне элементов вектора В

> B(%);

> U:=concat(B,-A);

> P0_1:=mulrow(U,1,1/A[1,1]):

> P0_2:=mulrow(P0_1,2,1/A[2,2]):

> P0:=mulrow(P0_2,3,1/A[3,3]):

> P0[1,2]:=0*P0[1,2]:P0[2,3]:=0*P0[2,3]:

P0[3,4]:=0*P0[3,4]:print(P0);

> print(P0);

Нулевое приближение

> X0:=col(P0,1);

> evalf(%);

Первое приближение

> betta:=col(P0,1):

> alpha:=submatrix(P0,1..3,2..4):

> X1:=matadd(betta,multiply(alpha,X0)):

> evalf(%);

Второе приближение

> X2:=matadd(betta,multiply(alpha,X1)):

> evalf(%);

Третье приближение

> X3:=matadd(betta,multiply(alpha,X2)):

> evalf(%);

Проводим проверку

> matadd(multiply(A,X3),-1*B):

> evalf(%);

> X:=linsolve(A,B):

> evalf(%);


Дата добавления: 2020-11-27; просмотров: 46; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!