3

anxn 行列を作成するのに助けが必要です。n は、t = 0、...、10 の時点での残りの株式数に等しくなります。最初は、合計 10 の株式があり、時間の経過とともに 1 つずつ破棄します。通ります。

行列の各要素は、sigma(i) x sigma (j) x rho に等しくなります。ここで、sigma(i)=sigma(j) = 0.25 および rho=0.2 です。

最後に、その行列にその行列の転置を掛けます。

どこからどのように始めればよいのか本当に混乱しています。あなたの助けに本当に感謝しています

Sub Matrix() 
'Sigmai 'Sigmaj 'Rho 
    Dim Sigmai, Sigmaj, Rho As Single 
    Sigmai = Range("b12").Value 
    Sigmaj = Range("b13").Value 
    Rho = Range("b14").Value 
    Dim matrixelement(10, 10) As Single 
    For n = 1 To 10 
        For m = 1 To 10 
            matrixelement(n, m) = Sigmai * Sigmaj * Rho 
            Cells(n, m) = matrixelement(n, m) 
        Next m 
    Next n 
End Sub 
4

2 に答える 2

2

コードには多くの基本的な問題があり、先に進む前に解決する必要があります。以下のコードのコメントを参照してください。

Sub Matrix()
    ' declare ALL your variables
    Dim n As Long, m As Long
    Dim ws As Worksheet

    ' specify type for all variables, otherwise they will be Variant
    Dim Sigmai As Single, Sigmaj As Single, Rho As Single

    ' Explicitly reference the required sheet
    Set ws = Sheet1 ' or ActiveSheet or whatever

    ' qualify range references with worksheet
    Sigmai = ws.Range("b12").Value
    Sigmaj = ws.Range("b13").Value
    Rho = ws.Range("b14").Value

    ' Specify required lower bound. Default base is 0
    Dim matrixelement(1 To 10, 1 To 10) As Single
    For n = 1 To 10
        For m = 1 To 10
            matrixelement(n, m) = Sigmai * Sigmaj * Rho
        Next m
    Next n

    ' return result to sheet in one go
    ws.Range("A1:J10") = matrixelement

End Sub

のために

最後に、その行列にその行列の転置を掛けます。

一部、あなたが正確に何を求めているのかMMULTわかりませんが、役立つかもしれません。

ws.Range("L1:U10") = Application.WorksheetFunction.MMult(matrixelement, matrixelement)
于 2012-07-15T07:16:44.197 に答える
0

配列に go を渡して、結果を直接ワークシートに入れることができます。事実上 1 つの大きな 2 次元配列である場合のワークシート。

Chris Neilsen のコードの共食い:

Sub Matrix()
' declare ALL your variables
Dim n As Long, m As Long
Dim ws As Excel.Worksheet

' specify type for all variables, otherwise they will be Variant
Dim Sigmai As Single, Sigmaj As Single, Rho As Single

' Explicitly reference the required sheet
Set ws = Sheet1 ' or ActiveSheet or whatever

' qualify range references with worksheet
Sigmai = ws.Range("b12").Value
Sigmaj = ws.Range("b13").Value
Rho = ws.Range("b14").Value

For n = 1 To 10
    For m = 1 To 10
        ws.cells(n,m).value = Sigmai * Sigmaj * Rho
    Next m
Next n

End Sub

私が理解していないいくつかのこと:

  • b12/b13/b14 がすべて定数の場合、マトリックス内のすべての数値は確実に同じになりますか?!
  • すべての数値が同じである場合、転置された行列を掛けると、行列の各セルのすべての数値の 2 乗になりますか?!
于 2012-07-15T20:43:15.493 に答える