数値計算プログラム

2014年08月22日

連立1次常微分方程式 4元

初期値問題
オイラー・ロンバーグ法

input a$;
input b$;
input c$;
input d$;

input x0,y0,z0,v0,w0;

input h;
input n;

input e;
input l;

if n>254 then n:=254;
if l>255 then l:=254;

dim y(n+1),z(n+1),v(n+1),w(n+1,a(l+1),b(l+1),c(l+1),d(l+1),o(l+1),p(l+1),q(l+1),r(l+1;

x1:=x0;
y(1):=y0;
z(1):=z0;
v(1):=v0;
w(1):=w0;

for i:=1 to n;
x:=x1;
y:=y(i);
z:=z(i);
v:=(vi);
w:w(i);
a1:=2;

a(1):=y+h*val(z$);
b(1):=z+h*val(b$);
c(1):=v+h*val(c$);
d(1):=w+h*val(d$);

for j:=1 to l;

x:=x1;
y:=y(i);
z:=z(i);
v:=v(i);
w:=w(i);

for k:=1 to a1;

a:=val(a$);
b:=val(b$);
c:=val(c$);
d:=val(d$);
x:=x+h/a1;
y:=y+h/a1*a;
z:=z+h/a1*b;
v:=c+h/a1*c;
w:=w+h/a1*d;
nezt k;

o(1):=y;
p(1):=z;
q(1):=v;
r(1):=w;
a2:=1;

for k:=1 to j;

a2:=a2*2;
a3:=a2-1;
o(k+1):=o(k)+(o(k)-a(k))/a3;
o1:=abs(o(k+1)-o(k));
p(k+1):=p(k)+(p(k)-b(k))/a3;
p1:=abs(p(k+1)-p(k));
q(k+1):=(q(k)+(q)k)-c(k)/a3;
q1:=abs(q(k+1)-q(k));
r(k+1):=r(k)+(r(k)-d(k))/a3;
r1:=abs(r(k+1)-r(k));

if o1<=o(k)*e and p1<=p(k)*e and q1<=q(k)*e and r1<=r(k)*e then l1;
next k;
for k:=1 to j+1;
a(k):=o(k);
b(k):=p(k);
c(k):=q(k);
d(k):=r(k);
next k;
a1:=a1*2;
next j;
go l2;

label l1;
x1=x1+h;
y(i+1):=o(k+1);
z(i+1):=p(k+1);
v(i+1):=q(k+1);
w(i+1):=r(k+1);
next i;

label l2;
print x,y(i),z(i),z(i),w(i);

end;


当サイトでは、第三者配信事業者によるサービスを使用して広告を表示しています。 これらの第三者配信事業者は、ユーザーの興味に応じた商品やサービスの広告を表示する目的で、 当サイトや他のサイトへのアクセスに関する情報を使用することがあります (氏名、住所、メール アドレス、電話番号は含まれません)。 このプロセスの詳細や、第三者配信事業者にこれらの情報が使用されないようにする方法については、 ここをクリックしてください。