[Matlab] Intégrale du produit de 2 fonctions
Résolu
yacine
-
Fee Fay Messages postés 635 Date d'inscription Statut Membre Dernière intervention -
Fee Fay Messages postés 635 Date d'inscription Statut Membre Dernière intervention -
Bonjour, a tous .....j suis un etudiant ing
j essai de ecrire programe pour calculé un integrale de deux fonction produites de la forme suivant (simplifier):
y=@(x) g(x)*h(x)
f(x)=quad(y,0,2)
sachant que:
g(x)=exp(2*x)
h(x)=(besselk (0,(5*x))+besselk (0,(2*x))).
mais le calcule me indique que il'ya un erreur (inegalité) de dimention de produit de deux matrice
j essai de calculé g(x) seul et h(x) seul et h(x)*exp(2) ...ca marche (matlab)
mais avec exp(2*x) ca march pas !!!
s'ilya des simplification ou notre resolution sur le l'integral de produit de deux fonction repond moi ... et merçi
(mon but est de calculé cette integral par un programme)
j essai de ecrire programe pour calculé un integrale de deux fonction produites de la forme suivant (simplifier):
y=@(x) g(x)*h(x)
f(x)=quad(y,0,2)
sachant que:
g(x)=exp(2*x)
h(x)=(besselk (0,(5*x))+besselk (0,(2*x))).
mais le calcule me indique que il'ya un erreur (inegalité) de dimention de produit de deux matrice
j essai de calculé g(x) seul et h(x) seul et h(x)*exp(2) ...ca marche (matlab)
mais avec exp(2*x) ca march pas !!!
s'ilya des simplification ou notre resolution sur le l'integral de produit de deux fonction repond moi ... et merçi
(mon but est de calculé cette integral par un programme)
A voir également:
- [Matlab] Intégrale du produit de 2 fonctions
- Clé de produit windows 10 gratuit - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- 2 ecran pc - Guide
- Word numéro de page 1/2 - Guide
- Faire 2 colonnes sur word - Guide
2 réponses
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 !
yacine5
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
merçi beaucoup mon ami fee fay !! et merçi de me expliqué ...