2014-03-13 8 views
2

에 대한 잘못된 질량 - 스프링 - 대시 포트 시스템에 대한 2 차 ODE를 해결하기 위해 내 MATLAB 코드 :matlab에 : ode45 출력 강제 스프링 질량 댐퍼 여기

function Spring 

clear all; 
close all; 
options=odeset('RelTol',1e-6); 
p0 = [1 0]; %initial position and velocity 
[t,p] = ode45(@SpringFunction, [0 20], p0, options); 

plot(t,p(:,1)) %plot the first column (x) vs. time 

return 

function pdot = SpringFunction(t,p) 

c = 5; w = 2; 
g = sin(t); % forcing function 
pdot = zeros(size(p)); 
pdot(1) = p(2); 
pdot(2) = g-c*p(2)-(w^2)*p(1); 

return 

내가 믿는 내가 무엇입니까 출력이 있기 때문에 잘못 이 경우 변위 대 시간의 플롯은 진폭이 감소하는 사인 곡선과 같아야한다고 생각합니다. 대신 다음과 같이 보입니다. decreasing function which relaxes to a sinusoid whose amplitude is constant

이것은 잘못된 것처럼 보입니다. 그러나 틀린 경우 제발 정정 해주세요. 코드에서 잘못된 부분을 볼 수 없습니다.

답변

3

감쇠 시스템을 정현파 적으로 강요하므로 정상 상태가 정현파가되어야합니다. a nice vibrations tutorial (PDF) - 감쇠 된 정현파 강제에 대해서는 448-450 페이지를 참조하십시오. 강제 제거를 시도하거나 진폭을 크게 줄이십시오. 또한 댐핑 효과가 많은 것처럼 보입니다. damping ratio, ζ (제타)는 c/(2*w) = 5/4 인 것으로 보입니다. 이것은 시스템의 강요되지 않은 형태가 과도하게 감쇠되었음을 의미합니다. 강제하지 않으면 진동이 보이지 않습니다.

또한 진동 시스템이있는 ode45을 사용할 때주의하십시오. 시스템이 너무 뻣뻣 해지면 정확한 결과를 얻으려면 공차를 조정하거나 ode15s과 같은 딱딱한 해결사를 사용해야합니다. 보다 엄격한 공차를 사용하여 질적으로 비슷한 결과 (동일한주기, 진폭, 증가/감소 비율 등)를 산출하는지 확인할 수 있습니다.