• Aucun résultat trouvé

Projet 2

N/A
N/A
Protected

Academic year: 2022

Partager "Projet 2"

Copied!
11
0
0

Texte intégral

(1)

Projet 2

Dalissier Eric

(2)

1 Introduction

On a sous quelque hypoth`ese et raisonnement issue des math´emathiques probabilistes, l’´equation de Black-Scholes sous la forme suivante :





∂u

∂t − σ12x2 2

2u

∂x2 − σ22y2 2

2u

∂x2 −qσ1σ2xy ∂2u

∂x∂y −rx∂u

∂x −ry∂u

∂y +ru= 0 u(x, y,0) = (K−x−y)+ sur ∂Ω

u(L, y, t) =u(x, L, t) = 0 sur ∂Ω

(1)

Ici, on pose Ω=(0, L)2.

On doit ´ecrire l’´equation (1) sous forme divergentiele, c’est `a dire de la forme :

∂u

∂t −div(K∇u) +µ∇u+νu= 0 (2)

On d´eduit tout de suite que les termes : ∂u

∂t etu restent inchanger.

D’o`u :

ν = r Il nous reste donc `a identifier :

σ21x2 2

2u

∂x2 − σ22y2 2

2u

∂x2 −qσ1σ2xy ∂2u

∂x∂y −rx∂u

∂x −ry∂u

∂y avec −div(K∇u) +µ∇u

Pour cela nous avons d´evelopp´e −div(K∇u) puis identifi´e les d´eriv´ees partielles secondes. Cela nous a donn´e :

K =

σ21x2 2

1σ2xy qσ1σ2xy 2

2

σ22y2 2

Comme les composantes de K d´ependent de x et de y, ces d´eriv´ees par rapport a l’une o`u l’autre des variables ne sont pas nulles. C’est d’ailleurs ce qui nous permet de trouver ν.

On a :

µ∇u−K000 ∂u∂x−K010 ∂u∂y −K100 ∂u∂x −K110 ∂u∂y = −rx −ry ∂u

∂x∂u

∂y

On a apr`es avoir remplac´e et identifi´e : µ=

x(−qσ1σ2

2 −σ21 +r) y(−qσ1σ2

2 −σ22+r)

 (3)

On va ensuite ´ecrire sous forme variationnelle l’´equation (3). Comme le temps et l’espace n’ont pas du tout le mˆeme comportement. On va se servir d’une approximation par diff´erence finie pour la partie en temps de l’´equation, et d’´element fini pour la partie en espace. Dans le calcule de la formulation variationnelle, on ne prendra pas en compte le terme ∂u∂t :

On prend V ={v ∈H1 tel que x∂v∂x ∈L1(Ω) et v = 0 si x=L ouy =L}.

On multiplie l’´equation (3) par v ∈V puis on int´egre en espace donc sur [0, L].

(3)

R

(−div(K∇u)v +µ∇uv+νuv) dxdy = 0 On utilise une formule de Green :

R

(Kt∇u∇v+µ∇u v+νuv )dxdy−R

ΓK∇u.−→n vdΓ = 0 On veut que le terme en R

ΓK∇u.−→n vdΓ soit nul. On a d´ej`a la condition v = 0 en x = L et y=L. Il nous reste donc :

R

Γx=0K∇u.−→n vdΓ et R

Γy=0K∇u.−→n vdΓ

On pose donc la condition ∇u = 0 pour x = 0 ou y = 0. Ainsi on retombe sur l’´equation que l’on trouve par les distributions.

On a donc le probl`eme variationnelle de (3) suivant : Trouver u∈ V tel que pour toutv∈ V :

AvecV ={v ∈ L2(Ω),∂v

∂x ∈ L2(Ω),∂v

∂y ∈ L2(Ω), ∂v

∂−→ν ∈ L21)S

L24)}

 R

( v∂u∂t +Kt∇u∇v+µ∇u v+νuv )dxdy= 0 K∇u.−→n = 0 pour x= 0

