【问题标题】:How to solve a non-linear differential system with Python?如何用 Python 求解非线性微分系统?
【发布时间】:2019-10-05 17:11:56
【问题描述】:

我有一个非线性微分系统:

  • (1) f''(t)=r(f(t))
  • (2) g''(t)=s(f(t),g(t))

其中s(f(t),g(t)) 可能是s(f(t),g(t))=f(t)*g(t)s(f(t),g(t)) = cos(f(t))*sin(g(t)) ... 我们知道g 和s。我想用 Python 解决这个系统,但我不知道怎么做。第一个方程可以用scipy.integrate.odeint 轻松求解,但我不知道如何求解整个系统。

【问题讨论】:

  • 我想你的意思是rs 是已知的?您是如何定义第一个方程的一阶系统的,为什么它不适用于扩展系统?

标签: python python-3.x differential-equations non-linear


【解决方案1】:

如果你给了rs作为函数,那么你可以将系统构建为

def derivs(t,u): f,g, df, dg = u; return [ df, dg, r(f), s(f,g) ]

u = odeint(derivs, u0, t_array, tfirst=True)

f,g, df, dg = u.T
plt.plot(t_array,f, t_array,g)

或者你想对解决方案做什么。

【讨论】:

  • 感谢您的回答。你能告诉我初始条件的顺序是什么吗?是 u0=[f(t_array[0]),g(t_array[0]),df(t_array[0]),dg(t_array[0])] 吗?
  • 是的,就是这样。当然,你可以选择不同的组件顺序,你只需要在所有地方保持一致即可。
猜你喜欢
  • 2019-01-15
  • 2019-06-07
  • 2015-08-21
  • 1970-01-01
  • 2013-11-14
  • 2020-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多