- •5 Семестр Калуга, 2008
- •Содержание
- •1. Домашнее задание №1: «Методы решения систем линейных алгебраических уравнений»
- •1.1. Задание
- •1.2. Пример выполнения задания Постановка задачи
- •Метод Гаусса с выбором главного элемента.
- •Результат работы алгоритма:
- •Результат работы алгоритма:
- •3. Метод вращений решения.
- •Результат работы алгоритма:
- •4. Метод простых итераций.
- •Пример выполнения программы:
- •5. Метод Зейделя.
- •Результат выполнения программы:
- •Выводы:
- •Требования к оформлению
- •1.4. Список литературы
- •Домашнее задание №2: «Методы решения нелинейных алгебраических уравнений»
- •2.1. Задание
- •2.2. Пример выполнения задания
- •1. Метод биекций.
- •Результат работы программы:
- •2. Метод простых итераций.
- •3. Метод Ньютона.
- •Требования к оформлению
- •2.4. Список литературы
1.2. Пример выполнения задания Постановка задачи
Решить систему линейных алгебраических уравнений вида
Дана система линейных алгебраических уравнений:
,
где
Метод Гаусса с выбором главного элемента.
Суть метода Гаусса заключается в последовательном исключении элементов. Для этого поэтапно приводим систему (1) к треугольному виду, исключая последовательно из второго, третьего, … , n-го уравнений, затем из третьего, четвёртого, … , n-го уравнений преобразованной системы и т.д.
Практическая часть (листинг программы MatLab):
function gauss
clc
b=[-1.83; 0.65; -2.23; 1.13];
A=[-0.68 -0.18 0.02 0.21;
0.16 -0.88 -0.14 0.27;
0.37 0.27 -1.02 -0.24;
0.12 0.21 -0.18 -0.75 ];
max=0;
x=[0;0;0;0];
x1=[0;0;0;0];
ind=[1;2;3;4];
t=0;
a1=0;
b1=0;
n=4;
ind1=0;
k=1;
A,b
for k=1:n-1
max=abs(A(k,k));
for n1=k:4
for s=k:4
if(abs(A(n1,s))>max),
max=abs(A(n1,s));
mi=n1;
mj=s;
end;
end;
end;
b1=b(mi);
b(mi)=b(k);
b(k)=b1;
for n2=k:4
a1=A(mi,n2);
A(mi,n2)=A(k,n2);
A(k,n2)=a1;
end;
for n3=1:4
a1=A(n3,mj);
A(n3,mj)=A(n3,k);
A(n3,k)=a1;
end;
ind1=ind(mj);
ind(mj)=ind(k);
ind(k)=ind1;
for i=(k+1):4
t=A(i,k)./A(k,k);
b(i)=b(i)-b(k).*t;
for j=k:4
A(i,j)=A(i,j)-A(k,j).*t;
end;
end ;
end;
x(4,1)=b(4,1)/A(4,4);
x(3,1)=(b(3,1)-A(3,4)*x(4,1))/A(3,3);
x(2,1)=(b(2,1)-A(2,3)*x(3,1)-A(2,4)*x(4,1))/A(2,2);
x(1,1)=(b(1,1)-A(1,2)*x(2,1)-A(1,3)*x(3,1)-A(1,4)*x(4,1))/A(1,1);
x1(1,1)=x(ind(1),1);
x1(2,1)=x(ind(2),1);
x1(3,1)=x(ind(3),1);
x1(4,1)=x(ind(4),1);
x1
x
Результат работы алгоритма:
>> gauss
A =
-0.6800 -0.1800 0.0200 0.2100
0.1600 -0.8800 -0.1400 0.2700
0.3700 0.2700 -1.0200 -0.2400
0.1200 0.2100 -0.1800 -0.7500
b =
-1.8300
0.6500
-2.2300
1.1300
x1 =
-1.5106
3.2266
2.4731
-2.3083
x =
2.4731
-1.5106
3.2266
-2.3083
LU-разложение.
Теорема: если главные миноры квадратной матрицы А отличны от нуля, то существуют такие нижняя L и верхняя U треугольные матрицы, что A=LU. Если элементы диагонали одной из матриц L или U фиксированы (ненулевые), то такое разложение единственно.
Если матрица А исходной системы разложена в произведение треугольных матриц L и U, то вместо Ax=b можно записать эквивалентное уравнение LUx=b. Введя вектор вспомогательных переменных , последнее можно переписать в виде системы
Таким образом, решение данной системы с квадратной матрицей коэффициентов свелось к последовательному решению двух систем с треугольными матрицами коэффициентов.
Практическая часть (листинг программы MatLab)
function LULU;
A=[-0.68 -0.18 0.02 0.21; 0.16 -0.88 -0.14 0.27; 0.37 0.27 -1.02 -0.24; 0.12 0.21 -0.18 -0.75];
A
B=[-1.83; 0.65; -2.23; 1.13];
B
X=zeros(4,1);
Y=zeros(4,1);
U=zeros(4,4);
L=zeros(4,4);
for i=1:4,
for j=i:4,
if i==j,
L(i,j)=1;
end
end
end
U(1,1)=A(1,1);
U(1,2)=A(1,2);
U(1,3)=A(1,3);
U(1,4)=A(1,4);
L(2,1)=A(2,1)/U(1,1);
L(3,1)=A(3,1)/U(1,1);
L(4,1)=A(4,1)/U(1,1);
U(2,2)=A(2,2)-L(2,1)*U(1,2);
U(2,3)=A(2,3)-L(2,1)*U(1,3);
U(2,4)=A(2,4)-L(2,1)*U(1,4);
L(3,2)=(A(3,2)-L(3,1)*U(1,2))/U(2,2);
U(3,3)=A(3,3)-L(3,1)*U(1,3)-L(3,2)*U(2,3);
U(3,4)=A(3,4)-L(3,1)*U(1,4)-L(3,2)*U(2,4);
L(4,2)=(A(4,2)-L(4,1)*U(1,2))/U(2,2);
L(4,3)=(A(4,3)-L(4,1)*U(1,3)-L(4,2)*U(2,3))/U(3,3);
U(4,4)=A(4,4)-L(4,1)*U(1,4)-L(4,2)*U(2,4)-L(4,3)*U(3,4);
L
U
Y=L\B;X=U\Y;
X1=X(1);X2=X(2);X3=X(3);X4=X(4);
X