[C++] equation dynamique
stephane
-
lirey83 Messages postés 75 Date d'inscription Statut Membre Dernière intervention -
lirey83 Messages postés 75 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous, j'aimerais programmer une équation dynamique en C++ qui est:
f(0,x)=[K-exp(x)]+ pour x<u;
f(i,x)=0 pour x>=u;
f(i+1,x)=pn*f(i,x+sigma*sqrt(delta))+(1-pn)*f(i,x-sigma*sqrt(delta));
voila mon code:
double partiepositive (double k,double e) // renvoie la partie positive de k-e
{
if (k>e) return k-e;
else 0;
}
double phi(double u, double K,double T,double sigma,double N,double r,double i,double x)//equiation dynamique
{
double delta=T/N;
double res;
double mu=r-sigma*sigma/2;
double pn=0.5+mu*sqrt(delta)/(2*sigma);
res=partiepositive(K,exp(x));
double w1=x+sigma*sqrt(delta);
double w2=x-sigma*sqrt(delta);
if((i==0)&&(x<u))
return res;
else
{
if((i==0)&&(x>=u))
{return 0;}
else
{
if(x>=u)
return 0;
else
{
return pn*phi(u, K, T, sigma,N,r, i-1,w1)+(1-pn)*phi(u, K, T, sigma,N,r, i-1,w2);
}
}
}
}
mon problème est que l'algorithme est très lent!!! à partir de i=27..
avez-vous des améliorations pour y remédier??
merci d'avance.
f(0,x)=[K-exp(x)]+ pour x<u;
f(i,x)=0 pour x>=u;
f(i+1,x)=pn*f(i,x+sigma*sqrt(delta))+(1-pn)*f(i,x-sigma*sqrt(delta));
voila mon code:
double partiepositive (double k,double e) // renvoie la partie positive de k-e
{
if (k>e) return k-e;
else 0;
}
double phi(double u, double K,double T,double sigma,double N,double r,double i,double x)//equiation dynamique
{
double delta=T/N;
double res;
double mu=r-sigma*sigma/2;
double pn=0.5+mu*sqrt(delta)/(2*sigma);
res=partiepositive(K,exp(x));
double w1=x+sigma*sqrt(delta);
double w2=x-sigma*sqrt(delta);
if((i==0)&&(x<u))
return res;
else
{
if((i==0)&&(x>=u))
{return 0;}
else
{
if(x>=u)
return 0;
else
{
return pn*phi(u, K, T, sigma,N,r, i-1,w1)+(1-pn)*phi(u, K, T, sigma,N,r, i-1,w2);
}
}
}
}
mon problème est que l'algorithme est très lent!!! à partir de i=27..
avez-vous des améliorations pour y remédier??
merci d'avance.
A voir également:
- [C++] equation dynamique
- Tableau croisé dynamique - Guide
- Exemple tableau croisé dynamique télécharger - Télécharger - Tableur
- Liste déroulante dynamique excel - Guide
- Editeur d'équation - Télécharger - Vie quotidienne
- Sommaire dynamique word - Guide
2 réponses
Mon dieu, tu calcules plein de truc inutile : il ne faut pas initialiser dès le début des variables qui potentiellement ne seront pas utilisé.
Ensuite, utilises une variable pour stocker le résultat de sqrt(Delta), tu diviseras par 3 le temps de calcul ...
Aller, corriges et postes ton résultat, on verra si y a du mieux ;)
Ensuite, utilises une variable pour stocker le résultat de sqrt(Delta), tu diviseras par 3 le temps de calcul ...
Aller, corriges et postes ton résultat, on verra si y a du mieux ;)