新しく発言する  EXIT  インデックスへ
和の公式

  和の公式 しばっち 2008/02/10 17:36:38 
  !ベルヌーイ多項式からΣi^kを求める 山中和義 2008/02/12 15:00:46 
   └!ベルヌーイ数からΣi^kを求める 山中和義 2008/02/12 16:26:21 
    └!ライプニッツの方法からΣi^kを求める 山中和義 2008/02/12 22:29:13  (修正1回)

Re: !ベルヌーイ数からΣi^kを求める  返事を書く  ノートメニュー
山中和義 <drdlxujciw> 2008/02/12 22:29:13 ** この記事は1回修正されてます
!ライプニッツの方法からΣi^kを求める

!参考 http://www004.upp.so-net.ne.jp/s_honma/sum/sum.htm

!an=nC0*a0 + nC1*b1 + nC2*c2 + nC3*d3 + …

!Σi^2の場合
!(0) 1 5 14 30 55 91 140 204 285 385 … a0,a1,a2,a3,… ak=Σi^k
! 0 (1) 4 9 16 25 36 49 64 81 100 … b0,b1,b2,b3,… 階差数列
! 0 0 (3) 5 7 9 11 13 15 17 19 … c0,c1,c2,c3,… 階差数列
! 0 0 0 (2) 2 2 2 2 2 2 2 … d0,d1,d2,d3,… 階差数列
! 0 0 0 0 (0) 0 0 0 0 0 0 … e0,e1,e2,e3,… 階差数列
!  :
!  :
!Sn=nC0*0+nC1*1+nC2*3+nC3*2 ※nC4*e4以降は0
! =1*0+n*1+n(n-1)/2!*3+n(n-1)(n-2)/3!*2


OPTION ARITHMETIC rational !有理数で計算する

OPTION BASE 0

LET maxlevel=30 !最高次数


!※多項式の計算
!1変数Xの多項式(N次)のCi*X^iの係数を、配列C(i)=Ciで表す。
SUB poly_mul(n,a(),b(), x()) !乗算x=a*b
DIM xx(100)
MAT xx=ZER(2*n)
FOR i=n TO 0 STEP -1
FOR j=n TO 0 STEP -1
LET xx(i+j)=xx(i+j)+a(i)*b(j) !分配する
NEXT j
NEXT i
MAT x=xx !copy it
END SUB

!その他
DIM c1(100)
MAT c1=ZER(maxlevel)
LET c1(0)=1 !定数1


SUB xxx(n,k, w()) !変数nの多項式 n*(n-1)*(n-2)*…*(n-k+1)/k! ※nCk
DIM T1(100)
MAT T1=ZER(n)
LET T1(1)=1 !n-0

MAT w=ZER
LET w(0)=1 !1

IF k>0 THEN
FOR p=1 TO k
CALL poly_mul(n,w,T1, w) !1*(n-0)*(n-1)*…*(n-k+1)
MAT T1=T1-c1 !n-p
NEXT p

MAT w=(1/fact(k))*w !/k!
ELSEIF k=0 THEN
EXIT SUB
ELSE
PRINT "未定義です。";k
STOP
END IF
END SUB
!------------------------------ ここまでがサブルーチン


LET k=2 !Σ[i=1,n]i^k

DIM a(maxlevel,maxlevel)
LET s=0
FOR i=1 TO maxlevel !a0=0
LET s=s+i^k !ai
LET a(0,i)=s
NEXT i
FOR i=1 TO maxlevel !階差数列 bn,cn,dn,…
FOR J=i TO maxlevel
LET a(i,J)=a(i-1,J)-a(i-1,J-1)
NEXT J
NEXT i

MAT PRINT a



DIM w(maxlevel*2)
CALL xxx(maxlevel,q, w) !nC0
MAT w=a(0,0)*w !*a0

LET q=1
DO WHILE a(q,q)>0 !対角線の成分
DIM T2(maxlevel*2)
CALL xxx(maxlevel,q, T2) !nCk

MAT T2=a(q,q)*T2 !*b1,*c2,*d3,…
MAT w=w+T2

LET q=q+1 !次へ
LOOP

MAT PRINT w !係数のみ表示する c0+c1*n+c2*n^2+ … + cn*n^n


END


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