Nota legata de istoricul metodei lui Newton

Polinomul a fost utilizat de Walis pentru a prezenta prima data metoda lui Newton Academiei Franceze. El are o radacina reala, intre si si o pereche de radacini complexe conjugate.

Rezolvare simbolica

syms x
z=solve(x.^3-2*x-5==0, x, 'MaxDegree',3)
z = 
double(z)
ans = 3×1 complex
2.094551481542327 + 0.000000000000000i
-1.047275740771163 + 1.135939889088928i
-1.047275740771163 - 1.135939889088928i
Reprezentare grafica
fplot(x.^3-2*x-5,[1,4]);
grid on
clear

Rezolvare numerica

Radacina reala
f = @(x) x^3-2*x-5;
fd = @(x) 3*x^2-2;
x0 = 3;
[z,ni] = Newtons(f,fd,x0,1e-6,0,20)
z =
2.094551481542347
ni =
5
Radacina complexa
x0=1i;
[z2,ni2] = Newtons(f,fd,x0,1e-6,0,20)
z2 =
-1.047275740771163 + 1.135939889088928i
ni2 =
8
x0=-1i;
[z3,ni3] = Newtons(f,fd,x0,1e-6,0,20)
z3 =
-1.047275740771163 - 1.135939889088928i
ni3 =
8
Codul pentru metoda lui Newton:
function [z,ni]=Newtons(f,fd,x0,ea,er,Nmax)
%NEWTONS - metoda lui Newton pentru ecuatii in R
%Intrare
%f - functia
%fd - derivata
%x0 - valoarea de pornire
%ea,er - eroarea absoluta, respectiv relativa
%Nmax - numar maxim de iteratii
%Iesire
%z - aproximatia solutiei
%ni - numar de iteratii
if nargin<6, Nmax=50; end
if nargin<5, er=0; end
if nargin<4, ea=1e-3; end
xv=x0;
for k=1:Nmax
xc=xv-f(xv)/fd(xv);
if abs(xc-xv)<ea+er*abs(xc) %succes
z=xc;
ni=k;
return
end
xv=xc; %pregatesc iteratia urmatoare
end
%esec
error('s-a depasit numarul maxim de iteratii')
end