Matriisitoiminnot Scipy.linalg-kirjastolla
Pyyhkäise näyttääksesi valikon
Kun tarvitset edistyneitä matriisioperaatioita Pythonissa, scipy.linalg-moduuli tarjoaa tehokkaan työkalupaketin, joka laajentaa NumPyn lineaarialgebran toimintojen ominaisuuksia. Vaikka numpy.linalg soveltuu moniin tavanomaisiin tehtäviin, scipy.linalg tarjoaa lisäalgoritmeja, paremman suorituskyvyn joissakin operaatioissa sekä pääsyn matalan tason BLAS- ja LAPACK-kirjastojen rutiineihin. Tämän vuoksi scipy.linalg on suosittu valinta tieteellisissä ja teknisissä sovelluksissa, joissa tarvitaan luotettavia ja tehokkaita matriisilaskentoja.
1234567891011121314151617import 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)
Tämä koodiesimerkki näyttää, kuinka matriisit kerrotaan keskenään käyttämällä scipy.linalg.blas.dgemm-funktiota, joka on suora rajapinta BLAS-kirjastoon. Tämä funktio on erityisen hyödyllinen, kun tarvitaan suorituskykyistä matriisikertolaskua, sillä se hyödyntää optimoituja matalan tason rutiineja.
Annetuilla matriiseilla A (m×k) ja B (k×n) tulo C (m×n) lasketaan seuraavasti:
Cij=l=1∑kAilBljdgemm-funktio suorittaa tämän operaation tehokkaasti BLAS-rutiinien avulla. Voit myös skaalaa tulosta parametrilla alpha, jolloin laskettu matriisi on:
Käytä dgemm-funktiota, kun haluat hallita erityisiä parametreja, kuten skaalauskerrointa (alpha), tai kun työskentelet suurten taulukoiden kanssa, joissa suorituskyky on kriittistä.
1234567891011121314151617181920import 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)
Koodiesimerkki havainnollistaa LU-hajotelmaa ja lineaarisen yhtälöryhmän ratkaisua. LU-hajotelmassa matriisi A jaetaan kolmeen matriisiin P, L ja U siten, että:
PA=LUmissä:
- P on permutaatiomatriisi, joka huomioi rivinvaihdot;
- L on alempi kolmionmuotoinen matriisi, jonka diagonaalilla on ykkösiä;
- U on ylempi kolmionmuotoinen matriisi.
Tämä hajotelma mahdollistaa lineaarisen yhtälöryhmän Ax = b tehokkaan ratkaisun. Ensin permutaatio kohdistetaan oikeanpuoleiseen vektoriin:
Oletetaan, että y on välimuuttuja. Ratkaisu tapahtuu kahdessa vaiheessa:
- Eteenpäin sijoitus: Ratkaise Ly=Pb muuttujalle y;
- Taaksepäin sijoitus: Ux=y muuttujalle x.
Tämä menetelmä on erityisen hyödyllinen, kun samaa matriisia A käytetään useiden eri oikeanpuoleisten vektorien kanssa, koska LU-hajotelma tarvitsee laskea vain kerran.
1. Mikä on tärkein ero scipy.linalg- ja numpy.linalg-kirjastojen välillä?
2. Mitä funktiota käyttäisit lineaarisen yhtälöryhmän ratkaisemiseen SciPyssa?
3. Mikä on LU-hajotelman tarkoitus lineaarialgebrassa?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme