| Оператор МАТЛАБа [x,y]=fzero(@f,[a,b],e) Пусть функция f=inline('x^3-4.790*x^2-3.246*x+12.597'); тогда [x,y]=fzero(f,[a,b],e) |
Программа. Нелинейное уравнение. Метод Ньютона (касательных)
function DATA
global x0 eps n_plot_dots;
x0=3;
eps=0.01;
n_plot_dots=100;
end
function [ fx ] = f(x)
fx=x.^2-5;
end
function [ fx ] = fp(x)
fx=x.*2;
end
function [ x,fx ] = fun_Nelin_Newton(x0,eps)
x=x0;
for i=1:100
h=f(x)/fp(x);
x=x-h;
if abs(h)<=eps
i
break;
end %if
end %for i
fx=f(x);
end % function
function GLAV_Nelin_Newton
global x0 eps n_plot_dots;
DATA;
[ x,fx ] = fun_Nelin_Newton(x0,eps);
REPORT;
end
function REPORT
global x0 eps x fx n_plot_dots;
disp('Nelin Newton');
disp(' ');
disp(['x0 = ' num2str(x0,'%10.5f') ]);
disp(['eps = ' num2str(eps,'%10.5f') ]);
disp('Results');
disp(['x = ' num2str(x,'%10.5f') ]);
disp(['fx = ' num2str(fx,'%10.5f') ]);
a=x-2;
b=x+2;
h=(b-a)/(n_plot_dots-1);
for i=1:n_plot_dots
if i==1
xmas(i)=a;
else
xmas(i)=xmas(i-1)+h;
end %if
fmas(i)=f(xmas(i));
end
disp(' i x fx ');
disp(' ______________________________')
i=0;
for i=1:length(xmas)
xx=xmas(i);
ffx=fmas(i);
disp(sprintf('%10.3f\t%10.3f\t %10.3f',i,xx,ffx));
end %for
plot(xmas,fmas,'r.');
grid on;
xlabel('x');
ylabel('y');
title('Nelin Newton');
end