【问题标题】:non linear system of differential equations非线性微分方程组
【发布时间】:2014-12-29 14:32:14
【问题描述】:

我正在尝试求解以下非线性微分方程组 但我不明白我写的代码中的问题在哪里。 该系统是具有复系数和复域的非线性系统。

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()

【问题讨论】:

  • 回溯或任何错误信息?
  • 您在本应输入 ode(fun) 时输入了 ode(f)f 来自 from pylab import *,是一个从 f 分布计算随机变量的函数...您的第二个问题是 def fun(t, y, ...) 包含大量附加参数,但您在 set_f_params 中只给出一个值.

标签: python scipy ode


【解决方案1】:

始终在您的问题中包含错误消息。如果您没有任何错误,请包括您得到的输出,并解释为什么它不是您所期望的。

话虽如此...我发现您的代码至少有一个问题。 fun 有标准的ty 参数,后面跟着参数wM,gM,G0,k,D0,aL。您必须在对set_f_params() 的调用中为每个参数指定一个值。您当前有set_f_params(2.0),但该调用需要六个参数来匹配fun 的额外参数。

在评论中,@pv。指出了第二个问题:ode(f) 应该是ode(fun)

【讨论】:

  • 感谢您如此迅速地回复。我一发布问题就注意到了错字。我已经设置了参数,现在一切正常。
  • 我还有一个问题:在aL定义为周期性阶跃函数的情况下,我如何解决上述系统?
  • cmets 不是解决该问题的正确位置。而是创建一个新问题。
猜你喜欢
  • 2021-01-29
  • 1970-01-01
  • 1970-01-01
  • 2014-12-06
  • 1970-01-01
  • 2020-08-18
  • 2016-08-08
  • 1970-01-01
  • 2021-06-07
相关资源
最近更新 更多