※ ChatGPTを利用し、要約された質問です(原文:scilabのエラーに関して)
Scilabのエラー!二重振り子の数値解析で添字エラーが発生
このQ&Aのポイント
Scilabを使用して二重振り子の数値解析を行っていますが、エラーが発生しています。
オイラー法を使って運動方程式を解こうとしていますが、添字に誤りがあります。
ソースコードに問題がある可能性があります。20000行1列の行列を使用し、配列としてアクセスしています。どこに問題があるのか教えてください。
よろしくお願いいたします。
Scilabを用いて二重振り子の数値解析を行なっています。
この先scilabが必要になるのでいろいろ使ってみているのですが、
うまくいきません。
オイラー法を用いて二重振り子の運動方程式を動かそうとしているのですが、
動きません。
ソースは
//Matrix
ccc1=zeros(20000,1);
ccc2=zeros(20000,1);
s1=zeros(20000,1);
s2=zeros(20000,1);
c1=zeros(20000,1);
c2=zeros(20000,1);
m1=0.10; //一重目質量
m2=0.08; //二重目質量
l1=0.4; //一本目長さ
l2=0.3; //二本目長さ
dt=0.05; //時間刻み幅
g=9.80665; //Gravitational acceleration
c1(1)=%pi;
c2(1)=%pi*0.5;
s1(1)=0; //1.
s2(1)=0; //2.
//Eular method
for t=0:1:100
z1=-m2*l1*s1(t+1)*s1(t+1)*sin(c1(t+1)-c2(t+1))*cos(c1(t+1)-c2(t+1));
z2=m2*g*cos(c1(t+1)-c2(t+1))*sin(c2(t+1));
z3=-m2*l2*s2(t+1)*s2(t+1)*sin(c1(t+1)-c2(t+1));
z4=(m1+m2)*g*sin(c1(t+1));
z5=l1*m1+l1*m2*sin(c1(t+1)-c2(t+1))*sin(c1(t+1)-c2(t+1));
ccc1=(z1+z2+z3+z4)/z5;
ccc2(t+2)=ccc2(t+1)+dt*ccc2(t+1);
s1(t+2)=s1(t+1)+dt*ccc1(t+1);
c1(t+2)=c1(t+1)+dt*s1(t+1);
z6=(sin(c1(t+1)-c2(t+1))*(m2*l2*s2(t+1)*s2(t+1)*cos(c1(t+1)-c2(t+1))));
z7=(sin(c1(t+1)-c2(t+1))*((m1+m2)*l1*s1(t+1)*s1(t+1)));
z8=(m1+m2)*g*cos(c1(t+1)-c2(t+1))*sin(c1(t+1));
z9=(m1+m2)*g*sin(c2(t+1));
z10=(l2*m1+l2*sin(c1(t+1)-c2(t+1))*sin(c1(t+1)-c2(t+1)));
ccc1=(z6+z7+z8+z9)/z10;
ccc2(t+2)=ccc2(t+1)+dt*ccc2(t+1);
s2(t+2)=s2(t+1)+dt*ccc2(t+1);
c2(t+2)=c2(t+1)+dt*s2(t+1);
end
なのですが、
ccc2(t+2)=ccc2(t+1)+dt*ccc2(t+1);
s1(t+2)=s1(t+1)+dt*ccc1(t+1);
c1(t+2)=c1(t+1)+dt*s1(t+1);
のあたりで、
「添字に誤りがあります」とエラーが出てしまいます。
20000行一列の行列を用意して、C言語のように配列を用いているのですが、、、。
ご教授よろしくお願いいたします。