Contenido principal

integral

Integración numérica

Descripción

q = integral(fun,xmin,xmax) integra numéricamente la función fun desde xmin hasta xmax mediante cuadratura adaptativa global y tolerancias a errores predeterminadas.

ejemplo

q = integral(fun,xmin,xmax,Name=Value) especifica las opciones utilizando uno o más argumentos de par nombre-valor. Por ejemplo, especifique el argumento nombre-valor WayPoints como un vector de números reales o complejos para indicar puntos específicos para que los use el integrador.

ejemplo

Ejemplos

contraer todo

Cree la función f(x)=e-x2(lnx)2.

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

Evalúe la integral desde x=0 hasta x=Inf.

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

Cree la función f(x)=1/(x3-2x-c) con un parámetro, c.

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

Evalúe la integral desde x=0 hasta x=2 en c=5.

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

Para obtener más información sobre esta técnica, consulte Parametrizar funciones.

Cree la función f(x)=ln(x).

fun = @(x) log(x);

Evalúe la integral desde x=0 hasta x=1 con las tolerancias a errores predeterminadas.

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

Después, evalúe la integral con 12 decimales de precisión. Establezca RelTol en 0 para que integral solo intente cumplir la tolerancia a errores absoluta.

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

Cree la función f(z)=1/(2z-1).

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

Realice la integración en el plano complejo a lo largo de la trayectoria triangular desde 0 hasta 1+1i hasta 1-1i hasta 0 especificando waypoints.

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

Cree la función de valores de vectores f(x)=[sinx,sin2x,sin3x,sin4x,sin5x] e intégrela desde x=0 hasta x=1. Especifique el argumento nombre-valor ArrayValued como true para evaluar la integral de una función de valores de arreglos o de valores de vectores.

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

Desde la versión R2026a

Cree la función f(x)=2x-x2 asumiendo una entrada escalar.

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

Evalúe la integral desde x=0 hasta x=1. Especifique el argumento nombre-valor Vectorized como false para calcular la integral sin usar vectorización.

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

Cree la función f(x)=x5e-xsinx.

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

Evalúe la integral desde x=0 hasta x=Inf, ajustando las tolerancias absoluta y relativa.

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

Argumentos de entrada

contraer todo

Integrando, especificado como identificador de función que define la función que se desea integrar.

En los problemas de valores escalares, la función y = fun(x) debe aceptar un argumento de vector x y devolver un resultado de vector y. Por lo tanto, fun utiliza generalmente operadores de arreglos en lugar de operadores de matrices. Por ejemplo, use .* (times) en lugar de * (mtimes).

Si especifica el argumento nombre-valor ArrayValued como true, fun debe aceptar una entrada escalar y devolver un arreglo de tamaño fijo.

Límite inferior de x, especificado como número real (finito o infinito) o número complejo (finito). Si xmin o xmax son complejos, integral aproxima la integral de línea a lo largo de la línea recta desde xmin hasta xmax.

Tipos de datos: double | single
Soporte de números complejos:

Límite superior de x, especificado como número real (finito o infinito) o número complejo (finito). Si xmin o xmax son complejos, integral aproxima la integral de línea a lo largo de la línea recta desde xmin hasta xmax.

Tipos de datos: double | single
Soporte de números complejos:

Argumentos de par nombre-valor

contraer todo

Especifique pares opcionales de argumentos como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos nombre-valor deben aparecer después de otros argumentos, pero el orden de los pares no importa.

Ejemplo: q = integral(fun,xmin,xmax,AbsTol=1e-12) establece la tolerancia a errores absoluta en aproximadamente 12 decimales de precisión.

Tolerancia a errores absoluta, especificada como un número real no negativo. integral utiliza la tolerancia a errores absoluta para limitar una estimación del error absoluto, |qQ|, donde q es el valor calculado de la integral y Q es el valor exacto (desconocido). integral podría proporcionar más decimales de precisión si reduce la tolerancia a errores absoluta.

Nota

