ODE 45 Not enough input arguments

1 view (last 30 days)
Mauricio San Román Caraza
Commented: Jan on 26 Feb 2021
It says i don't have enough input agruments in line 3 of the function section and I dont know what is wrong
global m c k Omega f0
k=2000; % N/m
m=5; %kg
c=20; %kg/s
dt=0.005;
f0=37.5;
Omega= 25;
t=0:dt:5;
x0=[0 0];
function rl=f(t,y)
global m c k Omega f0
f=f0*sin(2*pi*Omega*t);
rl=[y(1); f/m-(c*y(1))/m-k*y(2)/(4*m)];
end
  4 Comments
Mauricio San Román Caraza
I had the function and the rest of the code as two separate files. The error only appeared in the function file, this is why I didn't post the rest of the code. However when I combined them into a single file the problem appears to be gone, but the complete code and error that displayed was this:
clc;close all; clear;
global m c k Omega f0
k=500; % N/m
m=5; %kg
c=20; %kg/s
dt=0.005;
f0=37.5;
Omega= 25;
t=0:dt:5;
x0=[0 0];
[t,y]=ode45(@(t,y)f(t,y),t,x0);
plot(t,y(:,1))
--------------------------------------------------------------------------------
function rl=f(t,y)
global m c k Omega f0
f1=f0*sin(Omega*t);
rl=[y(2);(f1-c*y(2)-k*y(1)/4)/m];
end
Error in f (line 3)
f1=f0*sin(Omega*t);
Jan
Jan on 26 Feb 2021
As far as I understand, your problem is solved. But it may help to improve future questions: You have still not posted a complete copy of the error message, but just the part, which explains where the problem occurred.

Sign in to comment.

Answers (1)

Jan
Jan on 25 Feb 2021
We cannot see it, because you have not posted the complete code. But this has been the reason in many other questions in this forum:
[t, y] = ode45(rl, ...)
This calls rl without inputs. You want to provide the handle of the function instead:
[t, y] = ode45(@rl, ...)

Tags

Community Treasure Hunt

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

Start Hunting!