typestar

Resolver sistemas lineales en Python

solve es la respuesta correcta; invertir la matriz no lo es.

import numpy as np

A = np.array([[3.0, 1.0], [1.0, 2.0]])
b = np.array([9.0, 8.0])

x = np.linalg.solve(A, b)
print(x, np.allclose(A @ x, b))

print(np.linalg.det(A).round(3), np.linalg.matrix_rank(A))
print(np.linalg.norm(x).round(3))

alta = np.array([[1.0, 1.0], [1.0, 2.0], [1.0, 3.0]])
ajuste, *_ = np.linalg.lstsq(alta, np.array([2.0, 4.0, 6.1]), rcond=None)
print(ajuste.round(3))

Cómo funciona

  1. solve es más rápido y mejor condicionado que una inversa explícita.
  2. allclose es cómo se comparan los resultados de punto flotante.
  3. lstsq maneja el caso sobredeterminado.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
14
Caracteres a escribir
388
Tokens
169
Ritmo de tres estrellas
110 tpm

Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 92 segundos.

Escribe este fragmento

Paso 3 de 4 en Matemática y memoria; paso 18 de 22 en NumPy.

← Anterior Siguiente →