AbsTol y RelTol funcionan de manera conjunta. integral podría satisfacer la tolerancia a errores absoluta o la tolerancia a errores relativa, pero no necesariamente ambas. Para obtener más información sobre el uso de estas tolerancias, consulte la sección Consejos.

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

Tipos de datos: double | single

Tolerancia a errores relativa, especificada como un número real no negativo. integral utiliza la tolerancia a errores relativa para limitar una estimación del error relativo, |qQ|/|Q|, donde q es el valor calculado de la integral y Q es el valor exacto (desconocido). integral podría proporcionar más dígitos significativos de precisión si reduce la tolerancia a errores relativa.

Nota

RelTol y AbsTol funcionan de manera conjunta. integral podría satisfacer la tolerancia a errores relativa o la tolerancia a errores absoluta, pero no necesariamente ambas. Para obtener más información sobre el uso de estas tolerancias, consulte la sección Consejos.

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

Tipos de datos: double | single

La función es una función de valores de arreglos, especificada como 1 (true) o 0 (false) numérico o lógico. Especifique ArrayValued como true o 1 para indicar que fun es una función que acepta una entrada escalar y devuelve un vector, una matriz o una salida de arreglo en ND.

EL valor predeterminado de false indica que fun es una función que acepta una entrada de vector y devuelve una salida de vector.

Desde R2026a

Realizar un cálculo vectorizado, especificado como 1 (true) o 0 (false) numérico o lógico. De forma predeterminada, Vectorized es true y el cálculo de la integral se vectoriza para que se ejecute más rápido. Para las funciones de valores escalares, la función integrando y = fun(x) debe aceptar un argumento de vector x y opera elemento por elemento, lo que devuelve un resultado de vector y.

Si especifica Vectorized como false, la función integrando acepta solo un argumento escalar x y devuelve un resultado escalar y.

Nota

Si especifica ArrayValued como true, integral ignora el valor de Vectorized.

Waypoints de integración, especificados como un vector de números reales o complejos. Utilice waypoints para indicar aquellos puntos del intervalo de integración que desea que el integrador utilice en la malla inicial:

  • Añada más puntos de evaluación cerca de características interesantes de la función, como un extremo local.

  • Realice una integración eficiente a lo largo de las discontinuidades del integrando especificando las ubicaciones de dichas discontinuidades.

  • Lleve a cabo integraciones de contorno complejas especificando números complejos como waypoints. Si xmin, xmax o cualquier entrada del vector de waypoints son complejos, la integración se lleva a cabo en una secuencia de trayectorias en línea recta en el plano complejo. En este caso, todos los waypoints y límites de integración deben ser finitos.

No utilice waypoints para especificar singularidades. En su lugar, divida el intervalo y añada los resultados de integraciones separadas con las singularidades en los puntos finales.

Ejemplo: q = integral(fun,xmin,xmax,Waypoints=[1+1i,1-1i]) especifica dos waypoints complejos a lo largo del intervalo de integración.

Tipos de datos: double | single
Soporte de números complejos:

Argumentos de salida

contraer todo

Valor calculado de la integral, devuelvo como un escalar o arreglo numéricos.

Sugerencias

  • La función integral intenta cumplir la siguiente expresión, donde q es el valor calculado de la integral y Q es el valor exacto (desconocido).

    abs(q - Q) <= max(AbsTol,RelTol*abs(q))
    La tolerancia absoluta y relativa proporcionan una manera de compensar la precisión y el tiempo de cálculo. Normalmente, la tolerancia relativa determina la precisión de la integración. No obstante, si abs(q) es lo suficientemente pequeño, la tolerancia absoluta determina la precisión de la integración. Se recomienda especificar juntas la tolerancia absoluta y la tolerancia relativa.

  • Si especifica límites de precisión simple de la integración o si fun devuelve resultados de precisión simple, podría necesitar especificar tolerancias a errores absolutas y relativas más amplias.

Referencias

[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.

Capacidades ampliadas

expandir todo

Historial de versiones

Introducido en R2012a

expandir todo