zoukankan      html  css  js  c++  java
  • 用python做数学建模

    前言

      

      这里是用python解决数学建模的一些问题,用到的是python3.x,scipy,numpy和matplotlib。

      先补充一些基本的数据知识。

    1、numpy.array()

      在基础操作里,array和list是不区分的(在索引和删除一些操作还有运行时间上会有区别),python也没有array这个数据结构。array是由numpy这个数值计算工具包定义的。因为很多操作必须要求是在array上进行(list会出错)所以需要掌握。以下参考官方文档。

    import numpy as np

    #向上转型
    >>>np.array([1,2,3.0])
    array([1. ,2. ,3.])        
    
    #多维度
    >>> np.array([[1, 2], [3, 4]])
    array([[1, 2],
           [3, 4]])
    
    
    #预设维度
    >>> np.array([1, 2, 3], ndmin=2)
    array([[1, 2, 3]])
    
    
    #复数
    >>> np.array([1, 2, 3], dtype=complex)
    array([ 1.+0.j,  2.+0.j,  3.+0.j])
    
    
    #多种数据类型
    >>> x = np.array([(1,2),(3,4)],dtype=[('a','<i4'),('b','<i4')])
    >>> x['a']
    array([1, 3])

    正文

      补充完一些基础的数据知识就开始接触真正的数学建模用到的类型知识了。

    一、线性规划

      选择scipy.optimize.linprog进行线性规划问题的求最大最小值问题。学习材料:官方文档。

      这里不讨论具体问题,只涉及数学方程转换成函数语言进行求解的过程,参考书籍:数学建模算法与应用。

     1 '''
     2 max: z = 4x1 + 3x2
     3 st:      2x1 + 3x2<=10
     4            x1 + x2 <=8
     5            x2 <= 7
     6            x1,x2 > 0
     7 '''
     8 
     9 from scipy.optimize import linprog
    10 
    11 c = [4,3]        #默认linprog求解的是最小值,若求最大值,此处c取反即可得到最大值的相反数。
    12 A = [[2,3],[1,1]]
    13 b = [10,8]
    14 x1_bounds = [0,None]
    15 x2_bounds =[0,7]
    16 res = linprog(c,A,b,bounds=(x1_bounds,x2_bounds))

      三个变量的求解方法相同,此处不再赘述。

    二、多项式的最小二乘法曲线拟合

      利用numpy.polyfit。

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

    没有写完,暂时先写这么多吧。

    :)

      

      

  • 相关阅读:
    数据仓库系列之ETL过程和ETL工具
    大数据从入门到精通
    Mysql误删表中数据与误删表的恢复方法(转)
    Vscode 小白使用介绍
    Window 通过cmd查看端口占用,杀死进程方法
    Python基础教程,Python入门教程(非常详细)
    tuxedo安装与配置入门
    Win10系统Ping端口及利用telnet命令Ping 端口
    Tuxedo 介绍
    hibernate框架的简单入门
  • 原文地址:https://www.cnblogs.com/deleteme/p/7118286.html
Copyright © 2011-2022 走看看