All pastes #899826 Raw Edit

Untitled

public text v1 · immutable
·published 2008-02-11 13:35 UTC
rendered paste body
function 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;
}