Driven Damped Pendulum Axes Question

조회 수: 2 (최근 30일)
Calin Pastean
Calin Pastean 2015년 2월 16일
답변: MKG 2015년 2월 17일
Hello, I am quite new to MATLab, this is my very first program, which is also a uni assignment. This is my program thus far:
m=2;
l=5;
g=9.81;
c=0.5;
theta=45;
theta_dot=5;
t=0;
dt=(0.1/theta_dot);
while t<50
theta_dotdot=-(g/l)*sin(theta) - (c/m*l^2)*theta_dot; %motion eqn
theta=theta+dt*theta_dot;
theta_dot=theta_dot+dt*theta_dotdot;
figure(1);
axis([0 0 -2*pi -2*pi]);
hold on;
plot(theta_dotdot, theta);
t=t+dt;
end
What I have done so far (the code above explained): 1.Giving some values (the first part of the code). 2.The equation of motion (%motion eqn). 3.Theta and Theta_dot increasing in value (recommended method/code I was given in the assignment). 4. Figure - doesn't work, and I am not quite sure how it should work. 5. Plot - no reason for it not to work, I assume it doesn't plot anything because of the figure error above. 6. t increasing. 7. Everything above is looped, with t=t+dt What I need to do: Firstly, I need it to give me a figure of the pendulum positions (don't know how to explain this better)- the figure part of the code Secondly, I need it to plot theta_dotdot, theta. I think I got this part right, but the program does not run that part yet, im assuming because of the errors in the figure part.
There are the erros im getting:
>> run Untitled2
Error using set
Bad property value found.
Object Name: axes
Property Name: 'XLim'
Values must be increasing and non-NaN.
Error in axis>LocSetLimits (line 201)
set(ax,...
Error in axis (line 93)
LocSetLimits(ax(j),cur_arg);
Error in Untitled2 (line 17)
axis([0 0 -2*pi -2*pi]);
Error in run (line 63)
evalin('caller', [script ';']);
>>
If an answer can not be provided, I could really use some help on the errors, why am I getting them, what do they mean.
  댓글 수: 2
Star Strider
Star Strider 2015년 2월 16일
See the documentation for ode45. I would use it rather than attempt to integrate your ODE with your own integration routine, unless for some reason you are not allowed to.
Calin Pastean
Calin Pastean 2015년 2월 16일
@StarStrider: I am pretty sure they are not expecting anything too complex, since it is a first year course, first assignment. It just seems to me that there is no link between my equations and the figure 'generator'. if I run the program I also get Figure(1) without anything on it.

댓글을 달려면 로그인하십시오.

채택된 답변

Youssef  Khmou
Youssef Khmou 2015년 2월 16일
편집: Youssef Khmou 2015년 2월 16일
The implementation is acceptable, the first remark is that visualization commands of results should be outside the loop, otherwise you obtain N plots where N is the number of iterations. While loop in this case can be changed into for loop but not necessary, the following version is working , but the physical interpretation still needs correction of the code, try to adjust it :
m=2;
l=5;
g=9.81;
c=0.5;
thet=45;
dtheta=5;
t=0;
dt=(0.1/dtheta);
cc=1;
for t=1:dt:50
d2theta(cc)=-(g/l)*sin(thet) - (c/m*l^2)*dtheta; %motion eqn
theta(cc)=thet+dt*dtheta;
dtheta=dtheta+dt*d2theta(cc);
cc=cc+1;
end
figure(1);
% axis([0 0 -2*pi -2*pi]);
% hold on;
plot(d2theta, theta);

추가 답변 (1개)

MKG
MKG 2015년 2월 17일
Hello, try the following code for your x limits: axis([-2*pi 0 -2*pi 0])
Regards, Martin

카테고리

Help CenterFile Exchange에서 Programming에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by