MATLAB - Integrazione

L'integrazione si occupa di due tipi di problemi essenzialmente diversi.

  • Nel primo tipo viene data la derivata di una funzione e si vuole trovare la funzione. Pertanto, sostanzialmente invertiamo il processo di differenziazione. Questo processo inverso è noto come anti-differenziazione, o trovare la funzione primitiva o trovare un fileindefinite integral.

  • Il secondo tipo di problemi consiste nel sommare un numero molto grande di quantità molto piccole e quindi prendere un limite quando la dimensione delle quantità si avvicina allo zero, mentre il numero di termini tende all'infinito. Questo processo porta alla definizione didefinite integral.

Gli integrali definiti vengono utilizzati per trovare area, volume, baricentro, momento di inerzia, lavoro svolto da una forza e in numerose altre applicazioni.

Trovare l'integrale indefinito utilizzando MATLAB

Per definizione, se la derivata di una funzione f (x) è f '(x), allora diciamo che un integrale indefinito di f' (x) rispetto a x è f (x). Ad esempio, poiché la derivata (rispetto a x) di x 2 è 2x, possiamo dire che un integrale indefinito di 2x è x 2 .

In simboli -

f'(x2) = 2x, perciò,

∫ 2xdx = x2.

L'integrale indefinito non è univoco, perché anche la derivata di x 2 + c, per qualsiasi valore di una costante c, sarà 2x.

Questo è espresso in simboli come -

∫ 2xdx = x2 + c.

Dove, c è chiamata "costante arbitraria".

MATLAB fornisce un file intcomando per il calcolo dell'integrale di un'espressione. Per derivare un'espressione per l'integrale indefinito di una funzione, scriviamo -

int(f);

Ad esempio, dal nostro esempio precedente:

syms x 
int(2*x)

MATLAB esegue l'istruzione di cui sopra e restituisce il seguente risultato:

ans =
   x^2

Esempio 1

In questo esempio, troviamo l'integrale di alcune espressioni di uso comune. Crea un file di script e digita il seguente codice al suo interno:

syms x n

int(sym(x^n))
f = 'sin(n*t)'
int(sym(f))
syms a t
int(a*cos(pi*t))
int(a^x)

Quando si esegue il file, viene visualizzato il seguente risultato:

ans =
   piecewise([n == -1, log(x)], [n ~= -1, x^(n + 1)/(n + 1)])
f =
sin(n*t)
ans =
   -cos(n*t)/n
   ans =
   (a*sin(pi*t))/pi
   ans =
   a^x/log(a)

Esempio 2

Crea un file di script e digita il seguente codice al suo interno:

syms x n
int(cos(x))
int(exp(x))
int(log(x))
int(x^-1)
int(x^5*cos(5*x))
pretty(int(x^5*cos(5*x)))

int(x^-5)
int(sec(x)^2)
pretty(int(1 - 10*x + 9 * x^2))

int((3 + 5*x -6*x^2 - 7*x^3)/2*x^2)
pretty(int((3 + 5*x -6*x^2 - 7*x^3)/2*x^2))

Nota che il pretty restituisce un'espressione in un formato più leggibile.

Quando si esegue il file, viene visualizzato il seguente risultato:

ans =
   sin(x)
 
ans =
   exp(x)
 
ans =
   x*(log(x) - 1)
 
ans =
   log(x)
 
ans =
(24*cos(5*x))/3125 + (24*x*sin(5*x))/625 - (12*x^2*cos(5*x))/125 + (x^4*cos(5*x))/5 - (4*x^3*sin(5*x))/25 + (x^5*sin(5*x))/5
                                    2             4 
   24 cos(5 x)   24 x sin(5 x)   12 x  cos(5 x)   x  cos(5 x) 
   ----------- + ------------- - -------------- + ------------ 
      3125            625             125              5 
   
        3             5 
 
   4 x  sin(5 x)   x  sin(5 x) 
   ------------- + ----------- 
         25              5
 
