rendered paste bodyfunction validData(Xo, nbDec){
var erreur = 0;
if (!isDataValid(Xo))
erreur = 1;
if (!isDataValid(nbDec))
erreur = 2;
else
if(nbDec < 0)
erreur = 3;
return erreur;
}
function isDataValid(data){
if (isNaN(data))
return false;
else
return true;
}
function dispatchErreur(erreur){
var msg;
msg = "";
switch(erreur){
case 1: msg = "Xo doit etre un chiffre"; break;
case 2: msg = "NbDecimales doit etre un chiffre"; break;
case 3: msg = "NbDecimales doit etre positif"; break;
}
document.getElementById('nr_res').value = msg;
}
function calc(){
var fct = document.getElementById('nr_slct').value;
//alert(fct);
if (fct == "1" || fct == "2" || fct == "3" || fct == "4" || fct == "5"){
var Xo, nbDec, erreur;
Xo = parseFloat(document.getElementById('nr_x0').value);
nbDec = parseInt(document.getElementById('nr_dec').value);
//alert(Xo+"\n"+nbDec);
erreur = validData(Xo, nbDec);
if (erreur == 0)
calcNewRaph(Xo,nbDec,fct);
else
dispatchErreur(erreur);
}
else{
document.getElementById('nr_res').value = "Erreur dans le choix de la fonction";
return false;
}
}
function calcNewRaph(Xn,nbDec,fct){
var ok = false;
var fXn, fpXn, XnSuiv;
fXn = fpXn = XnSuiv = 0;
while(!ok){
fXn = selectFct(fct,Xn,0);
fpXn = selectFct(fct,Xn,1);
XnSuiv = calcXnSuiv(Xn,fXn,fpXn);
ok = isOk(Xn,XnSuiv,nbDec);
//alert(XnSuiv);
Xn = XnSuiv;
}
document.getElementById('nr_res').value = XnSuiv.toFixed(nbDec);
}
function selectFct(fct, Xn, type){
switch(fct){
case "1" : return calcFct1(Xn,type); break;
case "2" : return calcFct2(Xn,type); break;
case "3" : return calcFct3(Xn,type); break;
case "4" : return calcFct4(Xn,type); break;
case "5" : return calcFct5(Xn,type); break;
default: document.getElementById('nr_res').value = "Aucune fonction choisie";
}
}
function calcXnSuiv(Xn, fXn, fpXn){
return (Xn - (fXn/fpXn));
}
function calcFct1(Xn,type){
if (type == 0)
return Math.pow(Xn,3) - Math.pow(Xn,2) + 1;
else
return 3*Math.pow(Xn,2) - 2*Xn;
}
function calcFct2(Xn,type){
if (type == 0)
return Math.pow(Xn,4) - 3*Math.pow(Xn,2) + 75*Xn - 10000;
else
return 4*Math.pow(Xn,3) - 6*Xn + 75;
}
function calcFct3(Xn, type){
if(type == 0)
return Math.pow(Xn,3) - 3*Xn + 1;
else
return 3*Math.pow(Xn,2) - 3;
}
function calcFct4(Xn, type){
if(type == 0)
return Math.pow(Xn, 2) - 7;
else
return 2*Xn;
}
function calcFct5(Xn, type){
if(type == 0)
return Xn - Math.cos(Xn);
else
return 1 + Math.sin(Xn);
}
function isOk(Xn,XnSuiv,nbDec){
if (round2(Xn,nbDec) == round2(XnSuiv,nbDec))
return true;
}
function round2(nb, dec) {
nb *= Math.pow(10,dec);
nb = Math.round(nb);
nb *= Math.pow(10,-dec);
return nb;
}