ニュートン法
久しぶりにJava
『どうやって小数入力するんだよ・・・・』
ってなったのはナイショ
ニュートン法で近似解を求めるプログラム
Newthon.java
import java.io.*; public class Newthon { public static void main(String[] args) { double x1 = 0.0; BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { System.out.print("初期値を入力 -> "); String line = reader.readLine(); x1 = Double.parseDouble(line); } catch (IOException e) { System.out.println(e); } Newthon(x1); } //f(x) public static double f(double x) { return x * x - 4.0; } //f'(x) public static double df(double x) { return 2 * x; } //ニュートン法 public static void Newthon(double x1) { double EPS = 1.0e-5; double x2; int max_cnt = 1000; int cnt = 0; while (true) { x2 = x1 - f(x1) / df(x1); if (-EPS < (x2-x1) && (x2-x1) < EPS) { System.out.println("近似解 : " + x2); break; } if (cnt == max_cnt) { System.out.println("近似解が得られませんでした"); break; } x1 = x2; cnt++; } } }