# Solving non-linear equations ^ca27a3 ## Introduction ## Prerequisites ```python import numpy import scipy import sympy ``` ## fsolve from SciPy ```python from scipy.optimize import fsolve def equations(vars): x, y = vars eq1 = x**2 + y**2 - 25 eq2 = x**2 - y return [eq1, eq2] initial_guess = [1, 1] solution = fsolve(equations, initial_guess) print("Solution:", solution) ``` ```python from scipy.optimize import fsolve f = lambda x: x**3-100*x**2-x+100 fsolve(f, [2, 80]) ``` ## root from SciPy ```python from scipy.optimize import root def equations(vars): x, y = vars eq1 = x**2 + y**2 - 25 eq2 = x**2 - y return [eq1, eq2] initial_guess = [1, 1] solution = root(equations, initial_guess) print("Solution:", solution.x) ``` ## minimize from SciPy ```python from scipy.optimize import minimize # Define the equations def equation1(x, y): return x**2 + y**2 - 25 def equation2(x, y): return x**2 - y # Define the objective function for optimization def objective(xy): x, y = xy return equation1(x, y)**2 + equation2(x, y)**2 # Initial guess initial_guess = [1, 1] # Perform optimization result = minimize(objective, initial_guess) solution_optimization = result.x print("Optimization Method Solution:", solution_optimization) ``` ## nsolve from SymPy ```python from sympy import symbols, Eq, nsolve # Define the variables x, y = symbols('x y') # Define the equations eq1 = Eq(x**2 + y**2, 25) eq2 = Eq(x - y, 0) # Initial guess for the solution initial_guess = [1, 1] # Use nsolve to find the solution solution = nsolve([eq1, eq2], [x, y], initial_guess) print("Solution:", solution) ``` ## newton_method from NumPy ```python import numpy as np def equations(vars): x, y = vars eq1 = x**2 + y**2 - 25 eq2 = x**2 - y return np.array([eq1, eq2]) def newton_method(initial_guess, tolerance=1e-6, max_iter=100): vars = np.array(initial_guess, dtype=float) for _ in range(max_iter): J = np.array([[2 * vars[0], 2 * vars[1]], [2 * vars[0], -1]]) F = equations(vars) delta = np.linalg.solve(J, -F) vars += delta if np.linalg.norm(delta) < tolerance: return vars initial_guess = [1, 1] solution = newton_method(initial_guess) print("Solution:", solution) ```