回答編集履歴
6
append description about equation
test
CHANGED
@@ -38,3 +38,5 @@
|
|
38
38
|
の方が正しいように感じます.このコードで`ValueError: math domain error`となる`X_2`について10000回の試行を行なって解析したところ,次のようなグラフが得られました.
|
39
39
|

|
40
40
|
言うなれば,赤の領域は今回使った反復法で振動/発散する値域を示します.逆に何もない白の領域は安定して解析できる値域ですね.何かの参考になれば幸いです.
|
41
|
+
|
42
|
+
ちなみにニュートン法の反復式を正しいものとして解析しています.ここに問題がある可能性を捨てきれない場合は,扱いたい数式の掲示もお願いします.
|
5
fix miss words
test
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
`random.uniform()`で`X_2`を定義した直後に`print(X_2)`を移動させることで,原因を突き止めるようにすると良いでしょう.
|
2
2
|
|
3
|
-
先の解答にある分母がほぼ0になるような`math.cos(x-X_2) - 1`の計算では,`ValueError: math domain error`の原因となる`inf`や`-inf`が出る前に`ZeroDivisionError: float division by zero`が発生します.ので,これは本質的な答えではありません.
|
3
|
+
先の解答にある分母がほぼ0になるような`math.cos(x-X_2) - 1`の計算では,`ValueError: math domain error`の原因となる`inf`や`-inf`が出る前に0除算のエラー`ZeroDivisionError: float division by zero`が発生します.ので,これは本質的な答えではありません.
|
4
4
|
|
5
5
|
したがって,別の原因があると考え,弊環境で複数回試行したところ,`X_2 = 2.791313034807418`で`ValueError: math domain error`になりました.
|
6
6
|
|
7
|
-
`while`ループの中を観測すると,`x`や`x_2`が振動/発散し,`inf`に到達後`math.sin()`の引数に使われ,`ValueError: math domain error`になったようです.
|
7
|
+
`while`ループの中を観測すると,`x`や`x_2`が指数関数的に振動/発散し,`inf`に到達後`math.sin()`の引数に使われ,`ValueError: math domain error`になったようです.
|
8
8
|
|
9
|
-
エラーの対策として,
|
9
|
+
エラーの対策として,反復回数が多いものを扱わないようにするため,次のようにコードを改変すると良いでしょう.
|
10
10
|
|
11
11
|
```Python
|
12
12
|
for i in range(N):
|
@@ -35,7 +35,6 @@
|
|
35
35
|
cnt += 1
|
36
36
|
```
|
37
37
|
|
38
|
-
の方が正しいように感じます.このコードで`ValueError: math domain error`となる`X_2`
|
38
|
+
の方が正しいように感じます.このコードで`ValueError: math domain error`となる`X_2`について10000回の試行を行なって解析したところ,次のようなグラフが得られました.
|
39
39
|

|
40
|
-
言うなれば,赤の領域は今回使った反復法で振動/発散する値域を示します.逆に白の領域は安定して解析できる値域ですね.何かの参考になれば幸いです.
|
40
|
+
言うなれば,赤の領域は今回使った反復法で振動/発散する値域を示します.逆に何もない白の領域は安定して解析できる値域ですね.何かの参考になれば幸いです.
|
41
|
-
|
4
append graph description
test
CHANGED
@@ -37,5 +37,5 @@
|
|
37
37
|
|
38
38
|
の方が正しいように感じます.このコードで`ValueError: math domain error`となる`X_2`及び`rand[i]`を10000回の試行を行なって解析したところ,次のようなグラフが得られました.
|
39
39
|

|
40
|
-
何かの参考になれば幸いです.
|
40
|
+
言うなれば,赤の領域は今回使った反復法で振動/発散する値域を示します.逆に白の領域は安定して解析できる値域ですね.何かの参考になれば幸いです.
|
41
41
|
|
3
fixed graph
test
CHANGED
@@ -35,5 +35,7 @@
|
|
35
35
|
cnt += 1
|
36
36
|
```
|
37
37
|
|
38
|
-
の方が正しいように感じます.このコードで`ValueError: math domain error`となる`X_2`及び`rand[i]`を10000回の試行を行なって解析したところ,次のようなグラフが得られました.
|
38
|
+
の方が正しいように感じます.このコードで`ValueError: math domain error`となる`X_2`及び`rand[i]`を10000回の試行を行なって解析したところ,次のようなグラフが得られました.
|
39
|
-

|
40
|
+
何かの参考になれば幸いです.
|
41
|
+
|
2
append graph
test
CHANGED
@@ -35,4 +35,5 @@
|
|
35
35
|
cnt += 1
|
36
36
|
```
|
37
37
|
|
38
|
-
の方が正しいように感じます.
|
38
|
+
の方が正しいように感じます.このコードで`ValueError: math domain error`となる`X_2`及び`rand[i]`を10000回の試行を行なって解析したところ,次のようなグラフが得られました.何かの参考になれば幸いです.
|
39
|
+

|
1
append fix
test
CHANGED
@@ -19,3 +19,20 @@
|
|
19
19
|
x = x2
|
20
20
|
cnt += 1
|
21
21
|
```
|
22
|
+
|
23
|
+
また反復の初期位置`x`も本来であれば反復の開始位置にあるべきなはずなので
|
24
|
+
|
25
|
+
```Python
|
26
|
+
for i in range(N):
|
27
|
+
x = math.pi # ここが正しそう
|
28
|
+
cnt = 0
|
29
|
+
while cnt < 100: # under 100 iterative
|
30
|
+
x2 = x-(2*math.pi*ran[i]+math.sin(X_2)+math.sin(x-X_2)-x)/(math.cos(x-X_2)-1)
|
31
|
+
if abs(x2 - x) < 0.0001:
|
32
|
+
X.append(x)
|
33
|
+
break
|
34
|
+
x = x2
|
35
|
+
cnt += 1
|
36
|
+
```
|
37
|
+
|
38
|
+
の方が正しいように感じます.
|