列舉幾個python解決數學建模的例子

2022-05-01 22:09:08 字數 4236 閱讀 3380

一、線性規劃問題的求最大最小值問題

#

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))

print(res)

con: array(, dtype=float64)

fun: 10.000000000157014message:

'optimization terminated successfully.

'nit: 4slack: array([-1.24439126e-10, 4.66666667e+00])

status: 0

success: true

x: array([1.40727180e-10, 3.33333333e+00])

結果只關注第二行和最後一行就可以了,第二行是最優值的大小,最後一行是取得最優值時變數的大小。

二、多項式的最小二乘法曲線擬合

import

numpy as np

import

matplotlib.pyplot as plt

x = np.arange(1, 6, 1)

y = np.array([2, 6, 12, 20, 30]) #

y=x^2+x#擬合

print(np.polyfit(x, y, 2))

#視覺化

f = np.polyfit(x, y, 2)

p =np.poly1d(f)

yvals =p(x)

plt.figure(figsize=(10,8))

plt.plot(x, y, '.

')plt.plot(x, yvals)

plt.xlabel('x軸

') #

可以用來標註

plt.ylabel('y軸'

)plt.show()

三、方程求導

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))

四、求不定積分

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))

五、求解非線性方程組

import

numpy as np

import

scipy as sp

import

scipy.optimize

deff(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(ans[0]*ans[1]*ans[2])

print(f(ans))

六、求解線性方程組

import

numpy as np

import

scipy as sp

import

scipy.optimize

import

scipy.linalg

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

b = np.array([2, 3, 6])

print

(sp.linalg.solve(a, b))

#print(sp.linalg.inv(a).dot(b)) #或利用矩陣運算求解

七、01整數規劃

#

coding=utf-8

from pulp import

lpproblem, lpvariable, lpconstraint, lpconstraintle, lpconstraintge, lpmaximize, lpbinary, lpstatus

#create a new model

m = lpproblem(name="

mip model

", sense=lpmaximize)

#create variables

x = lpvariable(cat=lpbinary, name="x"

)y = lpvariable(cat=lpbinary, name="y"

)z = lpvariable(cat=lpbinary, name="z"

)#add constraint: x + 2y + 3z <= 4

m += lpconstraint(e=(x + 2*y + 3*z), sense=lpconstraintle, rhs=4, name='c0'

)#add constraint: x + y >= 1

m += lpconstraint(e=(x + y), sense=lpconstraintge, rhs=1, name='c1'

)#set objective

m.setobjective(x + y + 2*z)

#calculate with the default cbc optimizer

status =m.solve()

if lpstatus[status] == '

optimal':

for v in

m.variables():

print('

%s %g

' %(v.name, v.varvalue))

print('

obj: %g

' % m.objective.value())

八、網路流-最大流

import

networkx as nx

g =nx.digraph()#4

#5#0 1 3

#0 2 1

#1 2 1

#1 3 1

#2 3 3

n, m =int(input()), int(input())

for i in

range(n):

g.add_node(i)

for _ in

range(m):

a, b, c = [ int(i) for i in input().split('

') ]

g.add_edge(a, b, capacity=c)

max_flow = nx.algorithms.flow.maxflow.maximum_flow(g, 0, n-1)[0]

print("

max_flow:

", max_flow)

1. csdn-用python做線性規劃

2. pulp—整數規劃例子

3.  php中文網-數學建模可以用python嗎

4. csdn-python networkx 實現網路流

備戰數學建模(Python)

由於美國大學生數學建模大賽很快就要開賽了,所以我就打算在這幾天內,好好的看看 數學建模演算法與應用 這本書,裡面很多都是用matlab實現的,我還想嘗試著用python去實現它的演算法,這裡作為乙個總目錄進行查閱 python之建模規劃篇 線性規劃 python之建模規劃篇 整數規劃 python之...

數學建模 matlab解決線性規劃問題

在人們的生產實踐中,經常會遇到如何利用現有資源來安排生產,以取得最大經濟效 益的問題。此類問題構成了運籌學的乙個重要分支一數學規劃,而線性規劃 linear programming,lp 則是數學規劃的乙個重要分支。自從1947年g.b.dantzig 提出求解線 性規劃的單純形方法以來,線性規劃在...

python初中數學建模培訓 初中生數學建模培養

初中生數學建模培養 一 認識數學建模 目前,數學建模教學理論 還不完善,對 數學建模 的含義還有不同的理解 數學模型 對於現實中的原型,為了某個特定目的,作出一些必要的簡化和假設,運用適當 的數學工具得到乙個數學結構。也可以說,數學模型是利用數學語言 符號 式子與圖象 模擬現實的模型。把現實模型抽象...