Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2246 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Overflow (erreur N°6) sur méthode de box-muller/monte-carlo

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Overflow (erreur N°6) sur méthode de box-muller/monte-carlo

n°2160835
metalikal
Posté le 20-10-2012 à 15:40:04  profilanswer
 

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 ! :D

mood
Publicité
Posté le 20-10-2012 à 15:40:04  profilanswer
 

n°2160854
metalikal
Posté le 20-10-2012 à 20:18:02  profilanswer
 


Problème résolu en mettant sqr (....)  à la place de (....)^(1/2).
Si quelqu'un a une explication je suis preneur.
 
 
Marche Pas:

Code :
  1. boxmul(i, 1) = (((-2) * WorksheetFunction.Ln(x1(i, 1))) ^ (1 / 2)) * Cos(2 * Pi * x2(i, 1))


Marche:

Code :
  1. boxmul(i, 1) = (Sqr((-2) * WorksheetFunction.Ln(x1(i, 1)))) * Cos(2 * Pi * x2(i, 1))


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Overflow (erreur N°6) sur méthode de box-muller/monte-carlo

 

Sujets relatifs
Programme C++ , erreur ? Ou ça ?Erreur à la conversion et erreur de relation sur Access
Erreur java.lang.StackOverflowErrorErreur de requetage, help.
[C#] Comment faire une méthode avec un paramètre génériqueLe if sur une valeur Null me retourne une erreur
Erreur de Link (Visual C++ 2005)erreur de bibibliothèque au 1011ieme rappel.
Pb d'overflow avec Firefox 14Erreur d'exécution 9
Plus de sujets relatifs à : Overflow (erreur N°6) sur méthode de box-muller/monte-carlo


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR