typestar

Encontrar raíces en Python

root_scalar para una ecuación, root para un sistema, least_squares para un ajuste.

import numpy as np
from scipy import optimize

uno = optimize.root_scalar(lambda x: x ** 3 - 2 * x - 5,
                           bracket=[2, 3], method="brentq")
print(round(uno.root, 6), uno.iterations, uno.converged)

newton = optimize.root_scalar(lambda x: np.cos(x) - x, x0=0.5,
                              fprime=lambda x: -np.sin(x) - 1,
                              method="newton")
print(round(newton.root, 6))


def sistema(v):
    x, y = v
    return [x + y - 3, x * y - 2]


ambos = optimize.root(sistema, x0=[0.0, 5.0])
print(ambos.x.round(4), ambos.success)

Cómo funciona

  1. bracket necesita un cambio de signo entre los dos extremos.
  2. fprime deja que el método de Newton converja más rápido.
  3. least_squares minimiza un vector de residuos.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
20
Caracteres a escribir
480
Tokens
171
Ritmo de tres estrellas
110 tpm

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

Escribe este fragmento

Paso 4 de 4 en Optimización; paso 13 de 23 en Computación científica con SciPy.

← Anterior Siguiente →