Contenuto principale

cumtrapz

Integrazione numerica trapezoidale cumulativa

Descrizione

Q = cumtrapz(Y) calcola l'integrale cumulativo approssimato di Y tramite il metodo trapezoidale con spaziatura unitaria. La grandezza di Y determina la dimensione lungo cui integrare:

  • Se Y è un vettore, cumtrapz(Y) è l'integrale cumulativo di Y.

  • Se Y è un vettore, cumtrapz(Y) è l'integrale cumulativo di ciascuna colonna.

  • Se Y è un array multidimensionale, cumtrapz(Y) integra sulla prima dimensione la cui grandezza non è uguale a 1.

esempio

Q = cumtrapz(X,Y) integra Y rispetto alle coordinate o alla spaziatura scalare specificata da X.

  • Se X è un vettore di coordinate, length(X) deve essere uguale alla grandezza della prima dimensione di Y la cui grandezza non è uguale 1.

  • Se X è una spaziatura scalare, cumtrapz(X,Y) è equivalente a X*cumtrapz(Y).

esempio

Q = cumtrapz(___,dim) integra lungo la dimensione dim utilizzando una qualsiasi delle sintassi precedenti. È necessario specificare Y, mentre la specifica di X è opzionale. Se si specifica X, può essere uno scalare o un vettore di lunghezza pari a size(Y,dim). Ad esempio, se Y è una matrice, cumtrapz(X,Y,2) integra ciascuna riga di Y in modo cumulativo.

esempio

Esempi

comprimi tutto

Calcolare l'integrale cumulativo di un vettore in cui la spaziatura tra i punti di dati è pari a 1.

Creare un vettore numerico di dati.

Y = [1 4 9 16 25];

Y contiene i valori delle funzioni per f(x)=x2 nel dominio [1 5].

Utilizzare cumtrapz per integrare i dati con la spaziatura unitaria.

Q = cumtrapz(Y)
Q = 1×5

         0    2.5000    9.0000   21.5000   42.0000

Questa integrazione approssimativa produce un valore finale di 42. In questo caso, la risposta esatta è leggermente inferiore, 4113. La funzione cumtrapz sovrastima il valore dell'integrale perché f(x) è concava verso l'alto.

Calcolare l'integrale cumulativo di un vettore in cui la spaziatura tra i punti di dati è uniforme, ma non uguale a 1.

Creare un vettore dominio.

X = 0:pi/5:pi;

Calcolare il seno di X.

Y = sin(X');

Integrare Y in modo cumulativo utilizzando cumtrapz. Quando la spaziatura tra i punti è costante, ma non uguale a 1, un'alternativa alla creazione di un vettore per X è quella di specificare il valore scalare della spaziatura. In questo caso, cumtrapz(pi/5,Y) equivale a pi/5*cumtrapz(Y).

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

         0
    0.1847
    0.6681
    1.2657
    1.7491
    1.9338

Integrare in modo cumulativo le righe di una matrice in cui i dati hanno una spaziatura non uniforme.

Creare un vettore di coordinate x e una matrice di osservazioni che avvengono a intervalli irregolari. Le righe di Y rappresentano i dati di velocità rilevati ai tempi contenuti in X, per tre prove diverse.

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];

Utilizzare cumtrapz per integrare in modo cumulativo ciascuna riga in modo indipendente e trovare la distanza totale percorsa in ogni prova. Poiché i dati non vengono valutati a intervalli costanti, specificare X per indicare la spaziatura tra i punti di dati. Specificare dim = 2 poiché i dati si trovano nelle righe di 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

Il risultato è una matrice della stessa grandezza di Y con l'integrale cumulativo di ciascuna riga.

Eseguire integrazioni annidate nelle direzioni x e y. Tracciare i risultati per visualizzare il valore integrale cumulativo in entrambe le direzioni.

Creare una griglia di valori per il dominio.

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

Calcolare la funzione f(x,y)=10x2+20y2 sulla griglia.

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

cumtrapz integra i dati numerici piuttosto che le espressioni funzionali; quindi, in generale, non è necessario conoscere la funzione sottostante per utilizzare cumtrapz su una matrice di dati. Nei casi in cui l'espressione funzionale è nota, è possibile invece utilizzare integral, integral2 o integral3.

Utilizzare cumtrapz per approssimare l'integrale doppio

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

Per eseguire questa doppia integrazione, utilizzare le chiamate di funzione annidate a cumtrapz. La chiamata interna integra prima le righe dei dati, quindi quella esterna integra le colonne.

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

Tracciare la superficie che rappresenta la funzione originale e la superficie che rappresenta l'integrazione cumulativa. Ciascun punto sulla superficie dell'integrazione cumulativa fornisce un valore intermedio dell'integrale doppio. L'ultimo valore in I fornisce l'approssimazione complessiva dell'integrale doppio I(end) = 642.4. Contrassegnare questo punto del grafico con una stella rossa.

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

Argomenti di input

comprimi tutto

Dati numerici, specificati come vettore, matrice o array multidimensionale. Per impostazione predefinita, cumtrapz integra lungo la prima dimensione di Y la cui grandezza non è uguale a 1.

Tipi di dati: single | double
Supporto numeri complessi:

Spaziatura tra i punti, specificata come 1 (predefinita), spaziatura scalare uniforme o vettore di coordinate.

  • Se X è uno scalare, allora specifica una spaziatura uniforme tra i punti di dati e cumtrapz(X,Y) è equivalente a X*cumtrapz(Y).

  • Se X è un vettore, allora specifica le coordinate x per i punti di dati e length(X) deve avere la stessa grandezza della dimensione di integrazione in Y.

Tipi di dati: single | double

Dimensione lungo la quale operare, specificata come scalare intero positivo. Se non si specifica la dimensione, per impostazione predefinita si considera la prima dimensione dell'array la cui grandezza non è uguale a 1.

Considerare un array di input a due dimensioni, Y:

  • cumtrapz(Y,1) opera sugli elementi successivi nelle colonne di Y.

    cumtrapz(Y,1) column-wise computation

  • cumtrapz(Y,2) opera sugli elementi successivi nelle righe di Y.

    cumtrapz(Y,2) row-wise computation

Se dim è maggiore di ndims(Y), cumtrapz restituisce un array di zeri della stessa grandezza di Y.

Suggerimenti

  • Utilizzare trapz e cumtrapz per eseguire integrazioni numeriche su insiemi di dati discreti. Utilizzare invece integral, integral2 o integral3 se è disponibile un'espressione funzionale per i dati.

  • trapz riduce a 1 la grandezza della dimensione su cui opera e restituisce solo il valore di integrazione finale. cumtrapz restituisce inoltre i valori di integrazione intermedi, conservando la grandezza della dimensione su cui opera.

Funzionalità estese

espandi tutto

Generazione di codice C/C++
Genera codice C e C++ con MATLAB® Coder™.

Generazione di codice GPU
Genera codice CUDA® per GPU NVIDIA® con GPU Coder™.

Cronologia versioni

Introduzione prima di R2006a

espandi tutto