A Maple egy fejlett matematikai problémamegoldó és programozói szoftver.
-
xDJCx #481
Newton-iterációra egy megoldás (Maple 13).
Bemenetek:
Az f függvény, ezt Maple függvény-formájában kell megadni azaz pl.
f:=x->cos(x);
x0 kiinduló érték (kezdeti becslés) x-re (honnan kezdje a gyökkeresést),
n: iterációk száma
nezet: a függvény ábrázolás tartománya: [xmin..xmax, ymin..ymax] formában
Newton:= proc(f,x0::realcons,n::posint,nezet::list:=[-5..5,-5..5])
description "Newton-iteráció";
local x,xregi,m,abrak;
uses plots,plottools;
x := x0:xregi:=x0;abrak:=[];
for m from 1 to n do
x := evalf(xregi-f(xregi)/D(f)(xregi));
abrak:=[abrak[],point([x, 0], color = green, symbol = circle, symbolsize = 12),line([xregi,0],[xregi,f(xregi)], color = blue, linestyle = dash),line([xregi,f(xregi)],[x,0], color = blue, linestyle = solid)];
xregi:=x;
end do:
x:='x';
display(plot(f(x),x=nezet[1],color=red,numpoints=1000),point([x0, 0], color = black, symbol = circle, symbolsize = 12),abrak,view=nezet,gridlines=true,title=typeset("Newton-módszer\n f(x) = ",f(x),"\n",x[0]=x0," , n =" ,n,"\n x =",xregi));
end proc;
# pl.:
f:= x-> cos(x):
Newton(f,0.5,3,[0..3,-1.5..1.5]);
# Összevethető a beépített algoritmussal:
# ábra:
Student[Calculus1][NewtonsMethod]( cos(x), x = 0.5, output = plot, iterations = 3 );
# érték
Student[Calculus1][NewtonsMethod]( cos(x), x = 0.5, output = value, iterations = 3 );