K∇u.−→n = 0 pour y= 0

(4)

On discr´etise la formulation variationnelle afin de pouvoir l’´etudier num´eriquement.

Pour le temps, on utilisera un sch´ema d’Euler semi-implicite.

Pour l’espace, on utilisera la m´ethode des ´el´ements finis de degr´e 1 sur des triangles.

On ´ecrit les wh sur chaque triangle car si x∈Tk (le k`eme triangle) alors : whk(x, y) = whk(q0kk0(x, y) +whk(q1kk1(x, y) +wkh(qk2k2(x, y) qki ´etant les sommets du triangle Tk.

λki(x, y) sont les coordonn´ees barycentrique de Tk.

Comme la restriction au triangle Tk estP1 et que les wkh(qki)∈ R , on a que les λki(x, y) ∈P1. Donc on peut les ´ecrire sous la forme :

λki(x, y) =ai+bix+ciy pour i = 0, 1, 2

On a enfin que λki(qkj) =δij. ( cela traduit la propri´et´e que les coordonn´ees barycentrique d’un sommet valent 1 en ce sommet et 0 ailleurs. Avec ces deux propri´et´es de λki, on a que :

wkh(qik) =wkh(q0kk0(qik) +whk(q1kk1(qik) +whk(q2kk2(qki) = δij avec j=0,1,2

On se ram`ene donc a la mˆeme situation qu en 2 dimensions. Avec wh la base canonique de V0h ={vh ∈ L2(Ω), ∂vh

∂x ∈ L2(Ω), ∂vh

∂y ∈ L2(Ω), ∂v

∂−→ν ∈ L21)S

L24), vh = 0 pour t= 0}.

Pour d´eterminer lesai, bi ,ci, on se sert de la propri´et´e suivante : les λki valent 1 au sommet qki et 0 au sommet qkj pourj 6=i. On obtient ainsi le syst`eme suivant :

λk0(qk0) =a0+b0xk0 +c0y0k = 1 λk0(qk1) =a0+b0xk1 +c0y1k = 0 λk0(qk2) =a0+b0xk2 +c0y2k = 0

(4)

On applique une m´ethode de Kramer pour r´esoudre ce syst`eme, on obtient :

λk0 =

−→

q1kqk

−→

q2kqk

−→

q1kq0k

−→

q2kq0k

(5)

avec qk= x

y

. On a de mˆeme : λk1 =

−→

q2kqk

−→

q0kqk

−→

q2kq1k

−→

q0kq1k λk2 =

−→

q0kqk

−→

q1kqk

−→

q0kq2k

−→

q1kq2k Ou ´ecrit autrement :

λk0 = (xk1yk2 −xk2y1k)−(yk2 −y1k)x+ (xk1 −xk2)y (xk1 −xk0)(y2k−y0k)−(yk1 −yk0)(xk2 −xk0) λk1 = (xk2yk0 −xk0y2k)−(yk0 −y2k)x+ (xk2 −xk0)y (xk2 −xk1)(y0k−y1k)−(yk2 −yk1)(xk0 −xk1) λk2 = (xk0yk1 −xk1y0k)−(yk1 −y0k)x+ (xk0 −xk1)y (xk0 −xk2)(y1k−y2k)−(yk0 −yk2)(xk1 −xk2)

(6)

Et la propri´et´e des coordonn´ees barycentrique : λk0k1k2 = 1

On aura ainsi les coordonn´ees barycentriques de chaque point dans chaque triangles du maillage facilement, en fonction des coordonn´ees des sommets du triangles.

Maintenant interessons-nous `a la formule `a discr´etiser.

