インデックスが配列要素数 (1) を超えています。というエラーが出てしまう。
10 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
インデックスが配列要素数 (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 commentaires
Réponses (2)
Toshinobu Shintai
le 2 Oct 2020
入力引数の"u"は、u(4)という記述があることから、少なくとも4要素以上の配列でなければなりません。
例えば、以下のように記述すると、「インデックスが配列要素数 (1) を超えています。」というエラーはなくなります。
a = arm([1; 1; 1; 1],1,1)
0 commentaires
KAITO NAKAJIMA
le 3 Oct 2020
2 commentaires
Toshinobu Shintai
le 3 Oct 2020
少しずれた回答をしておりまして申し訳ありません。添付のように「arm」関数の引数を設定する必要があります。ode45の引数は「test.m」内のような記述をする必要があります。
詳細については以下のドキュメントを参照してください。
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!