Contenuto principale

integral

Integrazione numerica

Descrizione

q = integral(fun,xmin,xmax) integra numericamente la funzione fun da xmin a xmax, utilizzando la quadratura adattativa globale e le tolleranze di errore predefinite.

esempio

q = integral(fun,xmin,xmax,Name=Value) specifica le opzioni utilizzando uno o più argomenti nome-valore. Ad esempio, specificare l'argomento nome-valore WayPoints come vettore di numeri reali o complessi per indicare punti specifici che l'integratore deve utilizzare.

esempio

Esempi

comprimi tutto

Creare la funzione f(x)=e-x2(lnx)2.

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

Valutare l’integrale da x=0 a x=Inf.

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

Creare la funzione f(x)=1/(x3-2x-c) con un parametro c.

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

Valutare l’integrale da x=0 a x=2 in corrispondenza di c=5.

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

Per maggiori informazioni su questa tecnica, vedere Parameterizing Functions.

Creare la funzione f(x)=ln(x).

fun = @(x) log(x);

Valutare l’integrale da x=0 a x=1 con le tolleranze di errore predefinite.

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

Quindi valutare l'integrale con una precisione di 12 posizioni decimali. Impostare RelTol su 0 in modo che integral cerchi di soddisfare solo la tolleranza di errore assoluto.

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

Creare la funzione f(z)=1/(2z-1).

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

Integrare nel piano complesso sul percorso triangolare da 0 a 1+1i a 1-1i a 0, specificando i waypoint.

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

Creare la funzione con valore di vettore f(x)=[sinx,sin2x,sin3x,sin4x,sin5x] e integrare da x=0 a x=1. Specificare l'argomento nome-valore ArrayValued come true per valutare l'integrale di una funzione con valore di array o di vettore.

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

Dalla release R2026a

Creare la funzione f(x)=2x-x2 assumendo un input scalare.

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

Valutare l’integrale da x=0 a x=1. Specificare l'argomento nome-valore Vectorized come false per calcolare l'integrale senza utilizzare la vettorizzazione.

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

Creare la funzione f(x)=x5e-xsinx.

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

Valutare l’integrale da x=0 a x=Inf, regolando le tolleranze assolute e relative.

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

Argomenti di input

comprimi tutto

Integranda, specificata come handle della funzione che definisce la funzione da integrare.

Per i problemi a valori scalare, la funzione y = fun(x) deve accettare un argomento vettoriale x e restituire un risultato vettoriale y. Quindi, fun utilizza generalmente operatori dell'array anziché quelli della matrice. Ad esempio, utilizzare .* (times) piuttosto che * (mtimes).

Se si specifica l'argomento nome-valore ArrayValued come true, fun deve accettare un input scalare e restituire un array di dimensione fissa.

Limite inferiore di x, specificato come numero reale (finito o infinito) o numero complesso (finito). Se xmin o xmax è complesso, integral approssima l'integrale del percorso lungo la linea retta da xmin a xmax.

Tipi di dati: double | single
Supporto numeri complessi:

Limite superiore di x, specificato come numero reale (finito o infinito) o numero complesso (finito). Se xmin o xmax è complesso, integral approssima l'integrale del percorso lungo la linea retta da xmin a xmax.

Tipi di dati: double | single
Supporto numeri complessi:

Argomenti nome-valore

comprimi tutto

Specificare coppie opzionali di argomenti come Name1=Value1,...,NameN=ValueN, dove Name è il nome dell’argomento e Value è il valore corrispondente. Gli argomenti nome-valore devono comparire dopo gli altri argomenti, mentre l'ordine delle coppie non è rilevante.

Esempio q = integral(fun,xmin,xmax,AbsTol=1e-12) imposta la tolleranza di errore assoluto a circa 12 posizioni decimali di precisione.

Tolleranza di errore assoluto, specificata come numero reale non negativo. integral utilizza la tolleranza di errore assoluto per limitare una stima dell’errore assoluto |qQ|, dove q è il valore calcolato dell’integrale e Q è il valore esatto (sconosciuto). integral potrebbe fornire un maggior numero di posizioni decimali di precisione se viene diminuita la tolleranza di errore assoluto.

Nota

