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 );