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; }