Not enough input arguments ode45
10 次查看(过去 30 天)
显示 更早的评论
Hi all, I have been trying to understand the use of ode solvers in MATLAB. In the process, I started with first order equations and all went well. The moment I started trying out second order systems, the trouble started. When I run the code, it shows 'not enough input arguments'. I thought that it may the problem with my code and then I started trying codes given as example in text books (Otto&Denier etc.). For every code, every time I run, the same issue pops up. And the code seems to be correct. Please help me to sort it out. I have attached the screenshot of the error message.

">> lorenz Error using lorenz (line 5) Not enough input arguments." This was a code I chose from a text book.
if true
% code
function dx=lorenz(t,x)
sigma=10;
rho=28;
beta=8/3;
dx=[sigma*(x(2)-x(1));x(1)*(rho-x(3)-x(2));x(1)*x(2)-beta*x(3)];
x0=[0 1 1.05];
tspan=[0,20];
[t,x]=ode45(@lorenz,tspan,x0);
plot(x(:,1),x(:,3))
end
0 个评论
采纳的回答
Massimo Zanetti
2016-10-6
Separate the funciton from the rest
function dx=lorenz(t,x)
sigma=10;
rho=28;
beta=8/3;
dx=[sigma*(x(2)-x(1));x(1)*(rho-x(3)-x(2));x(1)*x(2)-beta*x(3)];
end
and invoke ode45 correctly
x0=[0 1 1.05];
tspan=[0,20];
[t,x]=ode45(@(t,x) lorenz(t,x),tspan,x0);
plot(x(:,1),x(:,3))
Does it work now?
4 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Ordinary Differential Equations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!