1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| 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);
}
}
}
} |
Partager