y=x.*exp(x)-2.*exp(x);
figure(1);
plot (x,y,'b');
hold on;
axis ([-10 10 -10 10]);
xlabel ('x');
ylabel ('y');
grid on;
title ('Итераций');
%----Uravnenie----%
eps = 0.001; %tochnost
x0 = -4; % nachalnoe priblijenie
iter = 0; %schetchik
x = x0;
razn = 100; %nachalnoe znachenie
while abs(razn)>eps
xn = x+(x*exp(x)-2*exp(x))/(-20);
razn=xn-x;
x=xn;
iter=iter+1;
end
disp(x);
disp(iter);
disp(razn);
Листинг 1 - Код программы решения нелинейного уравнения методом простых итераций. Лист 1
в) в пояснительной записке привести график функции f(x) с указанием выбранных для уточнения корней, результаты уточнения корней программой Matlab, значения корней, требуемое число итераций, погрешность решения и графические иллюстрации процесса сходимости к корню.
График функции нелинейного уравнения (12) представлен на рисунке 4.
Рисунок 4 - График нелинейной функции y = x ex - 2 ex
Из рисунка 4 видно, что график функции монотонен [1:3.5], точек разрыва нет.
Точный результат работы программы представлен на рисунке 5. В данном случае итерационный процесс сходится; корень уравнения x = 1.9988 найден с заданной точностью е=0.001 за 248 итерацию, погрешность решения составляет ?6.9317e-004.
Рисунок 5 - Результат работы программы
1.4 Решение нелинейного уравнения методом Ньютона
Нелинейное уравнение (вариант 9):
a) выполнить приблизительную оценку корней предложенного уравнения с помощью системы Matlab или с графической программой Advanced Grapher;
б) с помощью программы Matlab уточнить один из корней первого уравнения вида f (x)=0 с точностью е = 10-3, выбрав подходящий отрезок для построения графической иллюстрации работы метода Ньютона;
Код программы решения нелинейного уравнения (13) методом Ньютона в Matlab представленный ниже указывает подходящий отрезок для определения корня графическим способом, а также выводит расчеты для нахождения точного результата с заданной точностью.
x=-10:0.1:-0.1;
y=3*sin(x) + 2.5;
figure(1);
plot(x,y,'b');
axis([-5 0 -2 2]);
xlabel('x');
ylabel('y');
grid on;
title ('Ньютон');
% ---- Uravnenie ---- %
eps=0.001;
kmax=50;
x=-2;
[F F1]=fun1(x);
[x1,D]=Newton(x,F,F1);
k=0;
while (abs(D)>eps)&&(k<kmax)
x=x1;
[F F1]=fun1(x);
[x1,D]=Newton(x,F,F1);
k=k+1;
disp(x1);
end
disp('Root:');
disp(x1);
disp('Number of iterations:');
disp(k);
Листинг 2 - Код программы решения нелинейного уравнения методом Ньютона. Лист 1
function [ x1, D ] = Newton(x, F, F1)
D=-F/F1;
x1=x+D;
end
function [F F1] = fun1(x)
F=3*sin(x) + 2.5; %расчет ф-ции
if nargout>1
F1= 3*cos(x); %1 производная
end
Листинг 2 - Код программы решения нелинейного уравнения методом Ньютона. Лист 2
в) в пояснительной записке привести график функции f(x) с указанием выбранных для уточнения корней, результаты уточнения корней программой Matlab, значения корней, требуемое число итераций, погрешность решения и графические иллюстрации процесса сходимости к корню.
Более подходящая область рассмотрения графика для приблизительной оценки корня представлена на рисунке 9.
Рисунок 9 - График нелинейного уравнения y =
Точный результат работы программы представлен на рисунке 10. Корень уравнения x = -2.1565 найден с заданной точностью е=0.001 за 2 итерации.
Рисунок 10 - Результат работы программы
Были рассмотрены два метода решения нелинейных уравнений: Ньютона и простых итераций.
Метод простой итерации является одним из простейших численных методов решения уравнений. Метод основан на принципе сжимающего отображения, который применяется к численным методам.
Метод Ньютона - это итерационный численный метод нахождения корня заданной функции. Метод обладает квадратичной сходимостью, может быть использован для решения задач оптимизации, в которых требуется определить нуль первой производной либо градиента в случае многомерного пространства. Поиск решения осуществляется путём построения последовательных приближений и основан на принципах простой итерации.