Купить 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:=cos(y+0.5)-x=2; eqn2:= sin(x)-2*y=1;

eqn1 := cos(y+.5)-x = 2

eqn2 := sin(x)-2*y = 1

> eqn11:=x=cos(y+0.5)-2; eqn22:= y= (sin(x)-1)/2;

eqn11 := x = cos(y+.5)-2

eqn22 := y = 1/2*sin(x)-1/2

Рисуем график для определения первого приближения.

> plot({cos(y+0.5)-2,arcsin(2*y+1)},y=-1..-0.9);

[Maple Plot]

Задаем нулевое приближение.

> x0:=-1.; y0:=-0.9;

x0 := -1.

y0 := -.9

Задаем матрицы и функции.

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

> x:=y-> cos(y+.5)-2; y:=x->1/2*sin(x)-1/2;

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

x := proc (y) options operator, arrow; cos(y+.5)-2 ...

y := proc (x) options operator, arrow; 1/2*sin(x)-1...

Задаем матрицу F (x) :

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

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

Задаем матрицу Якоби:

> J:=matrix(2,2,[diff(Phi[1,1],x),diff(Phi[1,1],y),diff(Phi[2,1],x),diff(Phi[2,1],y)]);

J := matrix([[0, -sin(y+.5)], [1/2*cos(x), 0]])

Задаем ф-ию для проверки условия сходимости метода:

> JJ:= (u,t)->sqrt((-sin(t+.5))^2+(1/2*cos(u))^2);

JJ := proc (u, t) options operator, arrow; sqrt(sin...

Условие сходимости метода:

> JJ(x0,y0)<1;

.4739496712 < 1

Матрица X0 :

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

X0 := matrix([[-1.], [-.9]])

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

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

Задаем любое p> e :

> p:=10000*epsilon;k:=0;

p := .10000

k := 0

Задаем цикл для вычисления корней с заданной точностью:

> while p>epsilon do k:=k+1; X0:=matrix(2,1,[x0,y0]); X1:= matrix(2,1,[x(y0),y(x0)]); p:=abs(norm(evalm(X1-X0)));print(______________________СЛЕДУЮЩАЯ_ИТЕРАЦИЯ_____________________); x0:=X1[1,1]; y0:=X1[2,1];end;

>

k := 1

X0 := matrix([[-1.], [-.9]])

X1 := matrix([[-1.078939006], [-.9207354924]])

p := .78939006e-1

`______________________СЛЕДУЮЩАЯ_ИТЕРАЦИЯ__________...

x0 := -1.078939006

y0 := -.9207354924

...

k := 9

X0 := matrix([[-1.097384439], [-.9450071293]])

X1 := matrix([[-1.097392404], [-.9450089523]])

p := .7965e-5

`______________________СЛЕДУЮЩАЯ_ИТЕРАЦИЯ__________...

x0 := -1.097392404

y0 := -.9450089523

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

> solve({eqn1,eqn2},{x,y}); Находим корни системы средствами Maple

{y = -.9450111638, x = -1.097394140}

Проверяем

> is(abs(-1.097394140-x0)<epsilon);

true

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

true

Заданная точность достигнута на 9-ой итерации.

 

Наверх

К содержанию

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

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


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

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