![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Входные параметры: U – расширенная матрица коэффициентов, eps – требуемая точность решения.
Function res = Jakobi(U,eps);
%проверка 1
[n, m] = size(U);
if (n ~= m-1)
error ('Неверно задана система');
end;
%приведение системы к диагонально доминирующему виду
for j=1:m
for i=1:n
U1(i,j)=-U(i,j)/U(i,i);
end
end
U=U1;
%матрица А
A=U(1:n,1:m-1);
for i=1:n
A(i,i)=0;
end
%матрица B
B=-U(1:n,m);
%====================================================
%проверка 2
if rank(A) ~= rank(U)
error('Система не совместна');
end;
%вывод матриц
A
B
%сумма по строкам
norm1=zeros(n,1);
k=1;
for i=1:n
for j=1:m-1
norm1(k)=norm1(k)+abs(A(i,j));
end
if k<4
k=k+1;
end;
end
%матрица сумм по строкам
norm1;
%первая норма по строкам
max_norm1=max(norm1);
%сумма по столбцам
k=1;
norm2=zeros(n,1);
for j=1:m-1
for i=1:n
norm2(k)=norm2(k)+abs(A(i,j));
end
if k<4
k=k+1;
end
end
%матрица сумм по строкам
norm2;
%вторая норма по строкам
max_norm2=max(norm2);
%нахождение третьей нормы
%нахождение суммы элементов матрицы А
sum=0;
for i=1:n
for j=1:m-1
sum=sum+A(i,j)*A(i,j);
end
end
% третья норма
max_norm3=sqrt(sum);
%вывод значений норм матрицы А
max_norm1
max_norm2
max_norm3
%===================================================
%проверка условия сходимости метода итераций
if ((max_norm1>1) && (max_norm2>1) && (max_norm3>1))
error('Введенная матрица не является диагонально преобладающей')
end;
%====================================================
%итерационный процесс
k=0;
X0=zeros(n,1);
X0=B;
X1=zeros(n,1);
for i=[1:n]
%нахождение суммы для Х1(i)
sum=0;
for j=[1:m-1]
sum = sum + (A(i,j) * X0(j));
end
X1(i)=sum + B(i);
end
while (abs(X0(i) - X1(i)) > eps)
X0=X1;
for i=[1:n]
%нахождение суммы для Х1(i)
sum=0;
for j=[1:m-1]
sum = sum + (A(i,j) * X0(j));
end
X1(i)=sum + B(i);
end
k=k+1;
end
%====================================================
%вывод вектора решений
X1
%вывод числа итераций для выполненияусловия точности
k
%=====================================================
return
Дата публикования: 2015-04-07; Прочитано: 2873 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!