2014-11-06 3 views
4

는 2 차 ODE 구동 진자 so 같이 정의 쿼드 함수와 2 차 ODE를 해결하고, 특히 내가 progamming 오전 :파이썬 I는 감쇠의 역학을 공부

D^2Y/DT^2 + C * DY/DT + 죄 (y)는이 문제가 Need help solving a second order non-linear ODE in python와 매우 유사 않습니다

import numpy as np 
import matplotlib.pyplot as plt 
from scipy import integrate 


def pendeq(t,y,a,c,w): 
    y0 = -c*y[1] - np.sin(y[0]) + a*np.cos(w*t) 
    y1 = y[1] 
    z = np.array([y0, y1]) 
    return z 

a = 2.1 
c = 1e-4 
w = 0.666667  # driving angular frequency 

t = np.array([0, 5000]) # interval of integration 
y = np.array([0, 0])  # initial conditions 

yp = integrate.quad(pendeq, t[0], t[1], args=(y,a,c,w)) 

A * COS (중량) =하지만 오류

Supplied function does not return a valid float. 

어떻게 생각을 얻고있다 잘못하고있는거야 ??

+0

여러 매개 변수의 함수로 진자의 위치를 ​​해결하는 것처럼 보입니다. 맞습니까? –

+0

예, 맞습니다. –

+1

'quad '는 스칼라 함수를 통합합니다. 그것은 상미 분 방정식을 푸는 것이 아닙니다. 연결된 예제를 다시 보아라. --scipy.integrate.odeint' ('quad'가 아닌)가 솔루션을 생성하는데 사용된다. http://wiki.scipy.org/Cookbook/CoupledSpringMassSystem –

답변

3

integrate.quad는 함수 (귀하의 경우, pendeq을) 만 플로트수익을 제공해야합니다. 함수가 배열을 반환하고 있습니다.

+0

나는 "내가 뭘 잘못하고 있니?"라는 질문의 일부에 대답했지만 여전히 올바르게하는 방법을 찾으려고합니다. 내가 알아낼 수 있다면 내 대답을 편집 할 것이다. 이 시점에서 프로그래밍 문제보다는 물리 문제가 더 중요합니다. –

관련 문제