Contenu principal

integral

Description

q = integral(fun,xmin,xmax) calcule numériquement l’intégrale de la fonction fun de xmin à xmax en utilisant la quadrature adaptative globale avec les tolérances d’erreur par défaut.

exemple

q = integral(fun,xmin,xmax,Name=Value) spécifie des options avec un ou plusieurs arguments nom-valeur. Par exemple, spécifiez l’argument nom-valeur WayPoints sous forme de vecteur de nombres réels ou complexes pour indiquer des points spécifiques que l’intégrateur doit utiliser.

exemple

Exemples

réduire tout

Créez la fonction f(x)=e-x2(lnx)2.

fun = @(x) exp(-x.^2).*log(x).^2;

Évaluez l’intégrale de x=0 à x=Inf.

q = integral(fun,0,Inf)
q = 
1.9475

Créez la fonction f(x)=1/(x3-2x-c) avec un seul paramètre c.

fun = @(x,c) 1./(x.^3-2*x-c);

Évaluez l’intégrale de x=0 à x=2 pour c=5.

q = integral(@(x) fun(x,5),0,2)
q = 
-0.4605

Pour plus d’informations sur cette technique, consultez Parameterizing Functions.

Créez la fonction f(x)=ln(x).

fun = @(x) log(x);

Évaluez l’intégrale de x=0 à x=1 avec les tolérances d’erreur par défaut.

format long
q1 = integral(fun,0,1)
q1 = 
  -1.000000010959678

Évaluez ensuite l’intégrale avec 12 décimales de précision. Définissez RelTol à 0 pour que integral essaie seulement de respecter la tolérance d’erreur absolue.

q2 = integral(fun,0,1,AbsTol=1e-12,RelTol=0)
q2 = 
  -1.000000000000010

Créez la fonction f(z)=1/(2z-1).

fun = @(z) 1./(2*z-1);

Effectuez une intégration dans le plan complexe sur le chemin triangulaire allant de 0 à 1+1i à 1-1i à 0 en spécifiant des points de passage.

q = integral(fun,0,0,Waypoints=[1+1i,1-1i])
q = 
0.0000 - 3.1416i

Créez la fonction à valeurs vectorielles f(x)=[sinx,sin2x,sin3x,sin4x,sin5x] et calculez l’intégrale de x=0 à x=1. Définissez l’argument nom-valeur ArrayValued sur true pour évaluer l’intégrale d’une fonction utilisant des valeurs de tableau ou vectorielles.

fun = @(x) sin((1:5)*x);
q = integral(fun,0,1,ArrayValued=true)
q = 1×5

    0.4597    0.7081    0.6633    0.4134    0.1433

Depuis la version R2026a

Créez la fonction f(x)=2x-x2 qui accepte une entrée scalaire.

fun = @(x) 2*x-x^2;

Évaluez l’intégrale de x=0 à x=1. Définissez l’argument nom-valeur Vectorized sur false pour calculer l’intégrale sans utiliser la vectorisation.

q = integral(fun,0,1,Vectorized=false)
q = 
0.6667

Créez la fonction f(x)=x5e-xsinx.

fun = @(x) x.^5.*exp(-x).*sin(x);

Évaluez l’intégrale de x=0 à x=Inf en ajustant les tolérances absolue et relative.

format long
q = integral(fun,0,Inf,AbsTol=1e-13,RelTol=1e-8)
q = 
 -14.999999999998360

Arguments d'entrée

réduire tout

Intégrande, spécifié sous forme de handle de fonction définissant la fonction à intégrer.

Pour les problèmes utilisant des valeurs scalaires, la fonction y = fun(x) doit accepter un argument vectoriel x et renvoyer un résultat vectoriel y. C’est pourquoi fun utilise généralement des opérateurs de tableau plutôt que des opérateurs matriciels. Par exemple, utilisez .* (times) plutôt que * (mtimes).

Si vous spécifiez l’argument nom-valeur ArrayValued comme true, alors fun doit accepter une entrée scalaire et renvoyer un tableau de taille fixe.

Limite inférieure de x, spécifiée sous forme de nombre réel (fini ou infini) ou de nombre complexe (fini). Si xmin ou xmax est complexe, alors integral approxime l’intégrale de chemin le long de la ligne droite allant de xmin à xmax.

Types de données : double | single
Support des nombres complexes : Oui

Limite supérieure de x, spécifiée sous forme de nombre réel (fini ou infini) ou de nombre complexe (fini). Si xmin ou xmax est complexe, alors integral approxime l’intégrale de chemin le long de la ligne droite allant de xmin à xmax.

Types de données : double | single
Support des nombres complexes : Oui

Arguments nom-valeur

réduire tout

Spécifiez des paires d’arguments facultatifs en tant que Name1=Value1,...,NameN=ValueN, où Name est le nom de l'argument et Value la valeur correspondante. Les arguments nom-valeur doivent apparaître après les autres arguments, mais l’ordre des paires n’a pas d’importance.

Exemple : q = integral(fun,xmin,xmax,AbsTol=1e-12) définit la tolérance d’erreur absolue à environ 12 décimales de précision.

