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

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

    :)

      

      

  • 相关阅读:
    django urls.py 中的name 使用方法
    django ForeignKey ManyToMany 前后端联动
    python web django 2nd level -- 待更新
    python web django base skill
    python-线程池的两种实现方式 【转载】
    django removing hardcoded URLs in template --- 使用变量,把url放在变量中 {% url 'namespace:name' %}
    django admin后台(数据库简单管理后台)
    windows10 -- mysql5.5 + python3.4 + django1.11 +pycharm2016.2 + PyMySQL(DB DRIVER) 环境搭建
    JavaScript可视化运行工具推荐
    为什么需要在 React 类组件中为事件处理程序绑定this?
  • 原文地址:https://www.cnblogs.com/deleteme/p/7118286.html
Copyright © 2011-2022 走看看