和の公式 しばっち 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 |