Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Operazioni Matriciali con scipy.linalg | Algebra Lineare e Operazioni con Matrici
Introduzione a SciPy

Operazioni Matriciali con scipy.linalg

Scorri per mostrare il menu

Quando è necessario eseguire operazioni avanzate sulle matrici in Python, il modulo scipy.linalg offre un insieme potente di strumenti che ampliano e migliorano le funzionalità delle funzioni di algebra lineare di NumPy. Sebbene numpy.linalg sia adatto a molti compiti standard, scipy.linalg mette a disposizione algoritmi aggiuntivi, prestazioni superiori per alcune operazioni e l'accesso a routine di basso livello da librerie come BLAS e LAPACK. Questo rende scipy.linalg una scelta preferita per applicazioni scientifiche e ingegneristiche che richiedono calcoli matriciali robusti ed efficienti.

1234567891011121314151617
import numpy as np from scipy.linalg import blas # Create two matrices A = np.array([[1, 2], [3, 4]]) B = np.array([[2, 0], [1, 2]]) # Perform matrix multiplication using BLAS's dgemm (double-precision general matrix multiply) C = blas.dgemm(alpha=1.0, a=A, b=B) print("Matrix A:") print(A) print("\nMatrix B:") print(B) print("\nA multiplied by B using BLAS:") print(C)

L'esempio di codice mostra come moltiplicare matrici utilizzando scipy.linalg.blas.dgemm, che è un'interfaccia diretta alla libreria BLAS. Questa funzione è particolarmente utile quando è necessaria una moltiplicazione di matrici ad alte prestazioni, poiché sfrutta routine ottimizzate di basso livello.

Date le matrici AA (m×km \times k) e BB (k×nk \times n), il prodotto CC (m×nm \times n) viene calcolato come:

Cij=l=1kAilBljC_{ij} = \sum_{l=1}^k A_{il} B_{lj}

La funzione dgemm esegue questa operazione in modo efficiente utilizzando le routine BLAS. È anche possibile scalare il risultato tramite il parametro alpha, quindi la matrice calcolata è:

C=αABC = \alpha \cdot A \cdot B

Utilizzare dgemm quando si desidera controllare parametri specifici come i fattori di scala (alpha) o quando si lavora con array di grandi dimensioni in cui le prestazioni sono fondamentali.

1234567891011121314151617181920
import numpy as np from scipy.linalg import lu, solve # Define a square matrix and a right-hand side vector A = np.array([[3, 1, 6], [2, 1, 3], [1, 1, 1]]) b = np.array([12, 7, 3]) # Perform LU decomposition P, L, U = lu(A) print("Permutation matrix P:") print(P) print("\nLower triangular matrix L:") print(L) print("\nUpper triangular matrix U:") print(U) # Solve the linear system Ax = b x = solve(A, b) print("\nSolution to Ax = b:") print(x)

L'esempio di codice mostra la decomposizione LU e la risoluzione di un sistema lineare. La decomposizione LU fattorizza una matrice A in tre matrici P, L e U tali che:

PA=LUP A = L U

dove:

  • P è una matrice di permutazione che tiene conto degli scambi di righe;
  • L è una matrice triangolare inferiore con uno sulla diagonale;
  • U è una matrice triangolare superiore.

Questa fattorizzazione consente di risolvere in modo efficiente un sistema lineare Ax = b. Prima, applicare la permutazione al termine noto:

PAx=LUx=PbP A x = L U x = P b

Sia y una variabile intermedia. Risolvere il processo in due passaggi:

  1. Sostituzione in avanti: risolvere Ly=PbL y = P b per y;
  2. Sostituzione all'indietro: Ux=yU x = y per x.

Questo approccio è particolarmente utile quando è necessario risolvere più sistemi con la stessa matrice A ma termini noti diversi, poiché la decomposizione LU deve essere calcolata una sola volta.

1. Qual è la principale differenza tra scipy.linalg e numpy.linalg?

2. Quale funzione useresti per risolvere un sistema di equazioni lineari in SciPy?

3. Qual è lo scopo della decomposizione LU nell'algebra lineare?

question mark

Qual è la principale differenza tra scipy.linalg e numpy.linalg?

Seleziona la risposta corretta

question mark

Quale funzione useresti per risolvere un sistema di equazioni lineari in SciPy?

Seleziona la risposta corretta

question mark

Qual è lo scopo della decomposizione LU nell'algebra lineare?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 1

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 2. Capitolo 1
some-alt