Donc on obtient la formulation suivante apr`es avoir discr´etis´e avec le sch´ema d’Euler semi- implicite puis pass´e sous forme variationnelle :

∀v ∈V0h

Z

(um+1v−umv

δt +K∇um+1∇v +µ∇umv+νum+1v)dxdy = 0 puis on remplace les v et les um+1 et um par leur expression dans la base wi deV0h : uh = X

i/qj∈Γ/

uh(q(j))w(j) etvh = X

i/qi∈Γ/

w(i) On obtient ainsi :

Z

(vum+1−vum

δt +

X

i/qi∈∂Ω/

[(K∇(um+1h (q(j))w(j))∇(w(i))+

µ∇(umh(q(j))w(j))w(i)+

νum+1h (q(j))w(j)w(i)])dxdy= 0

(5)

On a que Um = X

j/qj∈∂Ω/

umh(q(j)). De mˆeme pour Um+1. En multipliant tout pourδt6= 0, on a : X

k/Tk∈∂Ω/

Z

Tk

((wj, wi)Um+1−(wj, wi)Um+

δt(K∇wj,∇wi)Um+1+δtµ(∇wj, wi)Um+δtν(wj, wi)Um+1)dxdy = 0 On factorise ensuite par Um etUm+1, et met Um d’un cˆot´e du signe ´egale et Um+1. Finalement on a :

((wj, wi) +δt[(K∇wj,∇wi) +ν(wj, wi)])Um+1 = ((wj, wi)−δt[µ(∇wj, wi)])Um (7) Sur chaque Tk, on en prend l int´egrale.

Passons maintenant a la m´ethode de r´esolution num´erique du probl`eme. Pourm= 0, on connait U0 d’apr`es les conditions initiales du probl`eme.Donc on va r´esoudre tout d’abord :

AU1 =BU0 (8)

AvecAi,j = X

i,qi∈Ω

Z

Tk

((wj, wi) +δt[(K∇wj,∇wi) +ν(wj, wi)])dxdy et Bi,j = X

i,qi∈Ω

Z

Tk

((wj, wi)−δt[µ(∇wj, wi)])dxdy

Une fois ce syst´eme r´esolut en rajoutant pour les points du maillage sur le bord les conditions ad´equates.

On r´esoud pour m = 1, car on connaˆıtra alors U1. On peut calculer ainsi tout de mani`ere r´ecurcive tous les Um. On laisse ensuite tourner notre programme sfemGC2.cpp. Qui r´esoudra tout cela.

(6)

2 Etude par diff´ erences finies

On va faire la d´eriv´ee par rapport `a K et `a q par diff´erence fini. Tout d abord au lieu de recalculer une nouvelle fois le vecteur solution. Nous le stockons. Ensuite on va refaire le calcule pour une autre valeur de K ou de q, selon la d´eriv´ee voulue. Enfin pour terminer, on regarde quel ´etait le K ou le q le plus grand en fonction de K et q initiale. Si la deuxi`eme variable rentr´ee est plus grande, on prendra la valeur n´egative du vecteur solution. En r´esumer :

Pour la d´eriv´ee par rapport a K

On fait uM=uK−uK0

K−K0 si K > K0 sinon uM=−uK−uK0

K−K0

Pour la d´eriv´ee par rapport a q

On fait uM=uq−uq0

q−q0 si q > q0 sinon uM=−uq−uq0

q−q0

3 Etude par diff´ erentiation automatique

On a chang´e les double enddouble, dans R2.hpp. On a aussi pour cela rajouter le #include

”ddouble.h”. Puis on a retir´e letypedef R dans DA.cpp. Enfin on a remplac´e#include ”GC.hpp”

par #include ”GCDA.hpp” dans DA.cpp. Pour le reste, cela a ´et´e du d´ebugage, par exemple retirer les op´erateurs qui posent des probl´emes de choix au compilateur.

Enfin pour le faire fonctionner, on initialise la 2i`eme variable de chaque param`etre a 0.. Et l on met 1 a la variable K si l’on veut la d´eriv´ee par rapport `a K.

La diff´erentiation automatique est une mani`ere num´erique de calculer les d´eriv´ees, et justement elle est en cela beaucoup plus longue que la m´ethode des diff´rences finies, car demande plus de calcul. Mais cela donne une bonne estimation de la d´eriv´ee que l’on doit obtenir. Cette m´ethode peut donc valider ou non le calcul d’une d´eriv´ee.

