The following tutorials are an introduction to solving linear and nonlinear equations with Python. The solution to linear equations is through matrix operations while sets of nonlinear equations require a solver to numerically find a solution.

import numpy as np

A = np.array([ [3,-9], [2,4] ])

b = np.array([-42,2])

z = np.linalg.solve(A,b)

print(z)

M = np.array([ [1,-2,-1], [2,2,-1], [-1,-1,2] ])

c = np.array([6,1,1])

y = np.linalg.solve(M,c)

print(y)

A = np.array([ [3,-9], [2,4] ])

b = np.array([-42,2])

z = np.linalg.solve(A,b)

print(z)

M = np.array([ [1,-2,-1], [2,2,-1], [-1,-1,2] ])

c = np.array([6,1,1])

y = np.linalg.solve(M,c)

print(y)

from numpy import *

from scipy.optimize import *

def myFunction(z):

x = z[0]

y = z[1]

w = z[2]

F = empty((3))

F[0] = pow(x,2)+pow(y,2)-20

F[1] = y - pow(x,2)

F[2] = w + 5 - x*y

return F

zGuess = array([1,1,1])

z = fsolve(myFunction,zGuess)

print(z)

from scipy.optimize import *

def myFunction(z):

x = z[0]

y = z[1]

w = z[2]

F = empty((3))

F[0] = pow(x,2)+pow(y,2)-20

F[1] = y - pow(x,2)

F[2] = w + 5 - x*y

return F

zGuess = array([1,1,1])

z = fsolve(myFunction,zGuess)

print(z)

Sympy is a package for symbolic solutions in Python that can be used to solve systems of equations.

$$2x^2+y+z=1$$ $$x+2y+z=c_1$$ $$-2*x+y=-z$$

import sympy as sym

sym.init_printing()

x,y,z = sym.symbols('x,y,z')

c1 = sym.Symbol('c1')

f = sym.Eq(2*x**2+y+z,1)

g = sym.Eq(x+2*y+z,c1)

h = sym.Eq(-2*x+y,-z)sourceend:)

sym.solve([f,g,h],(x,y,z))

sym.init_printing()

x,y,z = sym.symbols('x,y,z')

c1 = sym.Symbol('c1')

f = sym.Eq(2*x**2+y+z,1)

g = sym.Eq(x+2*y+z,c1)

h = sym.Eq(-2*x+y,-z)sourceend:)

sym.solve([f,g,h],(x,y,z))

When solved in an IPython environment such as a Jupyter notebook, the result is displayed as:

$$x=-\frac{1}{2}+\frac{\sqrt{3}}{2}$$ $$y=c_1 - \frac{3 \sqrt{3}}{2} +\frac{3}{2}$$ $$z=-c_1 - \frac{5}{2} +\frac{5 \sqrt{3}}{2}$$

and a second solution:

$$x=-\frac{1}{2}-\frac{\sqrt{3}}{2}$$ $$y=c_1 + \frac{3 \sqrt{3}}{2} +\frac{3}{2}$$ $$z=-c_1 - \frac{5}{2} -\frac{5 \sqrt{3}}{2}$$

The same approach applies to linear or nonlinear equations.

Linear and nonlinear equations can also be solved with Excel and MATLAB. Click on the appropriate link for additional information and source code.

The APMonitor Modeling Language with a Python interface is optimization software for mixed-integer and differential algebraic equations. It is coupled with large-scale solvers for linear, quadratic, nonlinear, and mixed integer programming (LP, QP, NLP, MILP, MINLP). Modes of operation include data reconciliation, real-time optimization, dynamic simulation, and nonlinear predictive control. It is freely available through MATLAB, Python, Julia, or from a web browser interface.

comments powered by Disqus

Retrieved from http://apmonitor.com/che263/index.php/Main/PythonSolveEquations

Page last modified on September 27, 2018, at 11:17 PM