使用odeint&初始条件为真时,复杂方程的odeintw

时间:2017-11-14 21:28:47

标签: python odeint

scipy.integrate.odeint无法处理复杂值。 Warren Weckesser创建了一个包装器odeintw,它将复杂系统转换为真实系统。

在_odeintw.py的第176行,它通过检查初始条件是否复杂来检查是否确实存在复数。但是还有其他方法可能会使方程最终变得复杂。

这给我带来了一些错误,因此我将第176行更改为if False:,以便它使用复杂版本。

那么 - 这是一个错误还是一个功能?换句话说,我是否可能通过这样做来打破某些事情?

以下是一些示例代码:

from odeintw import odeintw
import numpy
import matplotlib.pyplot as plt


#Solve \dot{y} = cy$ with $y(0)=1$ and c=\sqrt(-1)

def dy_dt(Y, t, c):
    y_val = Y[0]
    return [y_val*c]

y0 = [1]
c=1j

times = numpy.linspace(0,10,21)
y = odeintw(dy_dt, y0, times, args = (c,))

plt.plot(numpy.real(y), numpy.imag(y))
plt.savefig('odeintw_error.pdf')

这对odeintw失败,但适用于我建议的更改。

0 个答案:

没有答案