Bonjour,
je voudrais representer graphiquement le logarithme de l'erreur pour differentes valeurs de log(h), pour estimer les ordres de convergence de la methode des trapezes et celle de Romberg pour la fonction sinus.
J'ai donc defini la fonction de romberg appele romberg1, puis une autre fonction qui renvoit l'element R(n,n). Par contre apres je ne comprends pas pourquoi ca ne marche pas.. Voila ce que j'ai fait:
function [R]=romberg1(a, b,n)
h=b-a;
R(1,1)=0.5*h*(f(a)+f(b));

//pour calculer R(k,1)
for k= 2:n
h=h/2;
x=a+h:2*h:b-h;
di=h*sum(f(x));
R(k,1)=0.5*R(k-1)+di;
end

//pour calculer R(k,j)
for j=2:n
for k=j:n
R(k,j)=R(k,j-1)+(R(k,j-1)-R(k-1,j-1))/(4^(j-1)-1);
end
end

endfunction

function y=f(x)
y=sin(x)
endfunction

function r=romberg(f,a,b,n)
[R]=romberg1(a,b,n)
r=R(n,n)
endfunction

a=0
b=%pi
n=6
xd=zeros(n,1);
td=zeros(n,1);
rd=zeros(n,1);
for i=1:n
ni=8*i;
dh=(b-a)/ni;
td(i)=log(norm(2-trapeze(f,0,b,ni)));
rd(i)=log(norm(2-romberg(f,a,b,ni)));
xd(i)=log(dh);
end
xbasc();
plot2d(xd,td,style=[2,2],leg="trapeze")
plot2d(xd,rd,style=[3,3],leg="romberg")

Merci