Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Matriisitoiminnot Scipy.linalg-kirjastolla | Lineaarialgebra ja matriisitoiminnot
Johdatus SciPyyn

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.

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)

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 AA (m×km \times k) ja BB (k×nk \times n) tulo CC (m×nm \times n) lasketaan seuraavasti:

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

dgemm-funktio suorittaa tämän operaation tehokkaasti BLAS-rutiinien avulla. Voit myös skaalaa tulosta parametrilla alpha, jolloin laskettu matriisi on:

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

Käytä dgemm-funktiota, kun haluat hallita erityisiä parametreja, kuten skaalauskerrointa (alpha), tai kun työskentelet suurten taulukoiden kanssa, joissa suorituskyky on kriittistä.

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)

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=LUP A = L U

missä:

  • 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:

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

Oletetaan, että y on välimuuttuja. Ratkaisu tapahtuu kahdessa vaiheessa:

  1. Eteenpäin sijoitus: Ratkaise Ly=PbL y = P b muuttujalle y;
  2. Taaksepäin sijoitus: Ux=yU x = 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?

question mark

Mikä on tärkein ero scipy.linalg- ja numpy.linalg-kirjastojen välillä?

Valitse oikea vastaus

question mark

Mitä funktiota käyttäisit lineaarisen yhtälöryhmän ratkaisemiseen SciPyssa?

Valitse oikea vastaus

question mark

Mikä on LU-hajotelman tarkoitus lineaarialgebrassa?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 1

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 2. Luku 1
some-alt