求解非线性 ODE 的数值方法?

计算科学 数字 非线性方程 牛顿法
2021-11-27 02:13:32

我想求解非线性方程,数值。我发现求解这个椭圆积分会很麻烦,那么有没有一种数值方法可以用来求解呢?d2xdt2+ksinx=0

我试图应用牛顿的方法,但它需要一个粗略的值来确定解决方案所在的位置,而我没有。在我对求解这个方程的数值方法的所有搜索中,我找不到任何函数既包含 x 的导数又包含的函数,形式为 任何输入将不胜感激f(x)xx

f(x)=x+kg(x)

2个回答

只需将速度作为附加变量引入并求解:

ddt(x,x˙)t=(x˙,ksin(x))t

然后,您可以使用任何 ODE 积分器解决该问题,例如 Matlab 中的 ode45,使用 Scipy 的 RK45...

注意:我很困惑为什么你会使用牛顿法来解决这个问题......你可以应用它来解决隐式方案的每个时间步,或者一次解决你的解决方案,所有时间步,在离散时间网格。但我不明白你将如何用它来求解原始方程......

评论太长了。

正如其他人所提到的,网络上有大量的代码/文献,因此您可以毫无问题地找到任何合适的参考资料。此外,您的具体示例是物理学中最标准的示例之一。顺便说一句,如果我们使用后向欧拉,在定义并将您的 ODE 编写为您获得的一阶系统之后,在调用时间的解,其中为时间步长:X(t)=[x(t),x˙(t)]Xn=[x(tn),x˙(tn)]tn=y0+hnh

Xn+1=Xn+h[x˙(tn),ksin(x(tn))]

这是中的非线性方程,通常用牛顿法求解(在每个时间步处)Xnn