Мегаобучалка Главная | О нас | Обратная связь


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



2015-12-04 4225 Обсуждений (0)
Программная реализация метода простой итерации для решения СЛАУ в пакете MATLAB 5.00 из 5.00 4 оценки




Входные параметры: 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


ВСТРОЕННЫЕ ФУНКЦИИ ПАКЕТОВ MATHCAD И MATLAB

ДЛЯ ПРИБЛИЖЕННОГО РЕШЕНИЯ СИСТЕМ ЛИНЕЙНЫХ

АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ

Пакет MATHCAD

Решение систем линейных уравнений – довольно распространенная задача. Для системы линейных уравнений, заданной в матричном виде AX=B, вектор решения можно получить из очевидного выражения X=A-1B, или, например, из решения системы уравнений с проверкой на невырожденность матрицы:X:=if(|A|,A-1B,0).

Следует обратить внимание на то, что пакет содержит и встроенную функцию решения линейных систем lsolve(A,B), где А– матрица коэффициентов, а В – вектор свободных членов. Пример использования предложенных методов показан на рис. 5.1.

Рис. 5.1. Примеры решения системы

Для решения систем уравнений, систем неравенств, смешанных систем служат решающие блоки. Структура решающего блока:

начало | Given

тело | несколько конструкций вида АВ1 оп АВ2

(оп – некоторая операция отношения, причём для написания знака равенства используется особый «жирный» знак равенства, который находится на панели инструментов; знак присваивания в теле решающего блока не используется)

конец | FIND (список) или MINERR (список).

Список – это перечень переменных, которые необходимо найти.

С помощью FIND ищут точное решение; если оно отсутствует, то возникает ошибка. Посредством MINERR всегда будет найдено решение, минимизирующее невязку ограничений. Переменная ERR– величина ошибки.

Перед решающим блоком необходимо задать начальные условия для всех искомых переменных, можно в векторном виде. Соответственно, в теле решающего блока можно использовать запись уравнений в матричном виде. Максимальное количество уравнений в системе доведено до двухсот. Часто приходится решать системы уравнений при наличии определенных ограничений. Таким образом, в теле решающего блока могут быть одновременно как равенства, так и неравенства. Пример такой системы приведен ниже:

x:=1 y:=1

Given

x + y = 5

x + y = 2

x£1

y>2

find (x,y) =

Для последующего использования результатов необходимо так организовать конец:

В теле решающего блока нельзя строить графики, выполнять вычисления.

Итерации производятся до тех пор, пока ôERRô£ TOL. Если встречается седловая точка и не известно, куда направлен градиент, то выдается сообщение not converging (не решаемо). Количество итераций ограничено. Возможно сообщение об ошибке вида did not find solution (не найдено решение).

При возникновении таких ошибок можно:

– изменить точность – TOL;

– заменить начальные условия;

– заменить find на minerr и получить приближенное решение.

Однако при использовании функций findи minerrнужно проявлять осторожность и обязательно предусматривать проверку решений, т.к. нередки случаи, когда решение может оказаться ошибочным.

Для получения другого решения можно поменять начальные условия, для уточнения – уменьшить TOL.

Пакет MATLAB

Рассмотрим две системы линейных уравнений: АХ=В и ХА=В. В MATLAB такие системы решаются без вычисления обратной матрицы. Два типа матричного деления / и \ используются для этих двух ситуаций, когда неизвестная матрица стоит слева или справа от матрицы коэффициентов:

Х=А\В соответствует решению АХ=В;

Х=В/А соответствует решению ХА = В.

При этом должны выполняться условия соответствия размерностей матриц X, А, В. Напомним, что для варианта Х=А\В матрица X должна иметь то же количество столбцов, что и матрица В, и то же число строк, сколько столбцов у матрицы А. Для Х=В/А эти условия обратны.

Алгебраические свойства оператора / можно вывести из соотношения(В/А)' = (А'\В’).

Матрица не обязательно должна быть квадратной, она может быть размером mхn. При этом существуют следующие варианты:

· m = n – квадратная система, возможно нахождение точного решения;

· m > n – переопределенная система, решение ищется с помощью метода наименьших квадратов;

· m < n – недоопределенная система, ищется базовое решение.
Пример решения и проверки результатов для квадратной системы:

<<А = раscal(З), В = magic(3)

А =

1 1 1

1 2 3

1 3 6

В =

8 1 6

3 5 7

4 9 2

<< Х=А\В

X =

19 -3 -1

-17 4 13

6 0 -6

<< % проверка эквивалентности

<< А*Х==В

 

ans =

1 1 1

1 1 1

1 1 1

Важно помнить, что система имеет единственное решение, если detА не равен нулю, иначе решение либо не существует, либо не единственно. Отметим также, что для нахождения обратной матрицы используется функция inv(А).

Для решения системы АХ=В можно записать Х=inv(А)*B, а для решения системы Х=В/АХ=В*inv(А), однако операторы \,/ работают быстрее.

Для прямоугольных матриц детерминант и обратная матрица не определены, но можно найти псевдообратную матрицу, то есть матрицу, для которой выполняется хотя бы одно из соотношений: АХ=I или ХА = I. Для этого имеется функция рinv(А).

Если А – матрица размером mхnи m>n и ранг матрицы равен n, то каждое из трех следующих выражений вычисляет X по методу наименьших квадратов:

Х=А\В

Х=рinv(А)*В

Х=inv(А'*А)*А'*В

В противном случае решение Xпо методу наименьших квадратов не единственно и существует множество векторов, минимизирующих norm(A*X-B).Решение, вычисленное с помощью Х=А\В,– базовое решение, имеющее не больше r ненулевых компонент: r=rank(A). Решение, вычисленное с помощью Х=рinv(А)*В,– это решение с минимальной нормой X.

 



2015-12-04 4225 Обсуждений (0)
Программная реализация метода простой итерации для решения СЛАУ в пакете MATLAB 5.00 из 5.00 4 оценки









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

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...
Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы...
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (4225)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)