1

J'ai un petit soucis... Tout petit...
J'ai à claucler une intégrale double d'une gaussienne. Jusque là, ça va.
Le problème est que j'aimerai bien faire un changement de variable vectorielle dans le tas, et que c'est pas si évident...
La formule :
f(u,v) = int(int(1/sqrt(2*Pi)^2*1/det(R)*exp(-t' * inv(R^2)*t),x,0,u),y,0,v)
Avec R une matrice de corrélation 2*2
t = [x y], ' est l'opérateur de transposition
J'aimerai faire r = R*t, et j'ai un problème au moment de définir les dx et dy...
Qqn a une idée ?
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

2

Il faut repasser à l'intégrale d'aire:
int(int(...,x,0,u),y,0,v)=int(...,[x,y],]0,u[×]0,v[)=int(.../|det(R)|,R([x,y]),R(]0,u[×]0,v[))
et après, tu te débrouilles pour redécouper R(]0,u[×]0,v[) en une intégrale double.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3

Kevin Kofler :
Il faut repasser à l'intégrale d'aire:
int(int(...,x,0,u),y,0,v)=int(...,[x,y],]0,u[×]0,v[)=int(.../|det(R)|,R([x,y]),R(]0,u[×]0,v[))
et après, tu te débrouilles pour redécouper R(]0,u[×]0,v[) en une intégrale double.

génial...
Merci, je vais voir ça cet après-midi wink
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

4

donc j'ai fini par abandonner en voyant apparaître un (a²+b²)*(du²+dv²)+2a*b*du*dv, ça décourage pour mettre correctement les bornes d'intégration, sans doute très simple, mais pour séparer en 2 produits de fonctions de répartition, c'est pas gai.
Donc j'ai repris la méthode brutale d'intégration... En remarquant une erreur sur l'intervalle d'intégration, j'ai résolu mon problème, ou presque, Matlab met 5 bonnes minutes à faire les 400 doubles intégrales demandées grin
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

5

Mais il n'y a pas besoin de passer par des du². Si tu appliques la formule de substitution des intégrales d'aires (pas celle des formes différentielles), il y a juste un déterminant par lequel diviser ou multiplier. Pour les bornes, ben comme je te l'ai expliqué, c'est l'image de l'aire. R est une matrice, donc une application linéaire, donc la tête de l'image de ton rectangle ne peut pas être tellement compliquée qu'on ne peut pas l'intégrer en intégrale double.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

6

Kevin Kofler :
Mais il n'y a pas besoin de passer par des du². Si tu appliques la formule de substitution des intégrales d'aires (pas celle des formes différentielles), il y a juste un déterminant par lequel diviser ou multiplier. Pour les bornes, ben comme je te l'ai expliqué, c'est l'image de l'aire. R est une matrice, donc une application linéaire, donc la tête de l'image de ton rectangle ne peut pas être tellement compliquée qu'on ne peut pas l'intégrer en intégrale double.

Bon, je suis reparti de 0 dans l'histoire, et maintenant ça marche. J'ai viré les changements de variables, j'ai fait ça proprement, c'est ensuite pour les bornes que j'ai joué au sale.
Ayant une matrice avec les intégrales jusqu'à une certaine valeur - croissante dans les dimensions -, j'ai plus qu'à choisir la bonne case pour obtenir ma valeur.
Temps d'exécution : trop long, mais ça marche
Et encore, au début, je faisais chaque intégrale double depuis 0, tandis que là, j'ai une matrice après - sur laquelle il faut refaire une autre intégrale double, mais ça, c'est "vite" fait... - Vive les copules gaussiennes...
Le temps passe en O(M^2*P^2) à la place de O(N^2*M^2*P^2) avec M le nombre de copules, N la précision de la première intégrale double, P la précision de l'intégrale double des copules.
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site