Stringendo al dunque, visto che hai polinomi la cosa è estremamente semplice:
codice:
private double calcolaRicorsivo(double x, int p) {
double d = x - ((Math.pow(x, n)-this.a)/(n*Math.pow(x, n-1)));
return (Math.abs(x-d) <= Math.pow(10, -p) ? (x+d) / 2 : calcolaRicorsivo(d, p));
}
private double calcolaIterativo(double x, int p) {
double d = x - ((Math.pow(x, n)-this.a)/(n*Math.pow(x, n-1)));
while (Math.abs(x-d) > Math.pow(10, -p)) {
x = d;
d = x - ((Math.pow(x, n)-this.a)/(n*Math.pow(x, n-1)));
}
return (x+d)/2;
}
in cui ti presento due modi (ricorsivo e iterativo) in cui x è il punto in cui stai calcolando, p il numero di cifre decimali corrette che vuoi. "a" ed "n" come da problema a^(1/n)
E come ti è stato linkato:
codice:
f(Xn)
Xn+1 = Xn - ---------
f'(Xn)