ChronoMath, une chronologie des MATHÉMATIQUES
à l'usage des professeurs de mathématiques, des étudiants et des élèves des lycées & collèges

Listing JavaScript de la méthode de Romberg

<SCRIPT LANGUAGE=JavaScript>var x,fonc
var pi=3.141592653589793;
var e=2.7182818284590452;

function go()
{
with (Math)
{
fonc="1/x"
a=1;b=2;
p=5;
fonc=prompt("Entrez votre fonction :",fonc)
a=eval(prompt("Entrez a :",a));if (a==null) {return};
b=eval(prompt("Entrez b :",b));if (b==null) {return};
p=eval(prompt("Précision voulue en nombre de décimales :",p));if (p==null) {return};
n=6;if(b-a>10 || p>5){n=8}
max=pow(2,n)
if(p>=8){alert("Risque de divergence. Dans ce cas diminuez p ou augmentez n")}
n=eval(prompt("Je propose n = "+n+", soit 2^n = "+max+" points maxi."+"\n"+"Sinon entrez n :",n));
if (n==null) {return};
max=pow(2,n)
r = new Array(max);
for(i=0;i<=max;i++){r[i]=new Array()}
r[0][0]=(b-a)*(f(a)+f(b))/2
r[1][0]=(b-a)*(f(a)+f(b)+2*f(a/2+b/2))/4
nn=1;
while(nn<=n)
 {
  nn++;ns=pow(2,nn)
  h=(b-a)/ns;
  r[nn][0]=(f(a)+f(b))/2
  for(i=1;i<=ns-1;i++){r[nn][0]=r[nn][0]+f(a+i*h)}
  r[nn][0]=h*r[nn][0] // fin des calculs de r(i,j) de i = 0 à n
}
dp=0;j=0
while(j<=n && dp==0)
{
  j++;i=j-1
while (i<=n)
{
  i++
  k=pow(4,j);
  r[i][j]=(k*r[i][j-1]-r[i-1][j-1])/(k-1)
  test=abs(r[i][j]-r[i-1][j])
  if(test<pow(10,-p)){dp=1;break}
} // fin boucle i
} // fin boucle j
if(dp==1)
 {alert("Integrale Trapèzes = "+r[n][0]+"\n"+"Integrale Romberg = "+r[n][j])}
  else
 {alert("L'algorithme ne converge pas")}
}
}

function f(x)
{
with(Math)
{
y=eval(fonc)
return y
}
}

</SCRIPT>

JavaScript dans ChronoMath :


© Serge Mehl - www.chronomath.com