【发布时间】:2020-07-29 01:35:19
【问题描述】:
我正在尝试为微分方程的欧拉近似制作一个程序(我在一本书中遇到了一个问题告诉我)。我设法编写了适用于所有事物的东西(至少我已经测试过)但是由于某种原因,它在 step = 0,1 失败...... 代码如下:
from math import pow as p
y0: int = 3
h = input("Step size:")
h =float(h)
h1 = h
x_n=0
while x_n < (1):
yn = y0 + h*(3*(p(x_n ,2))*(2-y0))
x_n=h1
h1=h1+h
y0=yn
else:
print(yn)
# h(1),f(1)=3
# h(0.1),f(1)=2,39279
# h(0.01),f(1)=2.37011
# h(0.001),f(1)=2.36810
它适用于 h=1、h=0.5、h=0.2、h=0.05、h=0.01、h=0.001 等等......由于某种原因,它只在 h=0.1 时失败。
有问题的微分方程是 y'=3(x^2)(2-y)
感谢您的帮助!
【问题讨论】:
-
当你说“失败”时,你的意思是它在最终的
yn中得到了错误的答案? -
您的代码是正确的,h = 0.1 的结果是 2.274955739773159。您是否将其与一本书的结果进行比较?也许你实现了一些错误的代码,检查方程和初始参数。
-
如果您知道该网站,我使用了欧拉近似值和 slader.com 的在线计算器,他们都说对于 h=0.1,结果应该是 2.36 或类似的东西......
-
emathhelp.net/calculators/differential-equations/… 这是我用来检查我的代码的网站。
-
这也是我用来验证的 slader 帖子,它是由某个人用另一个欧拉计算器完成的。slader.com/textbook/…
标签: python math differential-equations calculus