|
▼ジュン さん:
おはようございます。
>とりあえず手計算で確認できるように,
>初期条件として,
>T0=0
>n=5
>Wi:i=1〜nのときの値
>W1=0.2 W2=0.4 ・・・ W5=1.0
↑、このWをどのようにせっていしたのかわかりません。
'=============================
Sub test()
Dim n As Long
n = 5 'ここを5としたのですよね?
'******************************************
If n > 0 Then
With Range("a1:a" & n)
.Formula = "=int(rand()*" & n & ")+1"
.Value = .Value
End With
End If
'このコードでセルA1からA5にw1〜w5に相当するサンプル値を
'設定しています。このコードからw1=0.2というサンプル値は作れないんですが・・。
'サンプル値は、整数だけの設定になっています。
'もし、w1・・・に自由に値を設定したいなら、
'******* で囲んだコードは削除して下さい。
'代わりにセルA1〜A5に0.2 0.4 ・・・ 1.0と設定して下さい
'**********************************************
MsgBox tn(n, 1)
End Sub
'=======================================================
Function tn(n As Long, t0 As double) 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
>
>と置いて解いているのですが,
> .Formula = "=int(rand()*" & n & ")+1"
>
>の部分でエラーが発生してしまいます.VBAについての
どんなエラーが内容ですか?
W1〜W5の値をどこに設定したのですか?
私が投稿したコードをそのまま実行すると
w1〜w5に値を自由に設定することはできないんですが・・・。
どこか変更しましたか?
それと私の解釈が違っているのでしょうか?
この計算結果って、T0=0の時って、常にTnは、0になるのではないのですか?
仮に
w1=1
w2=2
w3=3
として、
t0=0のとき、T3って、いくつになるんですか?0ではないんですか?
投稿したコードは、初期値が0のときは、解は0になっています。
解釈が違うなら教えて下さい。
>知識が浅いのに加え,めったに使用しないのでエラーの原因が
>何なのかも良く分かりません.よろしくお願いします.
>
>また,このような数値計算を解くにはやはりVBAでないと無理なのでしょうか.
数式では、難しいと思いますが・・・。
ちょっと、はっきり私にもエラーの内容が把握できませんが、
まず、私が投稿したコードを新規ブックで実行してみて下さい。
|
|