★★Java質問・相談スレッド141★★
■ このスレッドは過去ログ倉庫に格納されています
0809デフォルトの名無しさん
2010/11/08(月) 21:21:07public class R457 {
public static void main(String[] args) {
final double ERROR = 1e-10;
final int NMAX = 100;
for (double x0 : new double[]{10, -10}) System.out.println(find(x0, ERROR, NMAX));
}
/**
* x<sup>2</sup>-2x-3=0 の解をNewton-Raphson法で求める。
* @param x0 初期値
* @param err 許容誤差
* @param max 最大繰り返し回数
* @return 解の一つ
*/
public static double find(double x0, double err, int max) {
for (int i = 0; i < max; i++) {
double x = x0 - (x0 * x0 - 2 * x0 - 3) / (2 * x0 - 2); // x ← x - f(x) / f'(x)
if (Math.abs(x - x0) <= err) return x;
x0 = x;
}
throw new RuntimeException("解が求まらない");
}
}
■ このスレッドは過去ログ倉庫に格納されています