[英]Solving a system of first order differential equations and second order differential equations (Non-linear)
[英]non linear system of differential equations
我正在尝试解决以下微分方程的非线性系统,但我不明白我编写的代码中的问题在哪里。 该系统是非线性的,具有复数系数和复数域。
from pylab import *
from scipy.integrate import ode
#------initial parameters------
c = 3 * 10 ** 8
h = 6.626 / (2 * pi) * 10 ** -34
kb = 1.3806 * 10 ** -23
TT = 0.1
mm = 1.50 * 10 ** -10
wM = 2 * pi * 10 ** 6
gM = 2 * pi * 10 ** 2
ll = 1064 * 10 ** -9
PL = 100 * 10 ** -4
L = 0.025
k = 1.340 * 10 ** 7
D0 = wM
Ns = 2083
wL = 2 * pi * c / ll
wC = D0 + wL
aL = sqrt((2 * k * PL) / (h * wL))
G0 = wC / L * sqrt(h / (mm * wM))
tau = 1 / k
tciclo = 3 * pi / wM
tauP = 0.5 * pi / wM
tauNP = tciclo - tauP
dtau = 1 / (10 * k)
def fun(t, y, wM,gM,G0,k,D0,aL):
return [wM * y[1],
-wM * y[0] - gM * y[1] + G0 * y[2]*y[2].conjugate(),
-(k + 1j * D0) * y[2] + 1j * G0 * y[0] * y[2]+aL]
y0 = [0.0, 0.0, 0.0]
r = ode(f).set_integrator('zvode', method='bdf')
r.set_initial_value(y0, 0).set_f_params(2.0)
tt = []
yy = []
while r.successful() and r.t < tauP:
r.integrate(r.t + dtau)
tt.append(r.t)
yy.append(r.y)
plot(tt, yy)
show()
始终在您的问题中包含错误消息。 如果没有任何错误,请包括获得的输出,并解释为什么它不是您期望的。
话虽如此……我发现您的代码至少存在一个问题。 fun
具有标准的t
和y
参数,后跟参数wM,gM,G0,k,D0,aL
。 您必须在对set_f_params()
的调用中为每个参数指定一个值。 您当前拥有set_f_params(2.0)
,但是该调用需要六个参数来匹配fun
的额外参数。
在评论中,@ pv。 指出了第二个问题: ode(f)
应该是ode(fun)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.