Main Content

cumtrapz

Integración numérica trapezoidal acumulativa

Descripción

ejemplo

Q = cumtrapz(Y) calcula la integral acumulativa aproximada de Y usando el método trapezoidal con separación unitaria. El tamaño de Y determina la dimensión en la que integrar:

  • Si Y es un vector, cumtrapz(Y) es la integral acumulativa de Y.

  • Si Y es una matriz, cumtrapz(Y) es la integral acumulativa de cada columna.

  • Si Y es un arreglo multidimensional, cumtrapz(Y) integra la primera dimensión cuyo tamaño no es igual a 1.

ejemplo

Q = cumtrapz(X,Y) integra Y respecto a las coordenadas o la separación escalar especificada por X.

  • Si X es un vector de coordenadas, length(X) debe ser igual al tamaño de la primera dimensión de Y cuyo tamaño no es igual a 1.

  • Si X es una separación escalar, cumtrapz(X,Y) equivale a X*cumtrapz(Y).

ejemplo

Q = cumtrapz(___,dim) integra en la dimensión dim mediante cualquiera de las sintaxis anteriores. Debe especificar Y y, de manera opcional, puede especificar X. Si especifica X, puede ser un escalar o un vector con una longitud igual a size(Y,dim). Por ejemplo, si Y es una matriz, cumtrapz(X,Y,2) integra cada fila de Y de manera acumulativa.

Ejemplos

contraer todo

Calcule la integral acumulativa de un vector en el que la separación entre los puntos de datos es 1.

Cree un vector numérico de datos.

Y = [1 4 9 16 25];

Y contiene valores de función para f(x)=x2 en el dominio [1 5].

Utilice cumtrapz para integrar los datos con separación unitaria.

Q = cumtrapz(Y)
Q = 1×5

         0    2.5000    9.0000   21.5000   42.0000

Esta integración aproximada produce un valor final de 42. En este caso, la respuesta exacta es un poco inferior: 4113. La función cumtrapz sobreestima el valor de la integral porque f(x) es cóncava hacia arriba.

Calcule la integral acumulativa de un vector en el que la separación entre los puntos de datos es uniforme, pero no es igual a 1.

Cree un vector dominio.

X = 0:pi/5:pi;

Calcule el seno de X.

Y = sin(X');

Integre de manera acumulativa Y con cumtrapz. Cuando la separación entre puntos es constante, pero no igual a 1, una alternativa a crear un vector para X es especificar el valor de separación escalar. En ese caso, cumtrapz(pi/5,Y) es igual que pi/5*cumtrapz(Y).

Q = cumtrapz(X,Y)
Q = 6×1

         0
    0.1847
    0.6681
    1.2657
    1.7491
    1.9338

Integre de manera acumulativa las filas de una matriz en la que los datos tengan una separación no uniforme.

Cree un vector de coordenadas x y una matriz de observaciones que tienen lugar en intervalos irregulares. Las filas de Y representan los datos de velocidad, tomados en tiempos incluidos en X, para tres pruebas diferentes.

X = [1 2.5 7 10];
Y = [5.2   7.7   9.6   13.2;
     4.8   7.0  10.5   14.5;
     4.9   6.5  10.2   13.8];

Utilice cumtrapz para integrar cada fila de forma independiente y hallar la distancia acumulativa recorrida en cada prueba. Dado que los datos no se evalúan en intervalos constantes, especifique X para indicar la separación entre puntos de datos. Especifique dim = 2, ya que los datos se encuentran en las filas de Y.

Q1 = cumtrapz(X,Y,2)
Q1 = 3×4

         0    9.6750   48.6000   82.8000
         0    8.8500   48.2250   85.7250
         0    8.5500   46.1250   82.1250

El resultado es una matriz que tiene el mismo tamaño que Y con la integral acumulativa de cada fila.

Realice integraciones anidadas en las direcciones x e y. Represente los resultados para mostrar el valor de la integral acumulativa en ambas direcciones.

Cree una cuadrícula de valores para el dominio.

x = -2:0.1:2;
y = -2:0.2:2;
[X,Y] = meshgrid(x,y);

Calcule la función f(x,y)=10x2+20y2 en la cuadrícula.

F = 10*X.^2 + 20*Y.^2;

cumtrapz integra datos numéricos en lugar de expresiones funcionales, así que, en general, no es necesario conocer la función subyacente para usar cumtrapz en una matriz de datos. En los casos en los que se conoce la expresión funcional, se puede utilizar integral, integral2 o integral3 en su lugar.

Utilice cumtrapz para aproximar la integral doble

I(a,b)=-2b-2a(10x2+20y2)dxdy.

Para realizar esta integración doble, utilice llamadas a una función anidada para cumtrapz. La llamada interna integra en primer lugar las filas de datos y, a continuación, la llamada externa integra las columnas.

I = cumtrapz(y,cumtrapz(x,F,2));

Represente la superficie que representa la función original así como la superficie que representa la integración acumulativa. Cada punto de la superficie de la integración acumulativa proporciona un valor intermedio de la integral doble. El último valor de I proporciona la aproximación general de la integral doble I(end) = 642.4. Marque este punto en la gráfica con una estrella roja.

surf(X,Y,F,'EdgeColor','none')
xlabel('X')
ylabel('Y')
hold on
surf(X,Y,I,'FaceAlpha',0.5,'EdgeColor','none')
plot3(X(end),Y(end),I(end),'r*')
hold off

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 3 objects of type surface, line. One or more of the lines displays its values using only markers

Argumentos de entrada

contraer todo

Datos numéricos, especificados como vector, matriz o arreglo multidimensional. De forma predeterminada, cumtrapz integra en la primera dimensión de Y cuyo tamaño no es igual a 1.

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

Separación de puntos, especificada como 1 (predeterminado), una separación escalar uniforme o un vector de coordenadas.

  • Si X es un escalar, especifica una separación uniforme entre los puntos de datos y cumtrapz(X,Y) equivale a X*cumtrapz(Y).

  • Si X es un vector, especifica las coordenadas de x para los puntos de datos y length(X) debe ser igual al tamaño de la dimensión de integración en Y.

Tipos de datos: single | double

Dimensión en la que operar, especificada como escalar entero positivo. Si no especifica la dimensión, el valor predeterminado es la primera dimensión del arreglo de tamaño mayor que 1.

Considere un arreglo de entrada bidimensional, Y:

  • cumtrapz(Y,1) opera en elementos sucesivos de las columnas de Y.

    cumtrapz(Y,1) column-wise computation

  • cumtrapz(Y,2) opera en elementos sucesivos de las filas de Y.

    cumtrapz(Y,2) row-wise computation

Si dim es mayor que ndims(Y), cumtrapz devuelve un arreglo de ceros del mismo tamaño que Y.

Sugerencias

  • Utilice trapz y cumtrapz para realizar integraciones numéricas en conjuntos de datos discretos. Utilice integral, integral2 o integral3 si hay disponible una expresión funcional para los datos.

  • trapz reduce el tamaño de la dimensión en la que opera a 1 y devuelve solo el valor de integración final. cumtrapz también devuelve valores de integración intermedios, preservando el tamaño de la dimensión en la que opera.

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido antes de R2006a