Лабораторная работа №3 / Лаба3_основа
.docЦель работы: исследование решений одного уравнения с помощью основного и модифицированного методов и системы из двух уравнений в пакете MatLab.
Решение одного уравнения (основной вариант)
Задание функции( f2.m )
function y = f2(x);
y = x - acos(x.^2);
Задание производной функции( df2.m)
function y = df2(x)
y = 1+ (2*x)/(1-x.^4).^(1/2);
Текст программы
a=0;b=1; % интервал, на котором ищется функция
t=a:(b-a)/200:b;
plot(t,f2(t));grid % график функции
x=0.8; % приближенное значение корня
format long e; % установка формата вывода с плавающей точкой
for k=1:2;
x(k+1)=x(k)-f2(x(k))/df2(x(k)); % x(k+1) - очередное приближение
z(k+1)=f2(x(k+1)); % z - значения функции
err(k+1)=abs(x(k+1)-x(k)); % err - оценка погрешности
end;
res1=[x; z; err]'; % матрица для хранения результатов
ccc1='Col 1: x;Col 2: f(x);Col 3: err'; % комментарий к столбцам
save result21 a b ccc1 res1; % сохранение результатов в файле result21
Результаты( res1 )
x(переменная) |
f(x) (значения функции) |
err (погрешность) |
0.8 |
0 |
0 |
0.82475 |
0.0020176 |
0.024753 |
0.82413 |
1.4286e-006 |
0.00062073 |
Решение одного уравнения (модифицированный вариант)
Задание функции( f2.m )
function y = f2(x);
y = x - acos(x.^2);
Задание производной функции( df2.m )
function y = df2(x)
y = 1+ (2*x)/(1-x.^4).^(1/2);
Текст программы
x=0.8; % приближенное значение корня
format long e; % приближенное значение корня
h=0.0001; % шаг
dfh=(f2(x+h)-f2(x))/h; % приближенное значение производной вблизи x(1)
for k=1:3;
x(k+1)=x(k)-f2(x(k))/dfh; % x(k+1) - очередное приближение
z(k+1)=f2(x(k+1)); % z - значения функции
err(k+1)=abs(x(k+1)-x(k)); % err - оценка погрешности
end;
res2=[x; z; err]'; % матрица для хранения результатов
ccc2='Col 1: x;Col 2: f(x);Col 3: err'; % комментарий к столбцам
save result22 h dfh ccc2 res2; % сохранение результатов в файле result22
Результаты( res2 )
x(переменная) |
f(x) (значения функции) |
err (погрешность) |
0.8 |
0 |
0 |
0.82475 |
0.0020094 |
0.024751 |
0.8241 |
-0.00010773 |
0.00065186 |
0.82413 |
5.6953e-006 |
3.4946e-005 |
Решение системы из двух уравнений
Задание двух функций двух переменных( ff.m, gg.m )
function z = ff(x,y);
z = tan(x.*y+0.4)-x.^2;
function z = gg(x,y);
z = 0.6*x.^2+2*y.^2-1;
Задание матрицы Якоби (частных производных, mj.m)
function otv=mj(x,y);
otv=zeros(2,2);
otv(1,1)= (1+(tan(x*y+0.4)).^2)*y-2*x;
otv(1,2)= (1+(tan(x*y+0.4)).^2)*x;
otv(2,1)= 1.2*x;
otv(2,2)= 4*y;
Вывод линий нулевого уровня и общего графика поверхностей
ax=-1; bx=1; ay=-1; by=1; % начальные значения для границ области
xi=ax:(bx-ax)/30:bx; % задаем узлы по оси X
yi=ay:(by-ay)/30:by; % задаем узлы по оси Y
[xx,yy]=meshgrid(xi,yi); % (нужно для построения графика)
contour(xi,yi,ff(xx,yy),[0,0]); % рисуем линию ff(x,y)=0
grid % наносим координатную сетку
hold on % запрещаем стирать предыдущий график
contour(xi,yi,gg(xx,yy),[0,0]); % рисуем линию gg(x,y)=0
hold off; pause % восстанавливаем режим стирания
% рисуем поверхности в пространстве
meshc(xx,yy,ff(xx,yy));
grid;
hold on
meshc(xx,yy,gg(xx,yy));
hold off;
Реализация метода Ньютона
x=0.3;y=-0.6; % приблизительные координаты точки пересечения двух линий уровня
for k=1:4;
xk=x(k);yk=y(k);
newpoint=[xk;yk]-inv(mj(xk,yk))*[ff(xk,yk);gg(xk,yk)]; % очередное приближение
x(k+1)=newpoint(1);
y(k+1)=newpoint(2);
err(k+1)=max(abs(x(k+1)-x(k)),abs(y(k+1)-y(k))); % погрешность
end;
res3=[x; y; err]'; % матрица для хранения результатов
save result23 res3; % сохранение результатов в файле result23
Результаты (для системы уравнений)
x(переменная) |
f(x) (значения функции) |
err (погрешность) |
0,3 |
-0.6 |
0 |
0.38789 |
-0.68098 |
0.087894 |
0.37991 |
-0.67583 |
0.0079842 |
0.37985 |
-0.67581 |
6.1252e-005 |
0.37985 |
-0.67581 |
3.1536e-009 |
Вывод
При выполнении работы были получены корни функции одной переменной с заданной точностью двумя различными методами - основным методом Ньютона и модифицированным.
Судя по погрешностям можно сделать следующий вывод: сходимость основного метода является сверхлинейной (квадратичной), в то время как модифицированный метод обеспечивается линейную сходимость (как геометрическая прогрессия).
Также был реализован метод Ньютона для решения системы нелинейных уравнений.
Скорость сходимости в данном случае - сверхлинейная.