Quick Start¶
Example 1 — Polynomial roots (ZPLRC):
import numpy as np
from nonlinearequations import polynomial_roots_real
# p(x) = x^4 - 5x^3 + 5x^2 + 5x - 6 = (x+1)(x-1)(x-2)(x-3)
# coefficients in ascending degree order: [a0, a1, ..., a4]
coeffs = np.array([-6.0, 5.0, 5.0, -5.0, 1.0])
result = polynomial_roots_real(coeffs)
print(sorted(result.x.real)) # -> [-1.0, 1.0, 2.0, 3.0]
print(result.fval) # -> ~0.0 (max |p(root)|)
Example 2 — Univariate zero-finding (ZUNI):
from nonlinearequations import zero_univariate
# Find zero of f(x) = x^3 - x - 2 on [1, 2]
result = zero_univariate(lambda x: x**3 - x - 2, a=1.0, b=2.0)
print(result.x[0]) # -> ~1.5214
# Find zero of cos(x) on [1, 2]
import math
result = zero_univariate(math.cos, a=1.0, b=2.0)
print(result.x[0]) # -> ~1.5708 (pi/2)
Example 3 — Nonlinear system solver (NEQNF):
import numpy as np
from nonlinearequations import solve_system_fd
# Solve: x1^2 + x2^2 = 1, x1 - x2 = 0
def f(x):
return np.array([x[0]**2 + x[1]**2 - 1, x[0] - x[1]])
result = solve_system_fd(f, x_guess=np.array([0.8, 0.6]))
print(result.x) # -> [~0.7071, ~0.7071]
print(result.fval) # -> ~0.0