avevo un po' di tempo ed ho provato così (caso mai servisse a qualcuno)
partendo dalle funzioni implementate da br1 per il calcolo della rata dato l'interesse, queste funzioni fanno il contrario, calcolano l'interesse per una data rata.![]()
codice:function calcola_interesse() { /* data la funzione r = f(i) voglio trovare i per un dato r r è il valore cercato i è il valore iniziale approssimato f è l'indirizzo della funzione di calcolo */ var c = parseFloat("0"+document.myForm.capitale.value); // capitale var a = parseFloat("0"+document.myForm.anni.value); // numero anni var n = parseFloat("0"+document.myForm.nrateanno.value); // N.rate all'anno var r = parseFloat("0"+document.myForm.rata.value); // rata data var i = 0.01; //Valore iniziale di interesse annuale in % var f = calcola_rata;//f(x) è più facile di calcola_rata(x) var e = 0.0000000001;//differenza massima tra due valori successivi di calcolo var h = 0.1; //rapporto incrementale var j, a, a1; a = i - ((f(i) - r) * h) / ((f(i+h) - r) - (f(i) - r)); //alert(a); for(j = 1; j <= 10; j++) { a1 = a - ((f(a)-r)*h) / ((f(a+h)-r)-(f(a)-r)); //alert(a1); if(Math.abs(a1-a) < e) return Math.round(a1 * 100) / 100; a = a1; } return "SUPERATE LE ITERAZIONI CONSENTITE"; } function calcola_rata(i) { var c = parseFloat("0"+document.myForm.capitale.value); // capitale //var i = parseFloat("0"+document.myForm.interesse.value); // interesse var a = parseFloat("0"+document.myForm.anni.value); // numero anni var n = parseFloat("0"+document.myForm.nrateanno.value); // N.rate all'anno var r = parseFloat(rata_CP(c,i,a,n)); // rata calcolata return r; }

Rispondi quotando