Hallo!
Da dies hier mein erstes Thema ist, hoffe ich einfach, dass ich alles richtig mache...
Ich habe folgendes Problem. Wir sollen ein Programm schreiben, dass die Wurzel einer Zahl auf n stellen genau berechnet. Dazu sollen wir das newton-verfahren nutzen, dass sich durch die Folge x(i) = 0,5*(x(i-1)+a/x(i-1)) der wurzel aus a annähert.
Zur Umsetzung sollen wir die Klasse BigDecimal nutzen. Bisher habe ich damit aber noch nie gearbeitet und bin mir nicht sicher, ob ich sie richtig benutzt habe.
Das Programm, das ich geschrieben habe, läuft zwar durch, gibt aber immer nur eine Zahl mit einer Nachkommastelle aus. Ich weiß nicht, woran das liegt. Vielleicht könnt ihr mir ja helfen. Hier erstmal das, was ich so zustande bekommen habe:
Da dies hier mein erstes Thema ist, hoffe ich einfach, dass ich alles richtig mache...
Ich habe folgendes Problem. Wir sollen ein Programm schreiben, dass die Wurzel einer Zahl auf n stellen genau berechnet. Dazu sollen wir das newton-verfahren nutzen, dass sich durch die Folge x(i) = 0,5*(x(i-1)+a/x(i-1)) der wurzel aus a annähert.
Zur Umsetzung sollen wir die Klasse BigDecimal nutzen. Bisher habe ich damit aber noch nie gearbeitet und bin mir nicht sicher, ob ich sie richtig benutzt habe.
Das Programm, das ich geschrieben habe, läuft zwar durch, gibt aber immer nur eine Zahl mit einer Nachkommastelle aus. Ich weiß nicht, woran das liegt. Vielleicht könnt ihr mir ja helfen. Hier erstmal das, was ich so zustande bekommen habe:
Java:
import java.math.BigDecimal;
public class Wurzel
{
BigDecimal a;
int N;
BigDecimal x = new BigDecimal("1");
public Wurzel(BigDecimal a, int N)
{
this.a = a;
this.N = N;
}
public BigDecimal newton(BigDecimal na, BigDecimal nx)
{
BigDecimal ergebnis;
BigDecimal halb = new BigDecimal("0.5");
ergebnis = halb.multiply(nx.add(na.divide(nx)));
return ergebnis;
}
public BigDecimal berechneWurzel()
{
BigDecimal zehn = new BigDecimal("10");
BigDecimal eins = new BigDecimal("1");
BigDecimal n = eins.divide(zehn.pow(N));
while(a.subtract(x.multiply(x)).compareTo(n) == 1)
{
x = newton(a, x);
}
return x;
}
public static void main (String [] args)
{
Wurzel Test = new Wurzel(new BigDecimal("2"), 1);
BigDecimal wurzel = Test.berechneWurzel();
System.out.println(wurzel);
}
}