回答編集履歴

1

javaで書き直し

2018/09/29 19:56

投稿

opyon
opyon

スコア1009

test CHANGED
@@ -5,6 +5,90 @@
5
5
 
6
6
 
7
7
  解: 1.4142156862745099 (計算回数: 4 )
8
+
9
+
10
+
11
+ ※上記コードを参考にjavaで書き直し
12
+
13
+ ```java
14
+
15
+ public class memo_qa149182 {
16
+
17
+ // 解を求める関数
18
+
19
+ private static double f(double x) {
20
+
21
+ return x * x - 2.0;
22
+
23
+ }
24
+
25
+
26
+
27
+ // 導関数
28
+
29
+ private static double df(double x) {
30
+
31
+ return 2.0 * x;
32
+
33
+ }
34
+
35
+
36
+
37
+ // ニュートン法
38
+
39
+ private static double[] newton_method(double a, double eps) {
40
+
41
+ int i = 0;
42
+
43
+ for (i = 1; i < 1000; i++) {
44
+
45
+ //漸化式
46
+
47
+ double ah = a - f(a) / df(a);
48
+
49
+ // 収束条件(近似解の変化が十分小さい)を満たせば計算終了
50
+
51
+ if (Math.abs(ah - a) < eps) {
52
+
53
+ break;
54
+
55
+ }
56
+
57
+ // 近似解の更新
58
+
59
+ a = ah;
60
+
61
+ }
62
+
63
+ double[] result = new double[2];
64
+
65
+ result[0] = a;
66
+
67
+ result[1] = i * 1.0;
68
+
69
+ return result;
70
+
71
+ }
72
+
73
+
74
+
75
+ public static void main(String[] args) {
76
+
77
+ double[] ans = newton_method(1.0, 0.0001);
78
+
79
+ System.out.printf("解:%s (計算回数:%s)%n", ans[0], (int) ans[1]);
80
+
81
+ // 解:1.4142156862745099 (計算回数:4)
82
+
83
+ }
84
+
85
+ }
86
+
87
+ ```
88
+
89
+
90
+
91
+
8
92
 
9
93
  ```Python3
10
94