In mathematical modeling, most people are using MATLAB, but MATLAB is not an orthodox computer programming language, and it is slow and charges a fee. The most intolerable thing is that the MATLAB editor does not support automatic code completion. Python is a very good choice for mathematical modeling. There are three very famous scientific computing libraries in Python: numpy, scipy and matplotlib. The three basically replace the functions of MATLAB and are fully capable of handling mathematical modeling tasks.
Here are a few examples of python solving mathematical modeling:
Finding the maximum and minimum problem of linear programming problem
max: z = 4x1 + 3x2 st: 2x1 + 3x2<=10 x1 + x2 <=8 x2 <= 7 x1,x2 > 0 from scipy.optimize import linprog c = [4,3] #默认linprog求解的是最小值,若求最大值,此处c取反即可得到最大值的相反数。 A = [[2,3],[1,1]] b = [10,8] x1_bounds = [0,None] x2_bounds =[0,7] res = linprog(c,A,b,bounds=(x1_bounds,x2_bounds))
Related recommendations: "python video tutorial"
Least squares curve fitting of polynomials
import numpy as np import matplotlib.pyplot as plt x = np.arange(1990,1997,1) y = np.array([70 ,122 ,144 ,152, 174, 196, 202]) z1 = ployfit(x,y,1) #之前画过原始数据,数据走向为ax+b类型。故采用一次多项式拟合 p1 = np.ploy1d(z1) yvalue = p1(x) plt.plot(x,y,'*',label = '原始数据') plt.plot(z1,yvalue,label = '拟合曲线') plt.xlabel('x axis') plt.ylabel('y axis') plt.legend(loc = 4 ) plt.tittle('多项式拟合') plt.show()
Equation Find the derivative
from __future__ import print_function from __future__ import division import numpy as np import scipy as sp import scipy.misc def f(x): return 2*x*x + 3*x + 1 print(sp.misc.derivative(f, 2))
Find the indefinite integral
from __future__ import print_function from __future__ import division import numpy as np import scipy as sp import scipy.integrate f = lambda x : x**2 print(sp.integrate.quad(f, 0, 2)) print(sp.integrate.fixed_quad(f, 0, 2))
Solve the nonlinear system of equations
from __future__ import print_function from __future__ import division import numpy as np import scipy as sp import scipy.optimize def f(x): return [5*x[1] + 3, 4*x[0]*x[0], x[1]*x[2] - 1.5] ans = sp.optimize.fsolve(f, [0, 0, 0]) print(ans) print(f(ans))
Solve System of linear equations
from __future__ import print_function from __future__ import division import numpy as np import scipy as sp import matplotlib.pylab as plt import scipy.linalg a = np.array([[1, 3, 5], [2, 5, 1], [2, 3, 8]]) b = np.array([10, 8, 3]) print(sp.linalg.solve(a, b)) # print(sp.linalg.inv(a).dot(b))
The above is the detailed content of Can Python be used for mathematical modeling?. For more information, please follow other related articles on the PHP Chinese website!