小编use*_*231的帖子

使用scipy fft和ifft以数字方式求解常微分方程

我有一个ordinary differential equation及时的域名如下:

C*du/dt = -g*u + I
Run Code Online (Sandbox Code Playgroud)

哪里 I = A*t/tau*exp^(1-t/tau)

在freq域中:

u(w) = I(w)/(g*(1+C/g*j*w))
Run Code Online (Sandbox Code Playgroud)

j 是一个复杂的数字 sqrt(-1)

因此,我可以u(t)通过快速傅里叶变换(fft)进入频域 ,然后再使用ifft.

代码:

t = np.linspace(0.,499.9,5000)
I = q*t*np.exp(1-t/Tau_ca)/Tau_ca
u1 = np.fft.ifft(np.fft.fft(I)/(G_l*(1.+1.j*(C_m/G_l)*np.fft.fftfreq(t.shape[-1]))))
Run Code Online (Sandbox Code Playgroud)

然而,当我将其u(t)与其他方法(如微分方程的数值积分或其分析形式)进行比较时,这是不正确的.我已经尝试过并且未能成功找出我的错误所在.

请指教.

python fft scipy ode ifft

6
推荐指数
1
解决办法
3150
查看次数

标签 统计

fft ×1

ifft ×1

ode ×1

python ×1

scipy ×1