回答編集履歴
3
追記
test
CHANGED
@@ -127,3 +127,21 @@
|
|
127
127
|
# 1.6141283310668653e-12
|
128
128
|
|
129
129
|
```
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
# 追記
|
134
|
+
|
135
|
+
```python3
|
136
|
+
|
137
|
+
import sympy as sym
|
138
|
+
|
139
|
+
sym.var("phi delta_out delta_in r_out r_in r Do")
|
140
|
+
|
141
|
+
f = sym.sin(phi)/(phi*( ((delta_out-delta_in)/(r_out-r_in))*(r-r_in + delta_in + Do*(1-sym.cos(phi)))))
|
142
|
+
|
143
|
+
display(f)
|
144
|
+
|
145
|
+
```
|
146
|
+
|
147
|
+
![f](fa4ecb1a915037ee7d6e0b541d4a7de5.png)
|
2
追記
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
pythonの計算精度の問題で、途中で計算しきれなくなっているようです。(参考:[15. 浮動小数点演算、その問題と制限](https://docs.python.org/ja/3/tutorial/floatingpoint.html))sin(φ)/φをsinc(φ/π)と置き換えて計算を省力化したところ、最後まで回るようになりました。(最初のコードでは、integ_inなどが計算できずにNaNになっていました)
|
1
|
+
pythonの計算精度の問題で、途中で計算しきれなくなっているようです。(参考:[15. 浮動小数点演算、その問題と制限](https://docs.python.org/ja/3/tutorial/floatingpoint.html))sin(φ)/φをsinc(φ/π)と置き換え(参考:[numpy.sinc](https://numpy.org/doc/stable/reference/generated/numpy.sinc.html))て計算を省力化したところ、最後まで回るようになりました。(最初のコードでは、integ_inなどが計算できずにNaNになっていました)
|
2
2
|
|
3
3
|
しかし結果は、1.6141283310668653e-12ということで、まだ目標とは50%くらいずれていますね。途中の誤差の積み重ねでしょうか。精度を上げるには、途中の式を手でほぐして簡単な計算に置き換えていくのが王道かと思います。
|
4
4
|
|
1
追記
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
pythonの計算精度の問題で、途中で計算しきれなくなっているようです。sin(φ)/φをsinc(φ/π)と置き換えて計算を省力化したところ、最後まで回るようになりました。(最初のコードでは、integ_inなどが計算できずにNaNになっていました)
|
1
|
+
pythonの計算精度の問題で、途中で計算しきれなくなっているようです。(参考:[15. 浮動小数点演算、その問題と制限](https://docs.python.org/ja/3/tutorial/floatingpoint.html))sin(φ)/φをsinc(φ/π)と置き換えて計算を省力化したところ、最後まで回るようになりました。(最初のコードでは、integ_inなどが計算できずにNaNになっていました)
|
2
2
|
|
3
|
-
しかし結果は、1.6141283310668653e-12ということで、
|
3
|
+
しかし結果は、1.6141283310668653e-12ということで、まだ目標とは50%くらいずれていますね。途中の誤差の積み重ねでしょうか。精度を上げるには、途中の式を手でほぐして簡単な計算に置き換えていくのが王道かと思います。
|
4
4
|
|
5
5
|
|
6
6
|
|