数値計算プログラム

2008年01月09日

行列の固有値とベクトル

行列:A(N、N)の固有値と固有ベクトルを求めます。
反復法のオーソドックスな解法です。

dim a(n,n),b(n),c(n)
l1:=0
i:=1
label re
b(i):=0
j:=1
repeat
input a(i,j)
j:=j+1
until j=>n
i:=i+1
until i:=>n
repeat
b(n):=1
i:=1
repeat
c(i):=0
j:=1
repeat
c(i):=c(i)+a(i,j)*b(j)
j:=j+1
until j=>n
i=i+1
until i=>n
d:=c(n)
i:=1
repeat
c(i):=c(i)/d
i:=i+1
until i=>n
l1:=l1+1
if l:=l1 then label re
i:=1
repeat
b(i):=c(i)
i:=i+1
until i=>n
go label re
end

2008年01月20日

二重積分(台形則)

2関数積分も基本的な考えは同じです。
入れ子構造になります。
1関数と同じ台形則が、一番平凡で普通です。

f$:="(p^2*cos(q))" 2変数関数
input a,b
input c,d
input e,l
x1:=(b-a)*2
y1:=(d-c)*2
i:=1
repeat
x1:=x1*0.5
y1:=y1*0.5
y:=c
v:=0
i1:=2^(i-1)
j:=1
repeat
p:=a
q:=y
v2:=val(f$)
p:=b
v2:=v2+val(f$)
if i1:=1 then label1
x:=a
k:=1
repeat
c:=x+x1
p:=x
v2:=v2+2*val(f$)
k:=k+1
until k>=i1-1
label1
if j=1 or j=i1+1 then v2:=v2*0.5
v:=v+2*v2
y:=y+y1
j:=j+1
until j>=i1+1
v:=v*(b-a)*(d-c)/4^i
if i=1 then label2
if abs(v-v1) label2
v1:=v
i:=i+1
until i>=l
i:=i-1
label3
end

2008年01月30日

数値微分・中心差分近似

精度が悪い「数値微分」ですが、変化の緩い関数では可能です。

def fnf(x):=1/x example
x1 from
x2 to
x3 step
kizami
y1 from
y2 to
y3 step

x:=x1
repeat
y:=y1
f1:=(fnf(x+y)-fnf(x-y))/(2*y)
f2:=(fnf(x+y)-2*fnf(x-y)+fnf(x-y)/y^2
f:=fnf(x)
y:=y*y3
if y x:=x+x3
label1
if x>x2 then end
until 0

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