数値計算プログラム

2階線形常微分方程式・境界値問題・差分近似法

input p$;
input q$;
input F$;

input x1,y2,x2,y2;

input h;

n:=(x2-x1)/h
if int(n)=n then l1;
n:=int(n)+1;
h:=(x2-x1)/n;
print h;

label l1;
n:=n+1;
dim a(n,3),b(n),y(n),s(n),r(n);

x:=x1;
r(1):=0;
r(n):=0;
for i:=2 to n-1
v:=x+h;
a(i,1):=1-h*val(p$)/2;
a(i,2):=-(2-h*h*val(q$));
a(i,3):=1+h*val(p$)/2;
b(i):=h*h*valf$);
r(i):=0;
bext i;
x:=x1;
a(1,1):=0;
a(1,2):=-(2-h*h*val(q$));
a(1,3):=1+h*val(p$)/2;
b(1):=h*h*val(f$)-(1-h*val(p$)/2)*y1;
x:=x2;
a(n,1):=1-h*val(p$)/2;
a(n,2):=-(2-h*h*val(q$));
a(n,3):=0;
b(n):=h*h*val(f$)-(1+h*val(p$)/2)*y2;

s(1):=0;
for i:=2 to n;
s(i):=b(i-1);
for j:=i-2 to i-1;
if j<1 or j>n then l2;
s(i):=s(i)-s(j)*a(i-1,j-i+3);
label l2;
next j;
s(i):=s(i)/a(i-1,3);
next i;
y(1):=1;
for i:=2 to n;
y(i):=b(i-1);
for j:=i-2 to i-1;
if j<1 or j>n then l3;
y(i):=y(i)-y(j)*a(i-1,j-i+3);
label l3;
next j;
y(i):=y(i)/a(i-1,3);
r(i):=y(i)-s(i);
next i;
w:=b(n)-a(n,1)*s(n-1)-a(n,2)*s(n);
y(1):=w/(a(n,1)*r(n-1)+a(n,2)*r(n));
for i:=2 to n;
y(i):=y(1)*r(i)+s(i);
next i;

end;

トラックバック

このエントリーのトラックバックURL:
http://allable.sakura.ne.jp/mt/mt-tb.cgi/4081

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