Skip to content Skip to sidebar Skip to footer

Solving Nonlinear Systems Of Equations

I'm receiving an error with this simple code, the problem is that the error only appears with one of the equations that I need (78 * x**0.3 * y**0.8 - 376). The error : invalid val

Solution 1:

F[0] will be complex if y is negative. fsolve doesn't support complex root finding.

Solution 2:

You need to solve the nonlinear equation system F(x,y) = 0 subject to x, y >= 0, which is equivalent to minimize the euclidean norm ||F(x,y)|| s.t. x,y >= 0. To solve this constrained optimization problem, you can use scipy.optimize.minimize as follows:

import numpy as np
from scipy.optimize import minimize

defFuncion(z):
   x = z[0]
   y = z[1]

   F = np.empty((2))
   F[0] = 78 * x**0.3 * y**0.8 - 376
   F[1] = 77 * x**0.5 * y - 770return F

# initial point
zGuess = np.array([1.0, 1.0])

# bounds x, y >= 0
bounds = [(0, None), (0, None)]

# Solve the constrained optimization problem
z = minimize(lambda z: np.linalg.norm(Funcion(z)), x0=zGuess, bounds=bounds)

# Print the solutionprint(z.x)

Post a Comment for "Solving Nonlinear Systems Of Equations"