返回顶部
首页 > 资讯 > 后端开发 > Python >python数学建模源码分析
  • 523
分享到

python数学建模源码分析

2023-07-06 11:07:26 523人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍了python数学建模源码分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python数学建模源码分析文章都会有所收获,下面我们一起来看看吧。SciPy 学习'''Sc

这篇文章主要介绍了python数学建模源码分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python数学建模源码分析文章都会有所收获,下面我们一起来看看吧。

SciPy 学习

'''SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。'''# 安装scipy库:# SciPy终端安装命令:pip install SciPy# https://www.runoob.com/w3cnote/python-pip-install-usage.html  Python pip 安装与使用# 查看scipy版本:import scipyprint(scipy.__version__)# SciPy模块功能表'''模块              功能scipy.cluster   聚类分析等scipy.constants 物理和数学函数scipy.fftpack   傅里叶变换scipy.integrate 积分scipy.interpolate   插值scipy.io        数据输入和输出scipy.linalg    线性代数scipy.ndimage   n维图像scipy.odr       正交距离回归scipy.optimize  优化scipy.signal    信号处理scipy.sparse    稀疏矩阵scipy.spatial   空间数据结构算法scipy.special   特殊函数scipy.stats     统计'''# 使用 dir() 函数来查看 constants 模块包含的常量:from scipy import constantsprint(dir(constants))'''单位类型常量模块包含以下几种单位:公制单位二进制,以字节为单位质量单位角度换算时间单位长度单位压强单位体积单位速度单位温度单位能量单位功率单位力学单位'''print()# SciPy 常量模块:# constants 是 scipy 的常量模块from scipy import constants# 查看一英亩等于多少平方米:print(constants.acre)   # 输出 4046.8564223999992# SciPy 常量模块 constants 提供了许多内置的数学常数# 圆周率:  pi# 黄金比例: Goldenfrom scipy import constantsprint(constants.pi)         # 输出 3.141592653589793 【圆周率】print(constants.golden)     # 输出 1.618033988749895 【黄金比例】
SciPy基本操作
1-求解非线性方程(组)

1-1

python数学建模源码分析

解题代码如下:

# scipy.optimize模块的fsolve和root可求非线性方程(组)的解# 格式:from scipy.optimize import fsolvefrom scipy.optimize import root# fsolve或root求解非线性方程组时,先把非线性方程组写成 F(x)=0 这样的形式【x:向量;F(x):向量函数】fx = lambda x: x**980-5.01*x**979-3.388*x**977\    +7.398*x**978-x**3+5.01*x**2-7.398*x+3.388x1 = fsolve(fx, 1.5, maxfev=420)     # 函数调用420次【调用小了,会报警告】x2 = root(fx, 1.5)print(x1)   # 相当于答案print()print(x2)   # 相当于解题过程

运行x1、x2结果如下:

python数学建模源码分析

1-2

python数学建模源码分析

解题代码如下:

from scipy.optimize import fsolve, rootfs2 = lambda s: [s[0]**2+s[1]**2-1, s[0]-s[1]]s1 = fsolve(fs2, [1, 1])print()s2 = root(fs2, [1, 1])print(s1)# 输出 [0.70710678 0.70710678]print()print(s2)

运行s2效果如下:

python数学建模源码分析

2-积分

scipy.integrate模块提供了多种积分模式。

积分主要分为以下两类:

  • 对给定函数的数值积分

  • 对给定离散点的数值积分,函数有trapz

题目:

python数学建模源码分析

'''函数                                              说明quad(func, a, b, args)                      计算一重数值积分dblquad(func, a, b, gfun, hfun, args)       计算二重数值积分tplquad(func, a, b, gfun, hfun, qfun, rfun) 计算三重数值积分nquad(func, ranges, args)                   计算多变量积分'''from scipy.integrate import quaddef func(x, a, b):    return a*x**2+b*xz1 = quad(func, 0, 1, args=(2, 1))z2 = quad(func, 0, 1, args=(2, 10))print(z1)   # 输出 (1.1666666666666665, 1.2952601953960159e-14)print(z2)   # 输出 (5.666666666666667, 6.291263806209221e-14)# 注:输出的后一个值为积分值的绝对误差
3-最小二乘解

python数学建模源码分析

# 最小二乘解# scipy.optimize 模块求非线性方程组最小二乘解格式:'''from scipy.optimize import least_squaresleast_squares(fun, x0)注:用到loadtxt需自行准备好文件【准备文件】'''from scipy.optimize import least_squaresimport numpy as nps = np.loadtxt('data.txt')x0 = s[0]y0 = s[1]d = s[2]fs = lambda x: np.sqrt((x0-s[0])**2+(y0-s[1])**2-d)xc = least_squares(fs, np.random.rand(2))print(xc)print()print(xc.s)
4-最大模特征值及对应的特征向量

题目:

python数学建模源码分析

# 4-最大模特征值及对应的特征向量# 题目描述:求下列矩阵的最大模特征值及对应的特征向量:from scipy.sparse.linalg import eigsimport numpy as npm = np.array([    [1, 2, 3],    [2, 1, 3],    [3, 3, 6]], dtype=float)a, b = np.linalg.eig(m)c, d = eigs(m, 1)print('最大模特征值为:', c)    # 输出 最大模特征值为: [9.+0.j]print('对应的特征向量:\n', d)

运行结果如下:

python数学建模源码分析

Numpy学习(续)

# NumPy 广播(Broadcast)# 广播是 numpy 对不同形状的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。# 如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。# 这要求维数相同,且各维度的长度相同。'''对两个数组,分别比较他们的每一个维度(若其中一个数组没有当前维度则忽略),满足:数组拥有相同形状。当前维度的值相等。当前维度的值有一个是 1。若条件不满足,抛出 "ValueError: frames are not aligned" 异常'''import numpy as npa = np.array([3, 6, 9])b = np.array([2, 4, 6])c = a * bprint(c)    # 输出 [ 6 24 54]# 若形状不同时,numpy 将自动触发广播机制import numpy as npx = np.array([    [4, 2, 5],    [5, 2, 0],    [2, 6, 1],    [1, 4, 5]])y = np.array([3, 1, 2])print(x+y)yy = np.tile(y, (4, 1))     # 重复b的各个维度print(x+yy)
1 Numpy 数学函数
1-1三角函数
# NumPy 数学函数# NumPy 包含大量的各种数学运算的函数,包括三角函数,算术运算的函数,复数处理函数等。# 1-三角函数# NumPy 提供了标准的三角函数:sin()、cos()、tan()。import numpy as nplxw = np.array([0, 30, 45, 60, 90])# sin()zx = np.sin(lxw*np.pi/180)print(zx)# 计算角度的反正弦【单位:弧度】fzx = np.arcsin(zx)print(fzx)# 检查结果【通过转化为角度制】jg = np.degrees(fzx)print(jg)   # 输出 [ 0. 30. 45. 60. 90.]# cos()yx = np.cos(lxw*np.pi/180)print(yx)# 反余弦fyx = np.arccos(yx)print(fyx)# 检查结果:jg2 = np.degrees(fyx)print(jg2)  # 输出 [ 0. 30. 45. 60. 90.]# tan()zq = np.tan(lxw*np.pi/180)print(zq)# 反正切fzq = np.arctan(zq)print(fzq)# 检查结果:jg3 = np.degrees(fzq)print(jg3)  # 输出 [ 0. 30. 45. 60. 90.]
2-舍入函数
2-1 numpy.around()
# 2-舍入函数# 2-1 numpy.around()'''numpy.around() 函数返回指定数字的四舍五入值。格式:numpy.around(a,decimals)参数说明:a: 数组decimals: 舍入的小数位数。 默认值为0。 如果为负,整数将四舍五入到小数点左侧的位置'''import numpy as npbl = np.array([15.222, 22.6555, 13.71111])print(np.around(bl))        # 输出 [15. 23. 14.]print(np.around(bl, 2))     # 输出 [15.22 22.66 13.71]print(np.around(bl, -1))    # 输出 [20. 20. 10.]
2-2 numpy.floor()
# 2-2 numpy.floor()# numpy.floor() 返回小于或者等于指定表达式的最大整数,即向下取整import numpy as npxx = np.array([23.3, 13.43, 2.9])print(np.floor(xx))     # 输出 [23. 13.  2.]
2-3 numpy.ceil()
# 2-3 numpy.ceil()# numpy.ceil() 返回大于或者等于指定表达式的最小整数,即向上取整import numpy as npxs = np.array([23.1, 23.5, 54.9])print(np.ceil(xs))      # 输出 [24. 24. 55.]
3 Numpy算术函数

NumPy 算术函数包含简单的加减乘除: add(),subtract(),multiply() 和 divide()

  • 倒数:reciprocal()

  • 幂:power()

  • 余数:mod() | remainder()

:数组必须具有相同的形状符合数组广播规则

相关代码如下:

import numpy as npsz = np.arange(9, dtype=np.float_).reshape(3, 3)sz2 = np.array([5, 2, 1])   # 注:如果相除,这里是被除数的话,里面不能有0# 数组相加xj = np.add(sz, sz2)print(xj)# 数组相减xj2 = np.subtract(sz, sz2)print(xj2)# 数组相乘xc = np.multiply(sz, sz2)print(xc)# 数组相除xc2 = np.divide(sz, sz2)print(xc2)print()# numpy.power()# numpy.power() 函数将第一个输入数组中的元素作为底数,计算它与第二个输入数组中相应元素的幂import numpy as npm = np.array([1, 4, 8])     # 数组1mc = np.power(m, 3)         # 数组1所有元素对应的3次方print(mc)   # 输出 [  1  64 512]m2 = np.array([1, 2, 3])    # 数组2mc2 = np.power(m, m2)       # 数组1作为底数,数组2作为幂print(mc2)  # 输出 [  1  16 512]print()# numpy.mod()# numpy.mod() 计算输入数组中相应元素的相除后的余数# 函数 numpy.remainder() 也产生相同的结果import numpy as npsz1 = np.array([23, 45, 67])sz2 = np.array([2, 3, 5])print(np.mod(sz1, sz2))         # 输出 [1 0 2]print(np.remainder(sz1, sz2))   # 输出 [1 0 2]

pandas学习(续)

# pandas的SettingWithCopyWarning

# pandas的SettingWithCopyWarning报警复现、原因、解决方案# 读取数据import pandas as pddf = pd.read_csv('nba.csv')print(df.head())# 核心解决问题:pandas的dataframe的修改写操作,只允许在源dataframe上进行,一步到位# 解决方法(两种):'''1-将get+set的两步操作,改成set的一步操作2-若须处理筛选数据做后续的处理分析,使用copy复制dataframe'''# pandas不允许先筛选子dataframe,在进行修改写入

注意先准备好csv文件

Pandas 数据排序

Series的排序:

# Pandas 数据排序'''Series的排序:Series.sort_values(ascending=True, inplace=False)参数说明:    · ascending: 默认为True升序排序,False为False    · inplace:   是否修改原始SeriesDataFrame的排序:DataFrame.sort_values(by, ascending=True, inplace=False)参数说明:    · by:字符串或者List<字符串>,单列排序或者多列排序    · ascending: bool或者List,升序还是降序    · inplace:   是否修改原始DataFrame'''# Series的排序:import pandas as pddf = pd.read_csv('nba.csv')print(df.head())# 输出前五行print(df['Weight'].sort_values())                      # 升序排序print(df['Weight'].sort_values(ascending=False))       # 降序排序

运行结果分别如下:

python数学建模源码分析

python数学建模源码分析

python数学建模源码分析

DataFrame的排序

# DataFrame的排序# 单列排序:print(df.sort_values(by='Weight'))

运行部分结果如下:

python数学建模源码分析

print(df.sort_values(by="Weight", ascending=False))     # 降序排序

python数学建模源码分析

# 多列排序:print(df.sort_values(by=['Age', 'Weight']))

python数学建模源码分析

# 两个字段都是降序排序print(df.sort_values(by=['Age', 'Weight'], ascending=False))

python数学建模源码分析

# 分别指定升序还是降序print(df.sort_values(by=['Age', 'Weight'], ascending=[False, True]))

python数学建模源码分析

Pandas字符串处理

之前我就在这个字符串处理的题上出了一些问题(不过当天就解决啦)【今天在来看看】,也就是

df['lrl'].str.replace("%", "").astype("int32")
# Pandas字符串处理:'''1-使用方法:先获取Series的属性,然后再属性上调用函数2-只能在字符串列上使用,不能再数字列上使用3-DataFrame没有str属性和使用4-Series.str并不是原生Python字符串,它是封装的一套方法'''# 获取Series的属性# print(df['Salary'].str)   # 报错【示范】# AttributeError: Can only use .str accessor with string values!# AttributeError:只能使用。带字符串值的str访问器!# 一定得是字符串列print(df['College'].str)# 运行结果为: <pandas.core.strings.accessor.StringMethods object at 0x00000204444EBC48># 判断是不是数字列print(df['College'].str.isnumeric())# print(df['College'].len)      # 报错【示范】# AttributeError: 'Series' object has no attribute 'len'# AttributeError:“Series”对象没有属性“len”

python数学建模源码分析

# 使用str的startswith、contains等得到bool的Series可以做条件查询tj = df['Height'].str.startswith("6-2")print(tj)

python数学建模源码分析

# 去掉Height中间的“-”print(df['Height'].str.replace("-", ""))

python数学建模源码分析

# 取第一位数print(df['Height'].str.replace("-", "").str.slice(0, 1))# 同上print(df['Height'].str.replace("-", "").str[0:1])

python数学建模源码分析

关于“python数学建模源码分析”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“python数学建模源码分析”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网Python频道。

--结束END--

本文标题: python数学建模源码分析

本文链接: https://lsjlt.com/news/358035.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python数学建模源码分析
    这篇文章主要介绍了python数学建模源码分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python数学建模源码分析文章都会有所收获,下面我们一起来看看吧。SciPy 学习'''Sc...
    99+
    2023-07-06
  • python数学建模实例分析
    SciPy 学习''' SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、 信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。 ''' # 安装sc...
    99+
    2023-05-14
    Python
  • Python内建类型int源码分析
    今天小编给大家分享一下Python内建类型int源码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。问题:对于C语言,下面...
    99+
    2023-06-30
  • Python内建类型float源码分析
    这篇文章主要介绍“Python内建类型float源码分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python内建类型float源码分析”文章能帮助大家解决问题。1 回顾float的基础知识1....
    99+
    2023-06-30
  • Python内建类型str源码分析
    这篇文章主要讲解了“Python内建类型str源码分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python内建类型str源码分析”吧!1 Unicode计算机存储的基本单位是字节,由8...
    99+
    2023-06-30
  • Python内建类型dict源码分析
    本篇内容主要讲解“Python内建类型dict源码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python内建类型dict源码分析”吧!深入认识Python内建类型&mdash;&...
    99+
    2023-07-05
  • Python数据分析模块Numpy切片、索引和广播源码分析
    这篇文章主要讲解了“Python数据分析模块Numpy切片、索引和广播源码分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python数据分析模块Numpy切片、索引和广播源码分析”吧!N...
    99+
    2023-07-06
  • python数学建模之Numpy和Pandas应用实例分析
    Numpy 学习# Numpy的基本使用 ''' Numpy提供了两种基本的对象:ndarray存储单一数据类型的多维数组; ufunc是能够对数组进行处理的函数 1-导...
    99+
    2023-05-15
    Python Numpy Pandas
  • python如何使用contextvars模块源码分析
    目录前记更新说明1.有无上下文传变量的区别2.如何使用contextvars模块3.如何优雅的使用contextvars4.contextvars的原理4.1 ContextMeta...
    99+
    2024-04-02
  • python深度学习tensorflow参数初始化initializer源码分析
    本篇内容介绍了“python深度学习tensorflow参数初始化initializer源码分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2023-07-06
  • 【数学建模】常用算法-主成分分析PCA的Python实现
    1前言 本文主要讲解主成分分析析法(PCA)的python实现,后续会跟进实例分析 2 原理-代码实现 2.1 实现步骤 主成分分析PCA是一种应用广泛的和降维方法,对其实现做以下归纳 2.2 代码实...
    99+
    2023-10-07
    python 算法
  • 【数学建模】-多元线性回归分析
    文章目录 回归的思想回归分析:研究X和Y之间相关性的分析。相关性因变量Y自变量X 回归分析的使命回归分析的分类数据的分类一元线性回归对于线性的理解回归系数的解释内生性的探究内生性...
    99+
    2023-10-05
    线性回归 回归 机器学习 matlab
  • django源码分析 python ma
    django是一个快速开发web应用的框架, 笔者也在django框架上开发不少web应用,闲来无事,就想探究一下django底层到底是如何实现的,本文记录了笔者对django源码的分析过程 I believe to become a ...
    99+
    2023-01-31
    源码 django ma
  • nodejs模块系统源码分析
    目录概述CommonJS 规范Node 对 CommonJS 规范的实现模块导出以及引用模块系统实现分析模块定位加载策略模块加载模块文件处理后缀处理编译执行概述 Node.js的出现...
    99+
    2024-04-02
  • Node.js模块系统源码分析
    这篇文章主要介绍“Node.js模块系统源码分析”,在日常操作中,相信很多人在Node.js模块系统源码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Node.js模块系...
    99+
    2024-04-02
  • FilenameUtils.getName 函数源码分析
    目录一、背景二、源码分析2.1 问题1:为什么需要 NonNul 检查 ?2.1.1 怎么检查的?2.1.2 为什么要做这个检查呢?2.2 问题2: 为什么不根据当前系统类型来获取分...
    99+
    2024-04-02
  • (源码版)2023 年高教社杯全国大学生数学建模竞赛-E 题 黄河水沙监测题一数据分析详解+Python代码
    十分激动啊啊啊题目终于出来了!!官网6点就进去了结果直接卡死现在才拿到题目,我是打算A-E题全部做一遍。简单介绍一下我自己:博主专注建模四年,参与过大大小小数十来次数学建模,理解各类模型原理以及每种模型的建模流程和各类题目分析方法。参与过十...
    99+
    2023-10-05
    数学建模 人工智能 机器学习 数据分析 python
  • Python内建类型list源码学习
    目录问题:1 常用方法小结:题外话:2 list的内部结构:PyListObject3 尾部操作和头部操作3.1 尾部操作3.2 头部操作4 浅拷贝和深拷贝4.1 浅拷贝4.2 深拷...
    99+
    2024-04-02
  • Python内建类型int源码学习
    目录1 int对象的设计1.1 PyLongObject1.2 整数的布局1.3 小整数静态对象池1.4 示例2 大整数运算2.1 整数运算概述2.2 大整数运算处理过程1.long...
    99+
    2024-04-02
  • Python内建类型float源码学习
    目录1 回顾float的基础知识1.1 PyFloatObject1.2 PyFloat_Type1.3 对象的创建1.4 对象的销毁1.5 小结2 空闲对象缓存池2.1 浮点对象的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作