> restart: # Hörner > Horner:=proc(P,x) > local k,H; > H:=0; > for k from degree(P) by -1 to 0 do > H:=H*x+coeff(P,x,k); > od: > H; > end: > Q:=3*x^5-2*x^4+7*x^3+2*x^2+5*x-3: > readlib(cost):cost(Q); 5*additions+15*multiplications > cost(Horner(Q,x)); 5*additions+5*multiplications > > # Développements limités # > dl:=proc(f,x,n) > convert(taylor(f(x),x=0,n),polynom); > end: > dl(tan,x,10); x+1/3*x^3+2/15*x^5+17/315*x^7+62/2835*x^9 > graph:=proc(f,xmax,ymax,p) > local s,i: > s:=seq(plot(dl(f,x,i),x=-xmax..xmax),i=1..p),plot(f(x),x=-xmax..xmax,c > olor=blue): > plots[display](s,insequence=true,view=[-xmax..xmax,-ymax..ymax]); > end: > graph(cos,15,1,50); > restart: # Lagrange > > Lagrange:=proc(X,Y,t) > local k,L,P; > P:=0: > for k to nops(X) do > L:=simplify(product(t-X[i],i=1..nops(X))/(t-X[k])): > L:=L/subs(t=X[k],L): > P:=P+Y[k]*L: > od: > sort(expand(P)); > end: > Lagrange([1,2,3,4,5],[7,-8,9,-10,11],x); 6*x^4-214/3*x^3+294*x^2-1463/3*x+266 > > LagrangeFonction:=proc(f,X,x) > local Y,k; > Y:=[seq(f(X[k]),k=1..nops(X))]: > Lagrange(X,Y,x); > end: > LagrangeFonction(t->1/(1+t^2),[1,2,3,4,5],x); 19/4420*x^4-147/2210*x^3+1731/4420*x^2-2373/2210*x+275/221 > > > > > LagrangeGraphe:=proc(g,n,a,b,t,xmin,xmax,ymin,ymax) > local i,s,p; > s:=seq( plots[display]( plot ( > LagrangeFonction(g,[a+(b-a)*i/p$i=0..p],t),t=xmin..xmax),plot(g(t),t=x > min..xmax,color=blue)),p=1..n): > plots[display](s,insequence=true,view=[xmin..xmax,ymin..ymax]); > end: > LagrangeGraphe(t->1/(1+t^2),40,-5,5,t,-5,5,-0.2,1.2); > LagrangeGraphe(t->ln(1+t),20,0,5,t,0,5,-2,3); # Tchebychev > with(orthopoly): > T(5,x); 16*x^5-20*x^3+5*x > S:=solve(T(5,5*x)=0,x); S := 0, 1/20*(10+2*5^(1/2))^(1/2), -1/20*(10+2*5^(1/2))^(1/2), 1/20*(10-2*5^(1/2))^(1/2), -1/20*(10-2*5^(1/2))^(1/2) > [evalf(S)]; Error, invalid types in sum > LagrangeTcheb:=proc(g,n,t,ymin,ymax) > local i,s,p; > s:=seq( plots[display]( plot ( > LagrangeFonction(g,[evalf(solve(T(p,x)=0,x))],t),t=-1..1),plot(g(t),t= > -1..1,color=blue)),p=1..n): > plots[display](s,insequence=true,view=[-1..1,ymin..ymax]); > end: > LagrangeTcheb(t->1/(1+t^2),10,t,-0.2,1.2); >