Overflow (erreur N°6) sur méthode de box-muller/monte-carlo - VB/VBA/VBS - Programmation
Marsh Posté le 20-10-2012 à 20:18:02
Problème résolu en mettant sqr (....) à la place de (....)^(1/2).
Si quelqu'un a une explication je suis preneur.
Marche Pas:
Code :
|
Marche:
Code :
|
Marsh Posté le 20-10-2012 à 15:40:04
Bonjour à tous,
Voilà mon soucis,
Je tente d'appliquer la formule de Box-Muller, mais mon programme indique systématiquement "Overflow" au delà de la 2499ème itération.
Je ne comprends pas pourquoi ? la limite d'un variant est bien au delà de ça normalement, non ?
Tout fonctionne très bien tant que je fais moins de 2499 itérations, une idée ? (je souhaiterais faire un millions d'itération dans l'idéal...)
Voici le code :
Sub MonteCarlo()
Dim S0 As Single
Dim T As Integer
Dim k As Single
Dim r0 As Single
Dim sigma As Double
Dim mu As Double
Dim ite As Long
Dim x1 As Variant
Dim x2 As Variant
Dim boxmul As Variant
Dim payof As Variant
Set ws1 = ThisWorkbook.Worksheets("Black-Scholes" )
SO = ws1.Range("S0" ).Value
T = ws1.Range("T" ).Value
k = ws1.Range("k" ).Value
r0 = ws1.Range("r0" ).Value
sigma = ws1.Range("sigma" ).Value
mu = ws1.Range("mu" ).Value
ite = ws1.Range("ite" ).Value
ReDim x1(ite, 1)
ReDim x2(ite, 1)
ReDim boxmul(ite, 1)
ReDim payof(ite, 1)
For i = 1 To ite
x1(i, 1) = Rnd()
x2(i, 1) = Rnd()
boxmul(i, 1) = (((-2) * WorksheetFunction.Ln(x1(i, 1))) ^ (1 / 2)) * Cos(2 * Pi * x2(i, 1))
ws1.Range("J1" ).Offset(i, 0).Value = boxmul(i, 1)
ws1.Range("J1" ).Offset(i, 1).Value = "1"
Next i
End Sub¸
Merci d'avance de votre aide !