2nd order nonhomogenus differential equation in matlab

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
1 replies · 3K views
Powertravel
Messages
9
Reaction score
0

Homework Statement



I am studying a forced undamped oscillator with MATLAB governed by the equation:

y'' + [itex]\omega[/itex]oy = 2Cos([itex]\omega[/itex]t)

First I have to write a function that can be solved by the solver ode45.

Here is where I am stuck. Matlab just spits error messages at me when I try to run the solver.
It would be awesome if someone could check my mfile and see where I am going wrong.

Homework Equations


y'' + [itex]\omega[/itex]oy = 2Cos([itex]\omega[/itex]t)
y(0)=0
y'(0)=0
[itex]\omega[/itex]o = 2
[itex]\omega[/itex] = 1.95+[itex]\epsilon[/itex]
e = a small number

The Attempt at a Solution



This is my m-file, descriptions in green
-----------------------------------------------
function [ydot] = occi( t,y ) % The name of the function is occi
Wo = 2; % The value of [itex]\omega[/itex]o
e = 9*8*10^-3; % Value for [itex]\epsilon[/itex]
w = 1.95+e; % The value for [itex]\omega[/itex]
ydot = zeros(2,1); %Creates a 2rows 1column matrix to contain the system of Ode
ydot(1) = y(1); %sets y' = y1
ydot(2) = 2*cos(w*t)-(Wo^2)*y; %sets Y'' = 2Cos([itex]\omega[/itex]t) - [itex]\omega[/itex]oy
end
------------------------------------------
Then I run this script:

>>[tout, yout] = ode45(@occi, [0 2*pi], [0; 0]);

and MATLAB slaps me in the face with:

? In an assignment A(I) = B, the number of elements in B and
I must be the same.

Error in ==> occi at 7
ydot(2) = 2*cos(w*t)-(Wo^2)*y;

Error in ==> odearguments at 98
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.

Error in ==> ode45 at 172
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...


So, I don't get what's wrong. Thanks for help. (is it presumptuous to write that?)
 
on Phys.org
As far as I can tell, you have only a single, fairly subtle error. Without meaning to frustrate you, I think it'd be better if you can find it for yourself. I'll give you a couple of hints:

1. The error is in line 7 (where you assign your function value to ydot(2) )
2. You could easily have made the exact same error in line 6, but didn't.

If you still struggle by tomorrow, I'll put you out of your misery.

Given the relevant equations you gave, it looks like you may also have a logic error in line 7. I don't think ω0 should be squared?