2014-11-02 2 views
0

다음 방정식의 비선형 시스템을 풀려고합니다. 하지만 내가 작성한 코드에서 문제가 어디 있는지 이해할 수 없습니다. 시스템은 복소 계수 및 복소 도메인을 갖는 비선형입니다.비선형 시스템의 미분 방정식

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

추적 또는 오류 메시지? – najjarammar

+1

'ode (fun)'가 있어야 할 때'ode (f)'라고 타이프했습니다. 'f'는'from pylab import *'에서 유래 한 것으로, f- 분포에서 무작위 변수를 계산하는 함수입니다 ... 두 번째 문제는'def fun (t, y, ...)'는 큰 목록을 포함한다는 것입니다 추가 인수가 있지만'set_f_params'에는 하나의 값만 부여합니다. –

답변

0

질문에 항상 오류 메시지를 넣으십시오. 오류가 없으면 얻은 결과를 포함시키고 그것이 예상했던 것과 다른 이유를 설명하십시오.

그런 말은 ... 코드에 적어도 하나 이상의 문제가 있음을 알 수 있습니다. fun에는 표준 ty 인수가 있고 그 뒤에 wM,gM,G0,k,D0,aL 매개 변수가옵니다. set_f_params()을 호출 할 때 각 매개 변수의 값을 지정해야합니다. 현재 set_f_params(2.0)이 있지만이 호출에는 추가 매개 변수 fun과 일치하는 6 개의 인수가 필요합니다.

댓글에서 @pv. 두 번째 문제점 : ode(f)ode(fun)이어야합니다.

+0

너무 빨리 응답 해 주셔서 감사합니다. 내가 질문을 게시하자마자 오타가 나타났습니다. 매개 변수를 설정 했으므로 이제는 모두 옳습니다. – Kowalski

+0

다른 질문이 있습니다. 주기적 단계 함수로 정의 된 aL의 경우 시스템을 어떻게 해결할 수 있습니까? – Kowalski

+0

의견은 그 문제를 해결할 적절한 장소가 아닙니다. 대신 새로운 질문을 만드십시오. –

관련 문제