What's wrong with my code?

1 view (last 30 days)
Andrew Davies
Andrew Davies on 18 May 2014
Commented: Andrew Davies on 18 May 2014
function dxdt = pendulum(t,x)
L = 1;
theta = x(1);
gamma = x(2);
dtheta = gamma;
dgamma = -(9.8/L)*sin(theta);
dxdt = zeros(2,1);
dxdt(1)=dtheta;
dxdt(2)=dgamma;
[t,x]=ode45('pendulum',[0 10],[0.9*pi 0]);
plot(t,x(:,1));
hold on;
plot(t,x(:,2),'r');
legend('Position','Velocity');
plot(x(:,1),x(:,2));
xlabel('Position');
yLabel('Velocity');
It says x is undefined
  2 Comments
dpb
dpb on 18 May 2014
Need EXACT error in context including traceback to be able to tell--too many places where x is used. You may well need to change the internal use of x as the result of ode45 and where it's the passed-in value; didn't try to read the code thoroughly enough to tell for certain.

Sign in to comment.

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 18 May 2014
Edited: Azzi Abdelmalek on 18 May 2014
There is no error in your code, the problem is the way you are using it.
Save the followed code as pendulum.m
function dxdt = pendulum(t,x)
L = 1;
theta = x(1);
gamma = x(2);
dtheta = gamma;
dgamma = -(9.8/L)*sin(theta);
dxdt = zeros(2,1);
dxdt(1)=dtheta;
dxdt(2)=dgamma;
Then in another file write and run this code
[t,x]=ode45('pendulum',[0 10],[0.9*pi 0]);
plot(t,x(:,1));
hold on;
plot(t,x(:,2),'r');
legend('Position','Velocity');
plot(x(:,1),x(:,2));
xlabel('Position');
ylabel('Velocity');
  3 Comments
Azzi Abdelmalek
Azzi Abdelmalek on 18 May 2014
Andrew, what about your original question?
Andrew Davies
Andrew Davies on 18 May 2014
That was an example from a textbook and i was using it to try to understand how to solve my own one, the second one i described

Sign in to comment.

More Answers (0)

Categories

Find more on Particle & Nuclear Physics in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!