Python 수학적 모델링 예제 분석
SciPy 학습
''' SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、 信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。 ''' # 安装scipy库: # SciPy终端安装命令:pip install SciPy # https://www.runoob.com/w3cnote/python-pip-install-usage.html Python pip 安装与使用 # 查看scipy版本: import scipy print(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 constants print(dir(constants)) ''' 单位类型 常量模块包含以下几种单位: 公制单位 二进制,以字节为单位 质量单位 角度换算 时间单位 长度单位 压强单位 体积单位 速度单位 温度单位 能量单位 功率单位 力学单位 ''' print() # SciPy 常量模块: # constants 是 scipy 的常量模块 from scipy import constants # 查看一英亩等于多少平方米: print(constants.acre) # 输出 4046.8564223999992 # SciPy 常量模块 constants 提供了许多内置的数学常数 # 圆周率: pi # 黄金比例: golden from scipy import constants print(constants.pi) # 输出 3.141592653589793 【圆周率】 print(constants.golden) # 输出 1.618033988749895 【黄金比例】
SciPy 기본 연산
1-비선형 방정식 풀기(집합)
1-1
해법 코드는 다음과 같습니다.
# scipy.optimize模块的fsolve和root可求非线性方程(组)的解 # 格式: from scipy.optimize import fsolve from 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.388 x1 = fsolve(fx, 1.5, maxfev=420) # 函数调用420次【调用小了,会报警告】 x2 = root(fx, 1.5) print(x1) # 相当于答案 print() print(x2) # 相当于解题过程
x를 실행한 결과 1과 x2는 다음과 같습니다.
1-2
해결 코드는 다음과 같습니다.
from scipy.optimize import fsolve, root fs2 = 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를 실행한 효과는 다음과 같습니다.
2 -Points
scipy.integrate 모듈은 다중 포인트 모드를 제공합니다. integral은 주로 다음 두 가지 범주로 나뉩니다. 주어진 기능의 주어진 기능 통합 주어진 개별 지점의 듀어 적 통합, 함수는 다음과 같습니다.
''' 函数 说明 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 quad def func(x, a, b): return a*x**2+b*x z1 = 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) # 注:输出的后一个值为积分值的绝对误差
# 最小二乘解 # scipy.optimize 模块求非线性方程组最小二乘解格式: ''' from scipy.optimize import least_squares least_squares(fun, x0) 注:用到loadtxt需自行准备好文件【准备文件】 ''' from scipy.optimize import least_squares import numpy as np s = 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-최대 모듈러 고유값 및 해당 고유벡터
- 질문:
# 4-最大模特征值及对应的特征向量 # 题目描述:求下列矩阵的最大模特征值及对应的特征向量: from scipy.sparse.linalg import eigs import numpy as np m = 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)
# NumPy 广播(Broadcast) # 广播是 numpy 对不同形状的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。 # 如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。 # 这要求维数相同,且各维度的长度相同。 ''' 对两个数组,分别比较他们的每一个维度(若其中一个数组没有当前维度则忽略),满足: 数组拥有相同形状。 当前维度的值相等。 当前维度的值有一个是 1。 若条件不满足,抛出 "ValueError: frames are not aligned" 异常 ''' import numpy as np a = np.array([3, 6, 9]) b = np.array([2, 4, 6]) c = a * b print(c) # 输出 [ 6 24 54] # 若形状不同时,numpy 将自动触发广播机制 import numpy as np x = 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-1 삼각 함수
# NumPy 数学函数 # NumPy 包含大量的各种数学运算的函数,包括三角函数,算术运算的函数,复数处理函数等。 # 1-三角函数 # NumPy 提供了标准的三角函数:sin()、cos()、tan()。 import numpy as np lxw = 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 np bl = 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 np xx = np.array([23.3, 13.43, 2.9]) print(np.floor(xx)) # 输出 [23. 13. 2.]
# 2-3 numpy.ceil() # numpy.ceil() 返回大于或者等于指定表达式的最小整数,即向上取整 import numpy as np xs = np.array([23.1, 23.5, 54.9]) print(np.ceil(xs)) # 输出 [24. 24. 55.]
NumPy 산술 함수에는 간단한 덧셈, 뺄셈, 곱셈 및 나눗셈이 포함됩니다: add(), subtract(), Multiply() 및 Divide()
reciprocal :reciprocal()
power: power()
나머지: mod() | 나머지()
참고
: 배열은 동일한 모양을 가져야 합니다. 또는 < /code>배열 브로드캐스트 규칙을 준수합니다</h4><blockquote><p>관련 코드는 다음과 같습니다.</p></blockquote><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>import numpy as np
sz = 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 np
m = np.array([1, 4, 8]) # 数组1
mc = np.power(m, 3) # 数组1所有元素对应的3次方
print(mc) # 输出 [ 1 64 512]
m2 = np.array([1, 2, 3]) # 数组2
mc2 = np.power(m, m2) # 数组1作为底数,数组2作为幂
print(mc2) # 输出 [ 1 16 512]
print()
# numpy.mod()
# numpy.mod() 计算输入数组中相应元素的相除后的余数
# 函数 numpy.remainder() 也产生相同的结果
import numpy as np
sz1 = 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]</pre><div class="contentsignin">로그인 후 복사</div></div><ul class=" list-paddingleft-2">판다 학습(계속)<li><p></p># 판다의 설정WithCopyWarning</li><li><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'># pandas的SettingWithCopyWarning报警复现、原因、解决方案
# 读取数据
import pandas as pd
df = pd.read_csv(&#39;nba.csv&#39;)
print(df.head())
# 核心解决问题:pandas的dataframe的修改写操作,只允许在源dataframe上进行,一步到位
# 解决方法(两种):
&#39;&#39;&#39;
1-将get+set的两步操作,改成set的一步操作
2-若须处理筛选数据做后续的处理分析,使用copy复制dataframe
&#39;&#39;&#39;
# pandas不允许先筛选子dataframe,在进行修改写入</pre><div class="contentsignin">로그인 후 복사</div></div><p>[<code>준비에 주의하세요. csv 파일 먼저
] Pandas 데이터 정렬
# Pandas 数据排序 ''' Series的排序: Series.sort_values(ascending=True, inplace=False) 参数说明: · ascending: 默认为True升序排序,False为False · inplace: 是否修改原始Series DataFrame的排序: DataFrame.sort_values(by, ascending=True, inplace=False) 参数说明: · by:字符串或者List<字符串>,单列排序或者多列排序 · ascending: bool或者List,升序还是降序 · inplace: 是否修改原始DataFrame ''' # Series的排序: import pandas as pd df = pd.read_csv('nba.csv') print(df.head()) # 输出前五行 print(df['Weight'].sort_values()) # 升序排序 print(df['Weight'].sort_values(ascending=False)) # 降序排序
注
:数组必须具有相同的形状或
符合数组广播规则
相关代码如下:
# DataFrame的排序 # 单列排序: print(df.sort_values(by='Weight'))
Pandas学习(续)
# pandas的SettingWithCopyWarning
print(df.sort_values(by="Weight", ascending=False)) # 降序排序
【注意先准备好csv文件
실행 결과는 다음과 같습니다.
DataFrame 정렬
# 多列排序: print(df.sort_values(by=['Age', 'Weight']))
달려요 part 결과는 다음과 같습니다.
# 两个字段都是降序排序 print(df.sort_values(by=['Age', 'Weight'], ascending=False))
# 分别指定升序还是降序 print(df.sort_values(by=['Age', 'Weight'], ascending=[False, True]))
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”
Pandas 문자열 처리
# 使用str的startswith、contains等得到bool的Series可以做条件查询 tj = df['Height'].str.startswith("6-2") print(tj)
# 去掉Height中间的“-” print(df['Height'].str.replace("-", ""))

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

rrreee
rrreee위 내용은 Python 수학적 모델링 예제 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











MySQL에는 무료 커뮤니티 버전과 유료 엔터프라이즈 버전이 있습니다. 커뮤니티 버전은 무료로 사용 및 수정할 수 있지만 지원은 제한되어 있으며 안정성이 낮은 응용 프로그램에 적합하며 기술 기능이 강합니다. Enterprise Edition은 안정적이고 신뢰할 수있는 고성능 데이터베이스가 필요하고 지원 비용을 기꺼이 지불하는 응용 프로그램에 대한 포괄적 인 상업적 지원을 제공합니다. 버전을 선택할 때 고려 된 요소에는 응용 프로그램 중요도, 예산 책정 및 기술 기술이 포함됩니다. 완벽한 옵션은없고 가장 적합한 옵션 만 있으므로 특정 상황에 따라 신중하게 선택해야합니다.

이 기사는 MySQL 데이터베이스의 작동을 소개합니다. 먼저 MySQLworkBench 또는 명령 줄 클라이언트와 같은 MySQL 클라이언트를 설치해야합니다. 1. MySQL-Uroot-P 명령을 사용하여 서버에 연결하고 루트 계정 암호로 로그인하십시오. 2. CreateABase를 사용하여 데이터베이스를 작성하고 데이터베이스를 선택하십시오. 3. CreateTable을 사용하여 테이블을 만들고 필드 및 데이터 유형을 정의하십시오. 4. InsertInto를 사용하여 데이터를 삽입하고 데이터를 쿼리하고 업데이트를 통해 데이터를 업데이트하고 DELETE를 통해 데이터를 삭제하십시오. 이러한 단계를 마스터하고 일반적인 문제를 처리하는 법을 배우고 데이터베이스 성능을 최적화하면 MySQL을 효율적으로 사용할 수 있습니다.

MySQL 데이터베이스 성능 최적화 안내서 리소스 집약적 응용 프로그램에서 MySQL 데이터베이스는 중요한 역할을 수행하며 대규모 트랜잭션 관리를 담당합니다. 그러나 응용 프로그램 규모가 확장됨에 따라 데이터베이스 성능 병목 현상은 종종 제약이됩니다. 이 기사는 일련의 효과적인 MySQL 성능 최적화 전략을 탐색하여 응용 프로그램이 고 부하에서 효율적이고 반응이 유지되도록합니다. 실제 사례를 결합하여 인덱싱, 쿼리 최적화, 데이터베이스 설계 및 캐싱과 같은 심층적 인 주요 기술을 설명합니다. 1. 데이터베이스 아키텍처 설계 및 최적화 된 데이터베이스 아키텍처는 MySQL 성능 최적화의 초석입니다. 몇 가지 핵심 원칙은 다음과 같습니다. 올바른 데이터 유형을 선택하고 요구 사항을 충족하는 가장 작은 데이터 유형을 선택하면 저장 공간을 절약 할 수있을뿐만 아니라 데이터 처리 속도를 향상시킬 수 있습니다.

MySQL은 기본 데이터 저장 및 관리를위한 네트워크 연결없이 실행할 수 있습니다. 그러나 다른 시스템과의 상호 작용, 원격 액세스 또는 복제 및 클러스터링과 같은 고급 기능을 사용하려면 네트워크 연결이 필요합니다. 또한 보안 측정 (예 : 방화벽), 성능 최적화 (올바른 네트워크 연결 선택) 및 데이터 백업은 인터넷에 연결하는 데 중요합니다.

HADIDB : 가볍고 높은 수준의 확장 가능한 Python 데이터베이스 HadIDB (HADIDB)는 파이썬으로 작성된 경량 데이터베이스이며 확장 수준이 높습니다. PIP 설치를 사용하여 HADIDB 설치 : PIPINSTALLHADIDB 사용자 관리 사용자 만들기 사용자 : createUser () 메소드를 작성하여 새 사용자를 만듭니다. Authentication () 메소드는 사용자의 신원을 인증합니다. Fromhadidb.operationimportuseruser_obj = user ( "admin", "admin") user_obj.

해시 값으로 저장되기 때문에 MongoDB 비밀번호를 Navicat을 통해 직접 보는 것은 불가능합니다. 분실 된 비밀번호 검색 방법 : 1. 비밀번호 재설정; 2. 구성 파일 확인 (해시 값이 포함될 수 있음); 3. 코드를 점검하십시오 (암호 하드 코드 메일).

MySQL Workbench는 구성이 올바른 경우 MariadB에 연결할 수 있습니다. 먼저 커넥터 유형으로 "mariadb"를 선택하십시오. 연결 구성에서 호스트, 포트, 사용자, 비밀번호 및 데이터베이스를 올바르게 설정하십시오. 연결을 테스트 할 때는 마리아드 브 서비스가 시작되었는지, 사용자 이름과 비밀번호가 올바른지, 포트 번호가 올바른지, 방화벽이 연결을 허용하는지 및 데이터베이스가 존재하는지 여부를 확인하십시오. 고급 사용에서 연결 풀링 기술을 사용하여 성능을 최적화하십시오. 일반적인 오류에는 불충분 한 권한, 네트워크 연결 문제 등이 포함됩니다. 오류를 디버깅 할 때 오류 정보를 신중하게 분석하고 디버깅 도구를 사용하십시오. 네트워크 구성을 최적화하면 성능이 향상 될 수 있습니다

생산 환경의 경우 성능, 신뢰성, 보안 및 확장 성을 포함한 이유로 서버는 일반적으로 MySQL을 실행해야합니다. 서버에는 일반적으로보다 강력한 하드웨어, 중복 구성 및 엄격한 보안 조치가 있습니다. 소규모 저하 애플리케이션의 경우 MySQL이 로컬 컴퓨터에서 실행할 수 있지만 자원 소비, 보안 위험 및 유지 보수 비용은 신중하게 고려되어야합니다. 신뢰성과 보안을 높이려면 MySQL을 클라우드 또는 기타 서버에 배포해야합니다. 적절한 서버 구성을 선택하려면 응용 프로그램 부하 및 데이터 볼륨을 기반으로 평가가 필요합니다.
