Купить Matlab  |  Mathematica  |  Mathcad  |  Maple  |  Statistica  |  Другие пакеты Поиск по сайту
Internet-класс  |  Примеры  |  Методики  |  Форум  |  Download
https://hub.exponenta.ru/


 
Задачи по курсу "Численные методы"
выполнил: Хамдо Арас,
Московский энергетический институт,
2003

К содержанию

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

> restart;

> epsilon:=0.00001; Задаем погрешность вычисления.

epsilon := .1e-4

> with(linalg): Активизация пакета линейной алгебры.

Warning, the protected names norm and trace have been redefined and unprotected
 

> eqn1:=tan(x-y)=x*y; Задание системы уравнений и задание функций.

> eqn2:=x^2+2*y^2=1;

> f1:=(x,y)->sin(x-y)/cos(x-y)-x*y;

> f2:=(x,y)->x^2+2*y^2-1;

eqn1 := tan(x-y) = x*y

eqn2 := x^2+2*y^2 = 1

f1 := proc (x, y) options operator, arrow; sin(x-y)...

f2 := proc (x, y) options operator, arrow; x^2+2*y^...

Задается нулевое приблежение

> x0:= Pi/3;

x0 := 1/3*Pi

> y0:= 1;

y0 := 1

> X0:=matrix(2,1,[x0,y0]);

X0 := matrix([[1/3*Pi], [1]])

>

> X:=matrix(2,1,[x,y]);

X := matrix([[x], [y]])

> F:= matrix(2,1,[f1(x,y),f2(x,y)]);

F := matrix([[sin(x-y)/cos(x-y)-x*y], [x^2+2*y^2-1]...

Задаем функции, являющиеся элемнтами матрицы Якоби:

> J11:=(x,y)->1/(cos(x-y))^2-y;

> J12:=(x,y)->-1/(cos(x-y)^2)-x;

> J21:=(x,y)->2*x;

> J22:=(x,y)->4*y;

J11 := proc (x, y) options operator, arrow; 1/(cos(...

J12 := proc (x, y) options operator, arrow; -1/(cos...

J21 := proc (x, y) options operator, arrow; 2*x end...

J22 := proc (x, y) options operator, arrow; 4*y end...

> J0:=matrix(2,2,[J11(x0,y0),J12(x0,y0),J21(x0,y0),J22(x0,y0)]):evalf(%);

matrix([[.2230921e-2, -2.049428472], [2.094395103, ...

Достаточное условие сходимости:

> is(norm(J0)<>0);

true

> F0:= matrix(2,1,[f1(x0,y0),f2(x0,y0)]):evalf(%);

matrix([[-.9999649228], [2.096622711]])

> X1=evalm(X0-1/J0*F0): evalf(%);

X1 = matrix([[.9781433203], [.5120010334]])

> k:=0; r:= 1000*epsilon;

k := 0

r := .1000e-1

Цикл для выполнения метода:

> while r>epsilon do X0:= matrix(2,1,[x0,y0]);  J0:=evalf(matrix(2,2,[J11(x0,y0),J12(x0,y0),J21(x0,y0),J22(x0,y0)])); F0:= evalf(matrix(2,1,[f1(x0,y0),f2(x0,y0)])); X1:=evalf(evalm(X0-1/J0*F0)); r:= evalf(abs(norm(evalm(X1-X0)))); k:=k+1:print('_____________СЛЕДУЮЩАЯ_ИТЕРАЦИЯ______________'); x0:=X1[1,1]: y0:=X1[2,1]: end;

X0 := matrix([[1/3*Pi], [1]])

J0 := matrix([[.2230921e-2, -2.049428472], [2.09439...

F0 := matrix([[-.9999649228], [2.096622711]])

X1 := matrix([[.9781433201], [.5120010330]])

r := .4879989670

k := 1

`_____________СЛЕДУЮЩАЯ_ИТЕРАЦИЯ______________`

`_____________СЛЕДУЮЩАЯ_ИТЕРАЦИЯ______________`

`_____________СЛЕДУЮЩАЯ_ИТЕРАЦИЯ______________`

...

X0 := matrix([[.7775317039], [.4446596962]])

J0 := matrix([[.6748743748, -1.897065775], [1.55506...

F0 := matrix([[-.139e-7], [.41e-7]])

X1 := matrix([[.7775316911], [.4446596843]])

r := .128e-7

k := 5

`_____________СЛЕДУЮЩАЯ_ИТЕРАЦИЯ______________`

x0 := .7775316911

y0 := .4446596843

где r - погрешность вычисления на каждом шаге итерации (определяет остановку цикла)!

истинные корни:

> solve({eqn1,eqn2},{x,y});

Проверка:

> is(abs(.7775316909-x0)<epsilon);

true

> is(abs(.4446596842-y0)<epsilon);

true

 

Наверх

К содержанию

| На первую страницу | Поиск | Купить Matlab

Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter


Copyright © 1993-2024. Компания Softline. Все права защищены.

Дата последнего обновления информации на сайте: 04.03.17
Сайт начал работу 01.09.00