【发布时间】:2021-10-05 10:48:50
【问题描述】:
我试图求解悬链线方程,并想使用 Newton-Raphson 方法。
from math import sinh, cosh
y = 0.4 #Has taken to initiate the iteration.
k = 3/2
for _ in range(5): #Iterations for Newton-Raphson Method
y = y - (sinh(y)-y*k)/(cosh(y)-k)
print(y)
print(y)
- 输出
-0.05174312094834577
9.262910138898434e-05
-5.298477449974456e-13
0.0
0.0
0.0
我期待的意外输出1/0.6164729394
【问题讨论】:
-
为什么不是
x + (sinh....? -
cmets,做一个好的版本历史,其他用户可以跟踪。预期的输出是什么?
-
数学运算不正确或数字太小导致舍入错误。 pythonhosted.org/bigfloat
-
我的意思是你的输出有 6 行,有 6 行的预期输出是什么,我假设其他值不匹配
-
您的解决方案也是“有效的”,因为它导致 0/0,这几乎是未定义的,因此也可以等于 3/2。因此,您的解决方案不一定在技术上(w.r.t. 算法实现)是错误的,甚至在数学上也不一定是错误的,但实际上,您必须为最小化例程提供一个良好的起点。
标签: python math decimal hyperbolic-function python-fractions