インデックスが配列要素数 (1) を超えています。というエラーが出てしまう。
44 views (last 30 days)
Show older comments
インデックスが配列要素数 (1) を超えています。というエラーが出てしまいます。ode45を用いた微分方程式についてのプログラムです。
コードは以下となります。
function du = arm(u,tau,f)
du = zeros(4,1);
du(1) = u(2);
du(2) = (tau-2*u(3)*u(1)*u(4)-9.8*0.5*cos(u(1))-9.8*u(3)*cos(u(1)))/(1+((u(3))^2));
du(3) = u(4);
du(4) = (f+u(3)*((u(2))^2)-9.8*sin(u(1)));
To=5;
for tau = taumin:tauh:taumax
for f = fmin:fh:fmax
options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-4])
[t,u] = ode45(@arm,(0:h:To),[0;0;1;0],options);
X = (u(3)+1)*cos(u(1));
Y = (u(3)+1)*sin(u(1));
end
end
0 Comments
Answers (2)
Toshinobu Shintai
on 2 Oct 2020
入力引数の"u"は、u(4)という記述があることから、少なくとも4要素以上の配列でなければなりません。
例えば、以下のように記述すると、「インデックスが配列要素数 (1) を超えています。」というエラーはなくなります。
a = arm([1; 1; 1; 1],1,1)
0 Comments
KAITO NAKAJIMA
on 3 Oct 2020
2 Comments
Toshinobu Shintai
on 3 Oct 2020
少しずれた回答をしておりまして申し訳ありません。添付のように「arm」関数の引数を設定する必要があります。ode45の引数は「test.m」内のような記述をする必要があります。
詳細については以下のドキュメントを参照してください。
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!