ans =
-1/(4*x^4)
 
ans =
tan(x)
        2 
  x (3 x  - 5 x + 1)
 
ans = 
- (7*x^6)/12 - (3*x^5)/5 + (5*x^4)/8 + x^3/2
 
      6      5      4    3 
    7 x    3 x    5 x    x 
  - ---- - ---- + ---- + -- 
     12     5      8     2

Trovare l'integrale definito utilizzando MATLAB

Per definizione, l'integrale definito è fondamentalmente il limite di una somma. Usiamo integrali definiti per trovare aree come l'area tra una curva e l'asse x e l'area tra due curve. Gli integrali definiti possono essere utilizzati anche in altre situazioni, dove la quantità richiesta può essere espressa come limite di una somma.

Il int la funzione può essere utilizzata per un'integrazione definita passando i limiti oltre i quali si vuole calcolare l'integrale.

Calcolare

scriviamo,

int(x, a, b)

Ad esempio, per calcolare il valore di

scriviamo -

int(x, 4, 9)

MATLAB esegue l'istruzione di cui sopra e restituisce il seguente risultato:

ans =
   65/2

Di seguito è riportato l'equivalente in ottava del calcolo precedente:

pkg load symbolic
symbols

x = sym("x");
f = x;
c = [1, 0];
integral = polyint(c);

a = polyval(integral, 9) - polyval(integral, 4);
display('Area: '), disp(double(a));

Octave esegue il codice e restituisce il seguente risultato:

Area: 

   32.500

Una soluzione alternativa può essere fornita usando la funzione quad () fornita da Octave come segue:

pkg load symbolic
symbols

f = inline("x");
[a, ierror, nfneval] = quad(f, 4, 9);

display('Area: '), disp(double(a));

Octave esegue il codice e restituisce il seguente risultato:

Area: 
   32.500

Esempio 1

Calcoliamo l'area racchiusa tra l'asse xe la curva y = x 3 −2x + 5 e le ordinate x = 1 ex = 2.

L'area richiesta è data da:

Crea un file di script e digita il codice seguente:

f = x^3 - 2*x +5;
a = int(f, 1, 2)
display('Area: '), disp(double(a));

Quando si esegue il file, viene visualizzato il seguente risultato:

a =
23/4
Area: 
   5.7500

Di seguito è riportato l'equivalente in ottava del calcolo precedente:

pkg load symbolic
symbols

x = sym("x");
f = x^3 - 2*x +5;
c = [1, 0, -2, 5];
integral = polyint(c);

a = polyval(integral, 2) - polyval(integral, 1);
display('Area: '), disp(double(a));

Octave esegue il codice e restituisce il seguente risultato:

Area: 

   5.7500

Una soluzione alternativa può essere fornita usando la funzione quad () fornita da Octave come segue:

pkg load symbolic
symbols

x = sym("x");
f = inline("x^3 - 2*x +5");

[a, ierror, nfneval] = quad(f, 1, 2);
display('Area: '), disp(double(a));

Octave esegue il codice e restituisce il seguente risultato:

Area: 
   5.7500

Esempio 2

Trova l'area sotto la curva: f (x) = x 2 cos (x) per −4 ≤ x ≤ 9.

Crea un file di script e scrivi il codice seguente:

f = x^2*cos(x);
ezplot(f, [-4,9])
a = int(f, -4, 9)
disp('Area: '), disp(double(a));

Quando esegui il file, MATLAB traccia il grafico:

L'output è fornito di seguito:

a = 
8*cos(4) + 18*cos(9) + 14*sin(4) + 79*sin(9)
 
Area: 
   0.3326

Di seguito è riportato l'equivalente in ottava del calcolo precedente:

pkg load symbolic
symbols

x = sym("x");
f = inline("x^2*cos(x)");

ezplot(f, [-4,9])
print -deps graph.eps

[a, ierror, nfneval] = quad(f, -4, 9);
display('Area: '), disp(double(a));