<< inizio < ·············································································

Metodo di Newton

Il polinomio il cui grafico passa per i punti (x0,y0),(x1,y1),...,(xn,yn)  si può definire ricorsivamente:
L'implementazione in Javascript può basarsi su una function come la seguente
function  pol_Newton_ric(pti){
	var pol=""+pti[0][1];
	if (pti.length>1){
		pol+="+(x"+((pti[0][0]<0)?"+":"- ")+Math.abs(pti[0][0])+")*("+pol_Newton_ric(pendenze(pti))+")";
	}
	return pol;
}
dove
function pendenze(pti){
	var pend=[];
	var n=pti.length;
	for (var i=1; i<n; i++){
		pend.push([pti[i][0],(pti[i][1]-pti[0][1])/(pti[i][0]-pti[0][0])]);
	}
	return pend;	
}
e che produce un'espressione ben formata nella variabile x calcolabile ad esempio con il metodo eval() dopo che una variabile x sia stata istanziata. Ad esempio:

Punti: p(x)=

Così dopo l'assegnazione x= si ha y=eval(p(x))=

L'algoritmo in questione può descriversi anche iterativamente:

Per il solo punto (x0,y0)
	p0(x) = y0
Per i punti (x0,y0) e (x1,y1)
	p1(x) = y0 + (x-x0)a0
dove y1 = y0 + (x1-x0)a0 e quindi 
	

 
Per i punti (x0,y0), (x1,y1) e (x2,y2)
	p2(x) = y0 + (x-x0)(a0+(x-x1)a1)
dove y2 = y0 + (x2-x0)(a0+(x2-x1)a1)  e quindi 
	

  
...

Quindi per i punti (x0,y0), (x1,y1), (x2,y2), …,(xn,yn)
	pn(x) = y0 + (x-x0)(a0+(x-x1)(a1+…(x-xn-1)an-1)..)
dove yn = y0 + (xn-x0)(a0+(xn-x1)(a1+…(xn-xn-1)an-1)..) e quindi 
	

   
dove 
	zk(x) = (x-x0)(x-x1)…(x-xk)
L'implementazione in Javascript può basarsi su una function come la seguente
function  pol_Newton_iter(pti){
	var n=pti.length-1;
	var pol=""+pti[0][1];
	var x;
	var coeff;
	var z="(x"+((pti[0][0] <0)?"+":"-")+Math.abs(pti[0][0])+")";
	for (var i=1; i<n+1; i++){
		x=pti[i][0];
		coeff=(pti[i][1]-eval(pol))/eval(z);
		pol+=((coeff <0)?"-":"+")+Math.abs(coeff)+"*"+z;
		z+="*(x"+((pti[i][0]<0)?"+":"-")+Math.abs(pti[i][0])+")";
	}
	return pol;
}


pagina di Roberto Ricci L.S. "A. Righi", Bologna. Ultima revisione