列举几个python解决数学建模的例子

一、线性规划问题的求最大最小值问题

# 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.000000000157014
 message: ‘Optimization terminated successfully.‘
     nit: 4
   slack: 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

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

参考链接:

1. CSDN-用python做线性规划

2. PuLP—整数规划例子

3.  php中文网-数学建模可以用Python吗

原文地址:https://www.cnblogs.com/lfri/p/12238409.html

时间: 2024-10-05 04:29:55

列举几个python解决数学建模的例子的相关文章

用python做数学建模

前言 这里是用python解决数学建模的一些问题,用到的是python3.x,scipy,numpy和matplotlib. 先补充一些基本的数据知识. 1.numpy.array() 在基础操作里,array和list是不区分的(在索引和删除一些操作还有运行时间上会有区别),python也没有array这个数据结构.array是由numpy这个数值计算工具包定义的.因为很多操作必须要求是在array上进行(list会出错)所以需要掌握.以下参考官方文档. import numpy as np

使用Python scipy linprog 线性规划求最大值或最小值(使用Python学习数学建模笔记)

函数格式 scipy.optimize.linprog(c, A_ub=None, b_ub=None, A_eq=None, b_eq=None, bounds=None, method='simplex', callback=None, options=None) 今天阅读数据建模第一章线性规划问题,问题描述如下: 通过介绍我们知道了线性规划,就是目标函数及约束条件均为线性函数. 通过画图我们可知,X1,X2的最优解为2,6,目标值为26. 我们如何时候这个scipy的公式来计算这个值呢:

有关科学计算方面的python解决

在科学计算方面,一般认为matlab是一个超强的东西,此外还有R. 至于某种语言来说,一般都要讲究一些特别的算法,包括但不限于: 矩阵方面的计算 指数计算 对数计算 多项式运算 各类方程求解 总之,只要是数学问题,在python里面,可以使用以下任何一个来解决 NumPy SciPy matplotlib ETS 顺便推荐一本书<用Python做科學計算>.地址是:http://myshare.dscloud.me/scipydoc/(不做超链接,看看能不能发布) 所以,用python解决数学

【数学建模】线性规划各种问题的Python调包方法

关键词:Python.调包.线性规划.指派问题.运输问题.pulp.混合整数线性规划(MILP) 注:此文章是线性规划的调包实现,具体步骤原理请搜索具体解法.   本文章的各个问题可能会采用多种调用方法,为什么?因为这些包各有特点,有些语法特别像matlab,只要稍稍改变即可达成代码交换:而有些包利用了python本身的特性,在灵活度与代码的可读性上更高.我认为这些包各有优劣,各位各持所需吧.   看了本文章能做到什么?你可以在本文章内学到线性规划的几个问题的求解方式,并学会如何用pulp包解决

python 版 mldivide matlab 反除(左除)《数学建模算法与程序》Python笔记

今天在阅读数学建模的时候看到了差分那章 其中有一个用matlab求线性的代码,这里我贴出来 这里我送上 Python代码 In [39]: import numpy as np ...: from scipy.optimize import nnls ...: x = np.array([[1,2,3,4,5],[1,1,1,1,1]]) ...: x = x.T ...: y = np.array([11,12,13,15,16]) ...: nnls(x,y) ...: Out[39]: (

if/while/for 、解决数学难题 、 Python实例

if/while/for enumerate() 方法的语法:enumerate(sequence, [start=0])sequence -- 一个序列.迭代器或其他支持迭代对象.start -- 下标起始位置.列出索引 对应 值 If条件判断 if 判断条件: 执行语句 elif 判断条件: 执行语句 else: 执行语句 While 判断条件: 执行语句 break 跳出循环 continue 跳到下一次循环 解决数学难题 乘法口诀九宫格ABCD乘9=DCBA,A=? B=? C=? D=

数学建模常用的十大算法

数学建模常用的十大算法==转 (2017-07-16 11:26:14) 转载▼ 1. 蒙特卡罗算法.该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟来检验自己模型的正确性,几乎是比赛时必用的方法. 2. 数据拟合.参数估计.插值等数据处理算法.比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用MATLAB 作为工具. 3. 线性规划.整数规划.多元规划.二次规划等规划类算法.建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算

2018数学建模国赛总结(A题/编程选手视角)

2018数学建模已经告一段落了,先说说基本情况吧,我们队伍专业分别为:金融(A),会计(B),计算机(我),配置还算可以,他们俩会数据分析软件也会写论文,我可以写代码,画图.他们俩打过美赛(M奖),我只打过算法竞赛.这里特别提出,有会写论文的队友很重要,不是说会latex会排版就算会,还要知道论文基本架构,遣词造句,专业术语等等. 题目下来的晚上,我们就确定了A题,因为B题的话我们基本没有专业知识能用上的,什么都要现学,其实特别想做C题,推荐系统啊,经济学分析啊我们都做过,可惜选不了….确定题目

(一)数学建模总论

这是数学模型的第一篇,在数学模型里将整理一些历史上比较有名的数学模型和一些比较重要或者好玩的数学模型,欢迎大家供稿. 数学建模的重要性毋庸置疑. 大概数学建模的过程可以分为以下几个的过程: Step1. 选择一个重要的问题,通常社会科学和自然科学提供了大量的重要的问题.需要有跨学科的思维,当前我们的教育在这方面是不足的. Step2. 对问题的背景熟悉,数学建模也属于应用数学的范畴终归是解决其他学科的问题. Step3. 将问题数学化,一旦数学化就方便进行数学的分析例如选择什么样的数学工具来解决