| 
    
     |  | ▼ジュン さん: こんばんは。
 
 >例えば,Tn=Σ(i=1⇒n)Wi×Tn-i という数値計算をexcelで行いたいとき,
 >初期条件として,
 >T0=0
 >Wi:i=1〜nのときの値(既知)
 >が与えられたときのTnの値を求めたいのですが,
 >
 >1.T1を求めるとき,T1=W1×T0
 >2.T2を求めるとき,T2=W1×T1+W2×T0
 >3.Tnを求めるとき,Tn=W1×Tn-1+W2×Tn-2+・・・
 >となっていきますよね。nの値が小さければ問題ないのですが,
 >nが100以上とかになると,Wi×Tn-1をうまく表現することができません。
 >どういう式をたてればよいでしょうか
 VBAで良いんですよね?
 W1〜Wnは、アクティブシートのセルA1〜Anに想定値を乱数で発生させた例です。
 
 '================================================================
 Sub test()
 Dim n As Long
 n = 100 '←この値を変更して確認してみて下さい
 With Range("a1:a" & n)
 .Formula = "=int(rand()*" & n & ")+1"
 .Value = .Value
 End With
 MsgBox tn(n, 2)
 End Sub
 '=============================================================
 Function tn(n As Long, t0 As Long) As Double
 'Tn=Σ(i=1⇒n)Wi×Tn-iを計算する
 'input : n 求めたい数列値、t0--初期値
 'output: tn 結果
 Dim idx As Long
 Dim jdx As Long
 ReDim ans(n) As Double
 ans(0) = t0
 For idx = 1 To n
 ans(idx) = 0
 For jdx = idx - 1 To 0 Step -1
 ans(idx) = ans(idx) + Range("a" & (idx - jdx)).Value * ans(jdx)
 Next
 Next
 tn = ans(UBound(ans()))
 End Function
 
 ただ、値がかなり大きくなるので有効桁数をオーバーしてしまいますね!!
 まずは、nに小さい数字を指定して確認してみて下さい。
 
 
 |  |