Python scipy中的复杂ODE系统
我在求解光学布洛赫方程时遇到了困难,这是一个具有复数值的一阶常微分方程系统。我发现scipy可以解决这样的系统,但他们的网页提供的信息太少,我几乎无法理解 我有8个耦合的一阶常微分方程,我应该生成如下函数:Python scipy中的复杂ODE系统,python,scipy,ode,Python,Scipy,Ode,我在求解光学布洛赫方程时遇到了困难,这是一个具有复数值的一阶常微分方程系统。我发现scipy可以解决这样的系统,但他们的网页提供的信息太少,我几乎无法理解 我有8个耦合的一阶常微分方程,我应该生成如下函数: def derv(y): compute the time dervative of elements in y return answers as an array 然后执行复杂代码(derv) 我的问题是: 我的y不是一个列表,而是一个矩阵,我怎样才能给出正确的输出 适
def derv(y):
compute the time dervative of elements in y
return answers as an array
然后执行复杂代码(derv)
我的问题是:
complex_ode()
需要一个雅可比矩阵,我不知道如何开始构造雅可比矩阵
它应该是什么类型的谁能给我提供更多的信息,让我能学到更多。我想我们至少可以为你指出正确的方向。光学 布洛赫方程是科学界很好理解的一个问题 社区,虽然不是由我:-),所以在互联网上已经有了解决方案 这是一个特殊的问题 然而,为了满足您的需求,您提到了使用复杂的代码,我想 很好,但我认为简单的scipy.integrate.ode也可以 根据他们的文件:
from scipy import eye
from scipy.integrate import ode
y0, t0 = [1.0j, 2.0], 0
def f(t, y, arg1):
return [1j*arg1*y[0] + y[1], -arg1*y[1]**2]
def jac(t, y, arg1):
return [[1j*arg1, 1], [0, -arg1*2*y[1]]]
r = ode(f, jac).set_integrator('zvode', method='bdf', with_jacobian=True)
r.set_initial_value(y0, t0).set_f_params(2.0).set_jac_params(2.0)
t1 = 10
dt = 1
while r.successful() and r.t < t1:
r.integrate(r.t+dt)
print r.t, r.y
只要num_rows*num_cols=8
,您的ODE数量就应该可以了。然后
在计算中使用矩阵。当你做完了,一定要回来
向量而非矩阵,如:
out = numpy.reshape(Y,(8,1));
不需要雅可比矩阵,但它可能允许继续计算
更快。如果您不知道如何计算,您可能需要咨询
维基百科或微积分课本。这很简单,但可能很耗时
至于初始条件,您可能已经知道它们应该是什么
无论是复杂的还是真实的价值。只要您选择的值是
在合理范围内,这应该没什么关系。非常感谢你的回答,肯定花了你很多时间。你给的链接是绝对完美的正是我所寻找的。是的,你是对的,应该是9:)好的,今天还有时间,如果我在什么地方遇到麻烦,我可以回到你身边吗?再次感谢。
out = numpy.reshape(Y,(8,1));