np.linalg.solve() în NumPy

Rezolvă un sistem de ecuații liniare A @ x = b și returnează soluția x; verifici rezultatul cu np.allclose.

Sintaxă
np.linalg.solve(a, b)

Ce face np.linalg.solve()

Un sistem de ecuații liniare se scrie ca A @ x = b: A conține coeficienții (câte un rând pentru fiecare ecuație), b conține termenii liberi, iar x necunoscutele. np.linalg.solve(A, b) returnează x.

A trebuie să fie pătrată (câte ecuații, atâtea necunoscute) și inversabilă. Dacă sistemul nu are soluție unică, funcția aruncă LinAlgError: Singular matrix. Rezultatul este float și poate avea erori mici de rotunjire; îl verifici cu np.allclose(A @ x, b).

Parametri

Parametru Descriere
a Matricea coeficienților, pătrată, forma (n, n).
b Termenii liberi: un vector de lungime n sau o matrice (n, k) pentru mai multe sisteme cu aceiași coeficienți.

Ce returnează

Soluția x, cu aceeași formă ca b.

Exemple

Exemplul 1: Bilete pentru adulți și copii

La un spectacol s-au vândut 120 de bilete și s-au încasat 3600 de lei. Un bilet de adult costă 40 de lei, unul de copil 20 de lei. Sistemul: a + c = 120 și 40a + 20c = 3600.

import numpy as np

A = np.array([[1, 1], [40, 20]])
b = np.array([120, 3600])
adulti, copii = np.linalg.solve(A, b)
print("Adulți:", round(float(adulti)), "Copii:", round(float(copii)))

Rezultat

Adulți: 60 Copii: 60

Exemplul 2: Sistem cu trei necunoscute și verificare

import numpy as np

# 2x + y - z = 8
# -3x - y + 2z = -11
# -2x + y + 2z = -3
A = np.array([[2, 1, -1], [-3, -1, 2], [-2, 1, 2]])
b = np.array([8, -11, -3])
x = np.linalg.solve(A, b)
print(x.round(6))
print(np.allclose(A @ x, b))

Rezultat

[ 2.  3. -1.]
True

Exemplul 3: Sistem fără soluție unică

A doua ecuație este prima înmulțită cu 2, deci matricea este singulară.

import numpy as np

A = np.array([[1.0, 2.0], [2.0, 4.0]])
b = np.array([5.0, 10.0])
try:
    np.linalg.solve(A, b)
except np.linalg.LinAlgError as e:
    print("Nu se poate rezolva:", e)

Rezultat

Nu se poate rezolva: Singular matrix

Greșeli frecvente

  • Pui coeficienții pe coloane în loc de rânduri: fiecare rând din A trebuie să fie o ecuație.
  • Verifici soluția cu A @ x == b și primești False din cauza rotunjirii. Folosește np.allclose(A @ x, b).
  • Dai un sistem cu mai multe ecuații decât necunoscute (A nepătrată): solve dă LinAlgError. Pentru o soluție aproximativă folosește np.linalg.lstsq().

Comenzi înrudite

  • np.linalg.inv(): Calculează inversa unei matrice pătrate; pentru o matrice singulară aruncă LinAlgError.
  • np.linalg.det(): Calculează determinantul unei matrice pătrate; rezultatul este float aproximativ, compară-l cu np.isclose sau rotunjește-l.
  • np.matmul() și operatorul @: Înmulțirea de matrice cu np.matmul sau operatorul @; diferența față de *, care înmulțește element cu element.
  • np.dot(): Calculează produsul scalar a doi vectori sau produsul matriceal a două matrice.
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: np.linalg.solve()

Ai o nelămurire despre utilizarea comenzii np.linalg.solve() sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.