[Matlab] Intégrale du produit de 2 fonctions
Résolu/Fermé
yacine
-
17 mai 2009 à 13:23
Fee Fay Messages postés 635 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 31 mai 2009 - 19 mai 2009 à 13:43
Fee Fay Messages postés 635 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 31 mai 2009 - 19 mai 2009 à 13:43
A voir également:
- [Matlab] Intégrale du produit de 2 fonctions
- Clé de produit windows 10 - Guide
- 2 comptes whatsapp - Guide
- Word numéro de page 1/2 - Guide
- 2 ecran pc - Guide
- Jdownloader 2 - Télécharger - Téléchargement & Transfert
2 réponses
Fee Fay
Messages postés
635
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
31 mai 2009
375
17 mai 2009 à 15:37
17 mai 2009 à 15:37
Bonjour mon ami !
En fait, c'est très simple, mais encore faut-il le savoir :-D
C'est écrit dans l'aide (help quad ou doc quad), mais il est vrai qu'on y fait pas nécessairement attention, d'ailleurs je n'y avais pas fait attention moi-même la première fois :-(
En fait c'est tout à fait logique si l'on considère la façon dont va procéder Matlab pour calculer numériquement l'intégrale d'une fonction y sur un intervalle [a,b].
Pour simplifier et pour résumer, Matlab va calculer y(x1), y(x2), ..., y(xn) pour une subdivision (xi) de [a,b] et évaluer l'intégrale par quadrature de Simpson. Et pour évaluer chaque y(xi), il le fera vectoriellement comme à son habitude : y(x) où x=[x1,x2, ...,xn].
Il s'agissait de la partie explications ;-)
Pour la pratique donc, il faut calculer le produit de tes fonctions g et h pour qu'il puisse être évalué pour une variable vectorielle x, ceci se fait tout simplement en ajoutant un point pour le produit lorsque tu définis y :
Mais avec quelques essais classiques, cela semble donner de bons résultats quand même ;-)
Je te souhaite une bien bonne journée !
En fait, c'est très simple, mais encore faut-il le savoir :-D
C'est écrit dans l'aide (help quad ou doc quad), mais il est vrai qu'on y fait pas nécessairement attention, d'ailleurs je n'y avais pas fait attention moi-même la première fois :-(
>> help quad [...] Y=FUN(X) should accept a vector argument X and return a vector result Y, the integrand evaluated at each element of X. [...]Ta fonction y doit pouvoir accepter un vecteur comme argument et retourner un vecteur.
En fait c'est tout à fait logique si l'on considère la façon dont va procéder Matlab pour calculer numériquement l'intégrale d'une fonction y sur un intervalle [a,b].
Pour simplifier et pour résumer, Matlab va calculer y(x1), y(x2), ..., y(xn) pour une subdivision (xi) de [a,b] et évaluer l'intégrale par quadrature de Simpson. Et pour évaluer chaque y(xi), il le fera vectoriellement comme à son habitude : y(x) où x=[x1,x2, ...,xn].
Il s'agissait de la partie explications ;-)
Pour la pratique donc, il faut calculer le produit de tes fonctions g et h pour qu'il puisse être évalué pour une variable vectorielle x, ceci se fait tout simplement en ajoutant un point pour le produit lorsque tu définis y :
g=@(x)(exp(2*x)); h=@(x)(besselk (0,5*x)+besselk (0,2*x)); y=@(x)(g(x).*h(x)); f=quad(y,0,2); % Sans le x iciCela dit, les fonctions de Bessel modifiées de seconde espèce ont une singularité en 0, par conséquent, il se peut que le calcul numérique de cette intégrale n'ait pas la précision qu'aurait celui qu'un intégrale régulière.
Mais avec quelques essais classiques, cela semble donner de bons résultats quand même ;-)
>> quad(@(x)(log(x)),0,1)+1 ans = -6.8696e-006 >> quad(@(x)(1./sqrt(x)),0,1)-2 ans = 1.0609e-005La précision est environ celle escomptée par la tolérance d'erreur absolue par défaut qui est de 1.0e-6. Par contre, Matlab commence a faire la tête pour la fonction y : x → 1/√x quand on demande une très grande précision.
>> quad(@(x)(log(x)),0,1,1e-12)+1 ans = -9.5619e-012 >> quad(@(x)(1./sqrt(x)),0,1,1e-12)-2 Warning: Minimum step size reached; singularity possible. > In quad at 103 ans = -2.0361e-010Et la singularité des fonctions de Bessel modifiées de la seconde espèce est une singularité en 1/√x.
Je te souhaite une bien bonne journée !
Fee Fay
Messages postés
635
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
31 mai 2009
375
19 mai 2009 à 13:43
19 mai 2009 à 13:43
Il n'y a pas de quoi yacine5 ;-)
À la prochaine !
À la prochaine !
18 mai 2009 à 00:47