Tolérance d’erreur absolue, spécifiée sous forme de nombre réel non négatif. integral utilise la tolérance d’erreur absolue pour limiter une estimation de l’erreur absolue |qQ|, où q est la valeur calculée de l’intégrale et Q est sa valeur exacte (inconnue). integral peut proposer un plus grand nombre de décimales de précision si vous diminuez la tolérance d’erreur absolue.

Remarque

AbsTol et RelTol fonctionnent ensemble. integral peut respecter la tolérance d’erreur absolue ou la tolérance d’erreur relative, mais pas nécessairement les deux. Pour plus d’informations sur l’utilisation de ces tolérances, consultez la section Conseils.

Exemple : q = integral(fun,xmin,xmax,AbsTol=1e-12)

Types de données : double | single

Tolérance d’erreur relative, spécifiée sous forme de nombre réel non négatif. integral utilise la tolérance d’erreur relative pour limiter une estimation de l’erreur relative |qQ|/|Q|, où q est la valeur calculée de l’intégrale et Q est sa valeur exacte (inconnue). integral peut proposer un plus grand nombre de chiffres de précision si vous diminuez la tolérance d’erreur relative.

Remarque

RelTol et AbsTol fonctionnent ensemble. integral peut respecter la tolérance d’erreur relative ou la tolérance d’erreur absolue, mais pas nécessairement les deux. Pour plus d’informations sur l’utilisation de ces tolérances, consultez la section Conseils.

Exemple : q = integral(fun,xmin,xmax,RelTol=1e-9)

Types de données : double | single

Fonction utilisant des valeurs de tableau, spécifiée sous forme de 1 (true) ou 0 (false) numérique ou logique. Définissez ArrayValued sur true ou 1 pour indiquer que fun est une fonction qui accepte un scalaire en entrée et renvoie un vecteur, une matrice ou un tableau N-D en sortie.

La valeur par défaut false indique que fun est une fonction qui accepte un vecteur en entrée et renvoie un vecteur en sortie.

Depuis R2026a

Effectuer un calcul vectorisé, spécifié sous forme de 1 (true) ou 0 (false) numérique ou logique. Par défaut, Vectorized est défini sur true et le calcul de l’intégrale est vectorisé pour s’exécuter plus rapidement. Pour les fonctions à valeurs scalaires, la fonction intégrande y = fun(x) doit accepter un argument vectoriel x et réalise l’opération élément par élément en renvoyant un résultat vectoriel y.

Si vous définissez Vectorized sur false, la fonction intégrande accepte uniquement un argument scalaire x et renvoie un résultat scalaire y.

Remarque

Si vous définissez ArrayValued sur true, alors integral ignore la valeur de Vectorized.

Points de passage de l’intégration, spécifiés sous forme de vecteur de nombres réels ou complexes. Utilisez des points de passage pour indiquer les points de l’intervalle d’intégration que l’intégrateur doit utiliser dans le maillage initial :

  • Ajoutez d’autres points d’évaluation près de caractéristiques intéressantes de la fonction, telles qu’une valeur extrême locale.

  • Intégrez efficacement les discontinuités de l’intégrande en spécifiant leur emplacement.

  • Effectuez des intégrations de contours complexes en spécifiant des nombres complexes comme points de passage. Si xmin, xmax ou toute entrée du vecteur de points de passage est complexe, l’intégration est effectuée sur une série de chemins en ligne droite dans le plan complexe. Dans ce cas, toutes les limites d’intégration et tous les points de passage doivent être finis.

N’utilisez pas de points de passage pour spécifier des singularités. Au lieu de cela, divisez l’intervalle et additionnez les résultats des intégrations distinctes en utilisant les singularités comme points d’extrémité.

Exemple : q = integral(fun,xmin,xmax,Waypoints=[1+1i,1-1i]) spécifie deux points de passage complexes le long de l’intervalle d’intégration.

Types de données : double | single
Support des nombres complexes : Oui

Arguments de sortie

réduire tout

Valeur calculée de l’intégrale, renvoyée sous forme de scalaire ou tableau numérique.

Conseils

  • La fonction integral essaie de respecter l’expression suivante, où q est la valeur calculée de l’intégrale et Q est sa valeur exacte (inconnue).

    abs(q - Q) <= max(AbsTol,RelTol*abs(q))
    Les tolérances absolue et relative permettent de trouver le juste compromis entre la précision et le temps de calcul. En général, la tolérance relative détermine la précision de l’intégration. Toutefois, si abs(q) est suffisamment petite, la tolérance absolue détermine la précision de l’intégration. La bonne pratique consiste à spécifier à la fois une tolérance absolue et une tolérance relative.

  • Si vous spécifiez des limites d’intégration en simple précision ou si fun renvoie des résultats simple précision, vous devez peut-être spécifier des tolérances d’erreur absolue et relative plus grandes.

Références

[1] Shampine, L.F. “Vectorized Adaptive Quadrature in MATLAB®.” Journal of Computational and Applied Mathematics 211, no. 2 (February 2008): 131–40. https://doi.org/10.1016/j.cam.2006.11.021.

Capacités étendues

développer tout

Historique des versions

Introduit dans R2012a

développer tout