以下代码给出错误:无法根据规则“安全”将数组数据从dtype('complex128')转换为dtype('float64')
import numpy as np
from numpy.fft import fft
from scipy.integrate import odeint
t = np.linspace(0,9,10)
def func(y,t):
k = 0
dydt = fft(y)
return dydt
y0 = 0
y = odeint(func,y0,t)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-3-4885da912033> in <module>
10
11 y0 = 0
---> 12 y = odeint(func,t)
~\AppData\Local\Continuum\anaconda3\envs\udacityDL\lib\site-packages\scipy\integrate\odepack.py in odeint(func,t,args,Dfun,col_deriv,full_output,ml,mu,rtol,atol,tcrit,h0,hmax,hmin,ixpr,mxstep,mxhnil,mxordn,mxords,printmessg,tfirst)
243 full_output,244 ixpr,--> 245 int(bool(tfirst)))
246 if output[-1] < 0:
247 warning_msg = _msgs[output[-1]] + " Run with full_output = 1 to get quantitative information."
TypeError: Cannot cast array data from dtype('complex128') to dtype('float64') according to the rule 'safe'
但是,如果我从func
返回实值(而不是复数),例如:
def func(y,t):
k = 0
dydt = fft(y)
return np.abs(dydt)
然后odeint
正常工作。
任何人都可以帮助我确定/解决此问题的根源吗?
谢谢!