Main Content

Potenze ed esponenti

Questo argomento mostra come calcolare potenze ed esponenti di matrici con diversi metodi.

Potenze di numeri interi positivi

Se A è una matrice quadrata e p è un numero positivo intero, allora A^p moltiplica effettivamente A per se stesso p-1 volte. Ad esempio:

A = [1 1 1
     1 2 3
     1 3 6];
A^2
ans = 3×3

     3     6    10
     6    14    25
    10    25    46

Potenze inverse e frazionali

Se A è una matrice quadrata e non singolare, allora A^(-p) moltiplica effettivamente inv(A) per se stesso p-1 volte.

A^(-3)
ans = 3×3

  145.0000 -207.0000   81.0000
 -207.0000  298.0000 -117.0000
   81.0000 -117.0000   46.0000

MATLAB® calcola inv(A) e A^(-1) con lo stesso algoritmo, quindi i risultati sono esattamente identici. Sia inv(A) che A^(-1) generano avvisi se la matrice è vicina a essere singolare.

isequal(inv(A),A^(-1))
ans = logical
   1

È consentito anche l'utilizzo di potenze frazionarie, come A^(2/3). I risultati ottenuti con potenze frazionarie dipendono dalla distribuzione degli autovalori della matrice.

A^(2/3)
ans = 3×3

    0.8901    0.5882    0.3684
    0.5882    1.2035    1.3799
    0.3684    1.3799    3.1167

Potenze elemento per elemento

L'operatore .^ calcola le potenze elemento per elemento. Ad esempio, per calcolare il quadrato di ogni elemento in una matrice è possibile utilizzare A.^2.

A.^2
ans = 3×3

     1     1     1
     1     4     9
     1     9    36

Radici quadrate

La funzione sqrt rappresenta un metodo utile per calcolare la radice quadrata di ogni elemento in una matrice. Un altro modo per eseguire questo calcolo consiste nell'utilizzare A.^(1/2).

sqrt(A)
ans = 3×3

    1.0000    1.0000    1.0000
    1.0000    1.4142    1.7321
    1.0000    1.7321    2.4495

Per altre radici è possibile utilizzare nthroot. Ad esempio, calcolare A.^(1/3).

nthroot(A,3)
ans = 3×3

    1.0000    1.0000    1.0000
    1.0000    1.2599    1.4422
    1.0000    1.4422    1.8171

Queste radici orientate agli elementi sono diverse dalle radici quadrate di una matrice, che calcolano una seconda matrice B come A=BB. La funzione sqrtm(A) calcola A^(1/2) con un algoritmo più accurato. La m in sqrtm distingue questa funzione da sqrt(A) che, come A.^(1/2), utilizza un metodo 'elemento per elemento'.

B = sqrtm(A)
B = 3×3

    0.8775    0.4387    0.1937
    0.4387    1.0099    0.8874
    0.1937    0.8874    2.2749

B^2
ans = 3×3

    1.0000    1.0000    1.0000
    1.0000    2.0000    3.0000
    1.0000    3.0000    6.0000

Basi scalari

Oltre a elevare una matrice a potenza, è anche possibile elevare uno scalare alla potenza di una matrice.

2^A
ans = 3×3

   10.4630   21.6602   38.5862
   21.6602   53.2807   94.6010
   38.5862   94.6010  173.7734

Quando si eleva uno scalare alla potenza di una matrice, MATLAB utilizza gli autovalori e gli autovettori della matrice per calcolare la potenza della matrice stessa. Se [V,D] = eig(A), allora 2A=V 2D V-1.

[V,D] = eig(A);
V*2^D*V^(-1)
ans = 3×3

   10.4630   21.6602   38.5862
   21.6602   53.2807   94.6010
   38.5862   94.6010  173.7734

Esponenziali di matrice

Gli esponenziali di matrici rappresentano un caso speciale per elevare uno scalare a una potenza di matrice. La base di un esponenziale di matrice è il numero di Eulero e = exp(1).

e = exp(1);
e^A
ans = 3×3
103 ×

    0.1008    0.2407    0.4368
    0.2407    0.5867    1.0654
    0.4368    1.0654    1.9418

La funzione expm rappresenta un metodo più utile per calcolare gli esponenziali di matrice.

expm(A)
ans = 3×3
103 ×

    0.1008    0.2407    0.4368
    0.2407    0.5867    1.0654
    0.4368    1.0654    1.9418

Gli esponenziali di matrice possono essere calcolati in diversi modi. Per maggiori informazioni vedere Matrix Exponentials.

Operazioni con numeri piccoli

Le funzioni log1p e expm1 di MATLAB calcolano accuratamente log(1+x) e ex-1 per valori molto piccoli di x. Ad esempio, se si prova ad aggiungere un numero inferiore rispetto alla precisione di macchina di 1, il risultato viene arrotondato a 1.

log(1+eps/2)
ans = 0

log1p è tuttavia in grado di restituire una risposta più accurata.

log1p(eps/2)
ans = 1.1102e-16

Come accade per ex-1, se è molto piccolo, x viene arrotondato a zero.

exp(eps/2)-1
ans = 0

Ancora una volta, expm1 è in grado di restituire una risposta più accurata.

expm1(eps/2)
ans = 1.1102e-16

Vedi anche

| | | | | | |

Argomenti complementari