(7)

comparaison entre diff´erence fini en vert et diffrentiation automatique en rouge pour q

(8)

comparaison entre diff´erence fini en vert et diffrentiation automatique en rouge pour K

4 Open GL

Pour la programmation des isolignes, nous avons cr´e´e plusieurs sous programme. Tout d’abord isolect qui charge le fichier ”isoval.dat” contenant la liste des isovaleurs `a tracer. Il charge tout cela dans un vecteur auquel il rajoute en premi`ere et derni`ere ligne une valeur tr`es petite , et une valeur tr´es grande respectivement.Cela permet d’´eviter les surprises d’isolignes non colori´ees.

A la suite de cela on a modifi´e le programmeSetColor, pour qu’il puisse attribuer, une couleur a chaque isoligne.

Ensuite on a rencontr´e le probl`eme de savoir o`u une isoligne coupait chacun des triangles. On a donc cr´e´e le programme Labeliseur. Enfin on a cr´e´e le programme Calpoint qui calcule le point d’intersection entre une isoligne et le cot´e d’un triangle. Pour se faire, on se sert d une m´ethode de proportionnalit´e entre l’isovaleur et la diff´erence des coordonn´eesz de sommets de ce segment. Cette m´ethode a malheureusement ses limites dans le cas de surface courbe, si le maillage est trop grossier. Voila une visualisation de ce que l’openGL fait :

(9)

Visualisation de la solution de l’´equation de black and scholes

(10)

5 Programmes et r´ esultats :

Les codes rajout´es `a sf emGC2.cpp risquant d’encombrer le rapport. Nous demanderons au lecteur d’aller le voir si il veut plus d’information.

Dans les modifications faites, on a : chang´e la condition initiale en temps

fait un chargement des donn´ees initiales grace au fichier ”projet.txt”

une fonctionne qui calcul le barycentre, et peut le stocker dans ”g.data”

calculer les constantes K µ`a partir des coordonn´ees du barycentre de chaque triangle prend en compte des conditions aux limites sp´ecifiques du probl´eme ( nulles sur Γ1 et Γ4 ) modifi´e matlap2d pour prendre en compte le terme en (∇wj, wi) de B

rajouter la sortie du fichier ”uh.txt” pour FreeFem++

creation de fichier d’execution pour FreeFemm++, et pour gnuplot

fait un menu int´ractif dans sf emGC2 qui permet d’obtenir tous les r´esultats du projet

Ensuite on a aussi ´ecrit un programme en java, qui permet de rentrer les donn´ees. Voir pour le codeentreur.java. Il poss`ede mˆeme un bouton qui efface la fenˆetre et quitte le programme. Les donn´ees sont stock´ees dans ”projet.txt”.

(11)

6 Remerciements

Je tiens `a remercier tout particulierement, pour leur aide tr`es pr´ecieuse, Messieur Alain PERRONNET et Hanen AMOR, sans qui ce projet n’aurait pu avancer.

Références

Documents relatifs

Notons I l’un des

• Si les suites (u 2n ) et (u 2n+1 ) convergent vers une mˆeme limite ℓ, alors (u n ) converge ´egalement vers ℓ.. • Utilisation de suites extraites pour ´etablir la

[r]

[r]

TES 5 Interrogation 1A 12 septembre 2018 R´epondre aux questions sur la feuille... TES 5 Interrogation 1B 12 septembre 2018 R´epondre aux questions sur

Proposer une famille (φ k ) k de fonctions de base permettant d’approcher θ par une fonction affine par morceau qui v´ erifie les conditions aux limites de p´ eriodicit´ e

Soit k un entier naturel

D´ eterminer un intervalle de confiance asymptotique bilat´ eral sym´ etrique de niveau (1 −α) pour θ en utilisant chacun des estimateurs pr´ ec´ edents?. D´ eterminer un