Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Численные Методы (часть 1).doc
Скачиваний:
13
Добавлен:
14.11.2019
Размер:
654.85 Кб
Скачать

2.5. Решение систем нелинейных уравнений.

Имеем в векторной форме систему нелинейных уравнений f(x) = 0.

,

Число уравнений должно соответствовать числу переменных.

Разложим f(x) в ряд Тейлора в точке :

Члены выше первого порядка не учитываем. А поскольку в точке, соответствующей решению , запишем

Матрица производных называется Якобианом системы, - отклонение от искомого решения, - значение функции в искомой точке:

Если производные нельзя получить аналитически, то их вычисляют приближенно: для каждой переменной k=1,...,n.

Получили систему линейных уравнений:

, где J(x)- Якобиан.

Ее решение – это вектор .

Следующая итерация определяется так:

для каждой переменной. Номер итерации i. Окончание итераций происходит, в простейшем случае, по заданным

точностям ε1 и ε2 определения векторов или .

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

Не всегда удается довести задачу до получения верных результатов. Контроль правильности полученного решения также требует больших усилий и опыта.

Задание для самостоятельной работы:

Решить систему нелинейных алгебраических уравнений методом Ньютона.

а) б)

в) Построить графики и сравнить полученные решения.

г) Составить программу расчета Якобиана для аналитически не дифференцируемой функции.

Программа метода Ньютона.

function [P,iter,err]=newton(F3,JF,P,delta,epsilon,max1)

%Вход

%F3 система уравнений

%JF матрица Якоби

%P начальная точка и приближенное решение

%delta допустимая ошибка решения

%epsilon невязки в уравнениях

%max1 заданное число итераций

%Выход

%iter полученное число итераций

%err текущая ошибка

%Обращение[P,iter,err]=newton('F3','JF',[2,0.25],0.0001,0.00001,1000)

Y=feval(F3,P);

for k=1:max1

J=feval(JF,P);

Q=P-(J\Y')';

Z=feval(F3,Q);

err=norm(Q-P);

relerr=err/(norm(Q)+eps);

P=Q;

Y=Z;

iter=k;

if (err<delta)|(relerr<delta)|(abs(Y)<epsilon)

break

endтемы.

end

Программа расчета Якобиана.

function W=JF(X)

x=X(1); y=X(2);

W(1,1)=2*x-2;

W(2,1)=2*x;

W(1,2)=-1;

W(2,2)=8*y;

Программа расчета нелинейной системы.

function Z=F(X)

x=X(1); y=X(2);

Z(1)=x.^2-2*x-y+0.5;

Z(2)=x.^2+4*y.^2-4;