Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Программная реализация метода простой итерации для решения СЛАУ в пакете MATLAB



Входные параметры: 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; Прочитано: 2833 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...