新しく発言する  EXIT  インデックスへ
εアルゴリズムによる無限級数の和の近似値

  εアルゴリズムによる無限級数の和の近似値 山中和義 2008/02/16 10:55:05 
  つづき 山中和義 2008/02/16 10:58:22 

  εアルゴリズムによる無限級数の和の近似値 山中和義 2008/02/16 10:55:05   ツリーへ

εアルゴリズムによる無限級数の和の近似値  返事を書く  ノートメニュー
山中和義 <drdlxujciw> 2008/02/16 10:55:05
!εアルゴリズムによる無限級数(ΣAn)の「級数の和」の近似値


!参考 http://www.mit.msn.to/algorithm/series_epsilon.html

DEF XOR(x,y)=MOD(x+y,2) !排他的論理和

FUNCTION EpsilonAlgorithm(a(),n) !数列{an}
DIM s(0 TO 10000, 0 TO 1)
MAT s=ZER(n+1,2) !0から
LET sum=0
FOR i=0 TO n !単純な加算
LET sum=sum+a(i)
LET s(i,0)=sum !a(0)+a(1)+a(2)+ ... +a(i)
NEXT i
PRINT sum;"=Σan"

LET col=1 !奇数列目、偶数列目
FOR i=n-1 TO 1 STEP -1
FOR j=0 TO i-1
LET tmp=s(j+1,XOR(col,1)) - s(j,XOR(col,1))
IF tmp<>0 THEN
LET s(j,col)=s(j+1,col) + 1/tmp !右=左+1/(下-上)の計算
ELSE
PRINT "下=上",i;j
GOTO 100 !下=上になれば戻る
END IF
NEXT j
LET col=XOR(col,1) !col=1,0,1,0,1, ... ※1とのXOR
NEXT i
100
LET EpsilonAlgorithm=s(0,0)
END FUNCTION



DIM a(0 TO 10000) !数列 an

!公比数列 An=a*r^(n-1) n=0,1,2,3,…
!公比数列の和 Sn=a*(1-r^n)/(1-r)
!極限 lim Sn=0.9*(1-0)/(1-0.1)=1

LET n=5 !第n項
MAT a=ZER
FOR i=0 TO n !初項0.9、公比0.1 ※0.999999…
LET a(i)=0.9*0.1^i
NEXT i

PRINT EpsilonAlgorithm(a,n)
PRINT 1 !1=0.999999…
PRINT

  つづき 山中和義 2008/02/16 10:58:22   ツリーへ

Re: εアルゴリズムによる無限級数の和の近似値  返事を書く  ノートメニュー
山中和義 <drdlxujciw> 2008/02/16 10:58:22
つづき


!●収束が遅い場合

!log(x+1)=x-x^2/2+x^3/3-x^4/4+ … ※1

!!!LET n=10000 !第n項 ※単純な加算は精度をあげる
LET n=15 !第n項
MAT a=ZER
FOR i=0 TO n !1,-1/2,1/3,-1/4,…
LET a(i)=(-1)^i/(i+1)
NEXT i

PRINT EpsilonAlgorithm(a,n)
PRINT LOG(2)
PRINT



!※1より、1/2*log(2)=1/2*(1-1/2+1/3-1/4+ …)=1/2-1/4+1/6-1/8+ …

LET n=15 !第n項
MAT a=ZER
FOR i=1 TO n+1 !1/2,-1/4,1/6,-1/8,…
LET a(i-1)=(-1)^(i+1)/(2*i)
NEXT i

PRINT EpsilonAlgorithm(a,n)
PRINT LOG(2)/2
PRINT



!tan-1(x)=x-x^3/3+x^5/5-x^7/7+ …

LET n=15 !第n項
MAT a=ZER
FOR i=0 TO n !グレゴリ・ライプニッツ級数 1,-1/3,1/5,-1/7,…
LET a(i)=(-1)^i/(2*i+1)
NEXT i

PRINT EpsilonAlgorithm(a,n)
PRINT PI/4
PRINT



LET n=50 !第n項
MAT a=ZER
FOR i=1 TO n+1 !1/(1*3),1/(5*7),1/(9*11),…
LET a(i-1)=1/((4*i-3)*(4*i-1))
NEXT i

PRINT EpsilonAlgorithm(a,n)
PRINT PI/8
PRINT



LET n=200 !第n項
MAT a=ZER
FOR i=1 TO n+1 !オイラー級数 1,1/4,1/9,1/16,1/25,… 自然数の2乗の逆数の和
LET a(i-1)=1/i^2
NEXT i

PRINT EpsilonAlgorithm(a,n)
PRINT PI^2/6
PRINT



!●収束が速い場合

!e^x=1/0!+x/1!+x^2/2!+x^3/3!+ …

LET n=15 !第n項
MAT a=ZER
FOR i=0 TO n !自然対数の底 1/0!,1/1!,1/2!,1/3!,…
LET a(i)=1/fact(i)
NEXT i

PRINT EpsilonAlgorithm(a,n)
PRINT EXP(1)
PRINT



!●精度が期待できない場合

LET n=20 !第n項
MAT a=ZER
FOR i=0 TO n !(1/1-1/2)+(1/2-1/3)+(1/3-1/4)+…
LET a(i)=1/(i+1)-1/(i+2)
NEXT i

PRINT EpsilonAlgorithm(a,n)
PRINT 1
PRINT



LET n=200 !第n項
MAT a=ZER
FOR i=1 TO n+1 !1/(1*2)+1/(2*3)+1/(3*4)+…
LET a(i-1)=1/(i*(i+1))
NEXT i

PRINT EpsilonAlgorithm(a,n)
PRINT 1
PRINT



END


 インデックスへ  EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。