2016-04-04 245 views
0

私は発射体をモデル化するための簡単なMatlabコードを書こうとしています。コードを実行しようとすると、入力引数が多すぎるというエラーが表示されます。私は私が何かアドバイスをいただければと思います入力引数が多すぎるMatlab ode45

MODEL1(44.7、45)

function[] = model1(vel, angle) 
close all; 
tspan = [0 3]; 
x0 = [0; 0.915; vel*cos(angle); vel*sin(angle)]; 
[x] = ode45(@ball, tspan, x0); 

function xdot = ball(x) 
g = 9.81; 
xdot = [x(3); x(4); 0; -g]; 

end 
end 

Error using model1/ball 
Too many input arguments. 

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

Error in ode45 (line 115) 
    odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, 
    varargin); 

Error in model1 (line 9) 
[x] = ode45(@ball, tspan, x0); 

でコードを実行しています!

+1

[ode45](http://se.mathworks.com/help/matlab/ref/ode45.html)を見てください。 'odefun'は2つの入力' t'と 'x'を必要とします。 x 'である。 –

答えて

1

エラーは、あなたも独立変数(この場合は時間)を渡さなければならないということでした。

function [t, x] = model1(vel, angle) 
tspan = [0 3]; 
x0 = [0; 0.915; vel*cos(angle); vel*sin(angle)]; 
[t, x] = ode45(@ball, tspan, x0); 

end 

function xdot = ball(t,x) 
g = 9.81; 
xdot = [x(3); x(4); 0; -g]; 
end 

ソリューションと対応するタイムステップを返すようにコードを修正しました。また、入れ子関数としてballを削除しました。

+0

ありがとうございます!それが私の問題を解決しました! – Olivia

関連する問題