AbsTol e RelTol lavorano insieme. integral potrebbe soddisfare la tolleranza di errore assoluto o la tolleranza di errore relativo, ma non necessariamente entrambe. Per maggiori informazioni sull’utilizzo di queste tolleranze, vedere la sezione Suggerimenti.

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

Tipi di dati: double | single

Tolleranza di errore relativo, specificata come numero reale non negativo. integral la tolleranza di errore relativo per limitare una stima dell’errore relativo |qQ|/|Q|, dove q è il valore calcolato dell’integrale e Q è il valore esatto (sconosciuto). integral potrebbe fornire più cifre significative di precisione se viene diminuita la tolleranza dell’errore relativo.

Nota

RelTol e AbsTol lavorano insieme. integral potrebbe soddisfare la tolleranza di errore relativo o la tolleranza di errore assoluto, ma non necessariamente entrambe. Per maggiori informazioni sull’utilizzo di queste tolleranze, vedere la sezione Tips (Suggerimenti).

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

Tipi di dati: double | single

Funzione con valore di array, specificata come valore numerico o logico 1 (true) o 0 (false). Specificare ArrayValued come true o 1 per indicare che fun è una funzione che accetta un input scalare e restituisce un vettore, una matrice o un array N-D di output.

Il valore predefinito di false indica che fun è una funzione che accetta un input vettoriale e restituisce un output vettoriale.

Da R2026a

Eseguire calcoli vettorizzati, specificati come valore numerico o logico 1 (true) o 0 (false). Per impostazione predefinita, Vectorized è true e il calcolo dell'integrale è vettorizzato per essere eseguito più velocemente. Per le funzioni a valore scalare, la funzione integranda y = fun(x) deve accettare un argomento vettoriale x e operare elemento per elemento, restituendo un risultato vettoriale y.

Se si specifica Vectorized come false, la funzione integranda accetta solo un argomento scalare x e restituisce un risultato scalare y.

Nota

Se si specifica ArrayValued come true, integral ignora il valore di Vectorized.

Integrazione di waypoint, specificata come vettore di numeri reali o complessi. Utilizzare i waypoint per indicare i punti nell'intervallo di integrazione che si desidera che l'integratore utilizzi nella griglia iniziale:

  • Aggiungere altri punti di valutazione in prossimità di feature interessanti della funzione, come un estremo locale.

  • Integrare in modo efficiente attraverso le discontinuità dell'integranda specificando le posizioni delle discontinuità.

  • Eseguire integrazioni di contorni complessi specificando numeri complessi come waypoint. Se xmin, xmax o qualsiasi voce del vettore dei waypoint è complessa, l'integrazione viene eseguita su una sequenza di percorsi rettilinei nel piano complesso. In questo caso, tutti i limiti di integrazione e i waypoint devono essere finiti.

Non utilizzare waypoint per specificare le singolarità. Dividere invece l'intervallo e sommare i risultati di integrazioni separate con le singolarità agli estremi.

Esempio q = integral(fun,xmin,xmax,Waypoints=[1+1i,1-1i]) specifica due waypoint complessi lungo l'intervallo di integrazione.

Tipi di dati: double | single
Supporto numeri complessi:

Argomenti di output

comprimi tutto

Valore calcolato dell'integrale, restituito come scalare numerico o array.

Suggerimenti

  • La funzione integral cerca di soddisfare la seguente espressione, dove q è il valore calcolato dell'integrale e Q è il valore esatto (sconosciuto).

    abs(q - Q) <= max(AbsTol,RelTol*abs(q))
    Le tolleranze assolute e relative forniscono un compromesso tra precisione e tempo di calcolo. Di norma, la tolleranza relativa determina la precisione dell'integrazione. Tuttavia, se abs(q) è sufficientemente piccolo, la tolleranza assoluta determina la precisione dell'integrazione. È una best practice specificare insieme sia le tolleranze assolute che quelle relative.

  • Se si specificano limiti di integrazione a precisione singola o se fun restituisce risultati a precisione singola, potrebbe essere necessario specificare tolleranze di errore assoluto e relativo più ampie.

Riferimenti

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

Funzionalità estese

espandi tutto

Cronologia versioni

Introdotto in R2012a

espandi tutto