Решение систем линейных уравнений
Ниже приведен пример решения системы линейных уравнений с применением функций входящих в пакет 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!