需要源码请点赞关注收藏后评论区留言私信~~~
Scipy是一款用于数学、科学和工程领域的Python工具包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题
一、Scipy中的常数与特殊函数
1 SciPy的constants模块
SciPy的constants模块包含了大量用于科学计算的常数
显示constants模块中的常用常数
输出结果如下
2 SciPy的special模块
SciPy的special模块包含了大量函数库,包括基本数学函数、特殊函数以及NumPy中的所有函数
special模块中的常用函数
from scipy import special as S print(S.cbrt(8)) #立方根 print(S.exp10(3)) #10**3 print(S.sindg(90)) #正弦函数,参数为角度 print(S.round(3.1)) #四舍五入函数 print(S.round(3.5)) print(S.round(3.499)) print(S.comb(5,3)) #从5个中任选3个的组合数 print(S.perm(5,3)) #排列数 print(S.gamma(4)) #gamma函数 print(S.beta(10,200)) #beta函数 print(S.sinc(0)) #sinc函数
二、Scipy中的线性代数基本运算
SciPy.linalg是SciPy中实现线性代数计算的模块,常用的导入方式为: from scipy import linalg
在NumPy中,矩阵有矩阵类型和二维数组两种表示方法
(1)数组类型下的基本操作
矩阵类型数据可以用np.mat()或mat.matrix()创建
from scipy import linalg import numpy as np A = np.mat('[1,2;3,4]') print('A矩阵为:\n',A) print('A的转置矩阵为:\n',A.T) print('A的逆矩阵为:\n',A.I)
(2) 矩阵类型下的基本操作
矩阵也可以用二维数组对象表示,数组对象的矩阵操作与矩阵对象有一定的区别
数组的创建及其简单运算
M = np.array([[1,2],[3,4]]) print('M矩阵为:\n',M) print('M的转置矩阵为:\n',M.T) print('M的逆矩阵为:\n',linalg.inv(M))
2. 线性方程组求解
除了通过矩阵的逆求解外可以直接使用linalg.solve()函数求解而且效率更高
如求解下列方程组
线性方程组求解
from scipy import linalg import numpy as np a = np.array([[1, 3, 5], [2, 5, -1], [2, 4, 7]]) b = np.array([10, 6, 4]) x = linalg.solve(a, b) print(x)
3. 行列式的计算
行列式是一个将方阵映射到标量的函数。linalg.det()可以计算矩阵的行列式
M = np.array([[1,2],[3,4]]) linalg.det(M)
4. 范数
范数是数学上一个类似“长度”的概念。linalg.norm()函数可以计算向量或矩阵的范数(或者模)。常见范数及其含义见下表
矩阵常用范数及其含义如下图
范数的运算
M = np.array([[1,2],[3,4]]) print('M矩阵为:\n',M) print('M矩阵的L范数为:\n',linalg.norm(M,1)) print('M矩阵的2范数为:\n',linalg.norm(M,2)) print('M矩阵的正无穷范数为:\n',linalg.norm(M,np.inf))
5. 特征值求解
函数linalg.eig()可以用来求解特征值和特征向量
特征值分解
A = np.array([[1,2],[3,4]]) l,v = linalg.eig(A) print(l) print(v)
6. 奇异值分解
奇异值分解是一个能适用于任意的矩阵的一种分解的方法,它将M×N的矩阵A分解为
矩阵 主对角线上的元素被称为奇异值。函数linalg.svd()可以实现矩阵的奇异值分解
矩阵的奇异值分解
from numpy import * data = mat([[1,2,3],[4,5,6]]) U,sigma,VT = np.linalg.svd(data) print('U: ',U) print('SIGMA:',sigma) print('VT:',VT)
创作不易 觉得有帮助请点赞关注收藏~~~