【scipy 基础】--线性代数

这篇具有很好参考价值的文章主要介绍了【scipy 基础】--线性代数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SciPylinalg模块是SciPy库中的一个子模块,它提供了许多用于线性代数运算的函数和工具,如矩阵求逆、特征值、行列式、线性方程组求解等。

相比于NumPy的linalg模块SciPy的linalg模块包含更多的高级功能,并且在处理一些特定的数值计算问题时,可能会表现出更好的性能。

1. 主要功能

scipy.linalg模块主要功能包括:

类别 主要函数 说明
基础运算 包含inv,slove等20多个函数 求解逆矩阵,线性方程等等
特征值问题 包含eig,eigvals等8个函数 求解各种类型矩阵的特征值
分解运算 包含lu,svd等将近30个函数 矩阵的LU分解,奇异值分解等等
矩阵运算 包含logm,sinm,cosm等10多个函数 计算矩阵的对数,指数,sin,cos等等
矩阵方程求解 包含solve_sylvester,solve_continuous_are等5个函数 计算西尔维斯特方程,CARE,DARE等代数方程
特殊矩阵运算 包含blcok_diag,circulant等将近30个函数 创建块对角矩阵,循环矩阵,相伴矩阵等等
其他 包含4个函数 BLAS,LSPACK等函数对象

Scipy库的线性代数模块包含将近100个各类函数,用于解决线性代数中的各类计算问题。

下面演示几种通过scipy.linalg来进行的常用计算。

2. 矩阵计算

提起线性代数,就不得不提矩阵运算。

2.1. 特征值

矩阵的特征值特征向量是矩阵理论中的重要概念,它们分别代表了矩阵对某些向量进行变换时所具有的特定的拉伸和旋转效果。

具体来说,对于一个给定的矩阵\(A\),如果存在一个非零的向量\(v\),使得\(Av\)\(v\)的一个固定的倍数,
\(Av = \lambda v\),那么\(\lambda\)就是\(A\)的一个特征值\(v\)就是对应于特征值\(\lambda\)特征向量

特征值和特征向量在许多领域都有应用,包括图像处理、信号处理、数据压缩、物理学、经济学等。
它们在求解线性方程组、判定矩阵的稳定性、计算矩阵的秩等数学问题中也有重要的应用。

import numpy as np
import scipy.linalg as sla

A = np.random.rand(3, 3)
sla.eigvals(A)
# 运行结果(返回特征值)
array([0.87067114+0.j, 0.25270355+0.j, 0.52811777+0.j])

sla.eig(A)
# 运行结果(返回特征值和特征向量)
(array([0.87067114+0.j, 0.25270355+0.j, 0.52811777+0.j]),
 array([[-0.55290631, -0.88616977, -0.80241551],
        [-0.73988407,  0.44869198, -0.51813093],
        [-0.38323122,  0.11566608,  0.29609067]]))

eigvals函数返回的是特征值,eig函数返回的是特征值和对应的特征向量。

2.2. 奇异值

特征值和特征向量是针对方阵的,也就是NxN的矩阵。
实际场景中,很多矩阵并不是方阵,为了了解这类矩阵,就要对其进行奇异分解。

具体来说,对于一个m×n的矩阵A,奇异分解就是将其分解为三个矩阵的乘积:

  1. 一个m×r的矩阵U
  2. 一个r×r的对称正定矩阵S
  3. 以及一个r×n的矩阵V

其中r是由A的奇异值所决定的。A的奇异值就是S矩阵的对角线元素,也就是A的正特征值的非负平方根。
这些奇异值反映了矩阵A在一些方向上的拉伸或压缩效果。

# 创建一个 4x3 的矩阵
A = np.random.rand(4, 3)

# 奇异分解,得到 U,S,V矩阵
U, S, V = sla.svd(A)
print("奇异值: {}".format(S))
# 运行结果
奇异值: [1.6804974  0.67865812 0.3322078 ]

2.3. 逆矩阵

逆矩阵是指对于一个n阶方阵A,如果存在一个n阶方阵B,使得AB=BA=E
则称方阵A是可逆的,并称方阵B是A的逆矩阵
其中E是单位矩阵

逆矩阵的重要意义在于它可以表示为某个线性变换的逆变换,从而在逆变换的研究和应用中起到关键作用。
此外,逆矩阵还与方程组的解、行列式的性质等领域紧密相关。

A = np.random.rand(3, 3)

# 求解逆矩阵
sla.inv(A)

# 运行结果:
array([[-1.41573129,  0.13168502,  1.5952333 ],
       [ 3.572943  , -1.02580488,  1.10932935],
       [-2.82777937,  2.10823192, -2.39404249]])

# 非方阵
A = np.random.rand(4, 3)

# 非方阵求解逆矩阵会抛出异常
sla.inv(A)
# 运行结果:
ValueError: expected square matrix

Scipy库用inv函数求解逆矩阵非常简单,注意只有方阵能求解逆矩阵。

3. 线性方程组

其实求解线性方程组本质也是矩阵运算,比如下面的线性方程组:
\(\begin{cases} \begin{align*} 3x+2y-z \quad & = 1\\ -y+3z \quad & = -3 \\ 2x-2z \quad & =2 \end{align*} \end{cases}\)

求解方式转换为系数矩阵和结果向量,然后求解:

# 创建一个系数矩阵  
A = np.array([[3, 2, -1], [0, -1, 3], [2, 0, -2]])  
  
# 创建一个结果向量  
b = np.array([1, -3, 2])  
  
# 使用solve函数求解线性方程组  
ret = sla.solve(A, b)  
  
# 输出解向量  
print("Solution vector ret:", ret)
# 运行结果:
Solution vector x: [ 0. -0. -1.]

4. 总结

本篇概要介绍了Scipy库的linalg模块,并演示了如何应用在求解矩阵和线性方程组。

linalg模块提供了非常丰富的各类函数,这里演示的几个函数目的是为了展示其使用方法,
线性代数中的各类运算几乎都可以在此模块中找到相应的函数。文章来源地址https://www.toymoban.com/news/detail-746088.html

到了这里,关于【scipy 基础】--线性代数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 线性代数的学习和整理2:线性代数的基础知识(整理ing)

    目录 1 写在前面的话 1.1 为什么要先总结一些EXCEL计算矩阵的工具性知识, 而不是一开始就从基础学起呢?  1.2 关于线性代数入门时的各种灵魂发问: 1.3 学习资料 2 什么是线性(关系)? 2.1 线性的到底是一种什么关系: 线性关系=正比例/正相关关系 ≠ 直线型关系 2.2 一次函数

    2024年02月14日
    浏览(69)
  • 线性代数基础【3】向量

    一、基本概念 ①向量 ②向量的模(长度) ③向量的单位化 ④向量的三则运算 ⑤向量的内积 二、向量运算的性质 (一)向量三则运算的性质 α + β = β + α α + (β + γ) = (α + β) + γ k (α + β) = kα + kβ (k + l) α = kα + lα (二)向量内积运算的性质 (α , β) = (β , α) = α^Tβ = β^Tα (α , α)

    2024年02月03日
    浏览(51)
  • 线性代数:基础解系

    线性代数是大学数学中非常重要的一门课程。它包括向量空间、线性映射、矩阵、行列式、特征值和特征向量等内容。其中,基础解系是线性代数中非常基础的一个概念,也是后续许多内容的基础。 1.1 齐次线性方程组 我们先回顾一下齐次线性方程组的概念。齐次线性方程组

    2024年02月08日
    浏览(45)
  • 线性代数基础--矩阵

     矩阵是由排列在矩形阵列中的数字或其他数学对象组成的表格结构。它由行和列组成,并且在数学和应用领域中广泛使用。 元素:矩阵中的每个数字称为元素。元素可以是实数、复数或其他数学对象。 维度:矩阵的维度表示矩阵的行数和列数。一个 m × n 的矩阵有 m 行和

    2024年02月11日
    浏览(47)
  • 线性代数基础【2】矩阵

    一、基本概念 ①矩阵 像如下图示的为矩阵,记为A=(aij)m*n ②同型矩阵及矩阵相等 若A、B为如下两个矩阵 如果A和B的行数和列数相等,那么A和B为同型矩阵,且A和B的元素相等(即:aij=bij),则称A和B相等 ③伴随矩阵 设A为n阶矩阵(如上图所示),设A的行列式|A|,则A中aij的余子式为Mij,代数余

    2024年02月04日
    浏览(53)
  • 线性代数基础知识

    计算机视觉一些算法中常会用到线性代数的一些知识,为了便于理解和快速回忆,博主这边对常用的一些知识点做下整理,主要来源于如下这本书籍。 1.  矩阵不仅仅是数字排列而已,不然也不会有那么大精力研究它。其可以表示一种映射  关于映射,变换的一些帖子可以参

    2024年02月03日
    浏览(60)
  • 机器学习线性代数基础

    本文是斯坦福大学CS 229机器学习课程的基础材料,原始文件下载 原文作者:Zico Kolter,修改:Chuong Do, Tengyu Ma 翻译:黄海广 备注:请关注github的更新,线性代数和概率论已经更新完毕。 1. 基础概念和符号 线性代数提供了一种紧凑地表示和操作线性方程组的方法。 例如,以

    2024年02月13日
    浏览(48)
  • 线性代数基础--向量

    目录 向量的概念 基本概念 抽象概念 向量的意义  几何意义 物理意义 欧式空间 特点和性质  行向量与列向量 行向量 列向量 两者的关系 向量的基本运算与范数 向量的基本运算 向量的加法 数乘运算(实数与向量相乘) 转置 向量的范数 向量的模与内积 向量的模 向量的内积

    2024年02月11日
    浏览(57)
  • 线性代数(一)——向量基础

    线性代数的核心是向量的加和乘两种运算的组合,本篇博客为线性代数的一个引子,主要从向量、线性组合和矩阵逐步引出线性代数的相关知识。 首先介绍的是向量相关,向量是基础。 已知列向量: υ = [ v 1 v 2 ] boldsymbol{upsilon}=left[begin{matrix} v_1 \\\\ v_2end{matrix} right] υ =

    2024年03月21日
    浏览(50)
  • 基础线性代数——千足虫

    题目来源 公元 2333 2333 2333 年 2 2 2 月 3 3 3 日,在经历了 17 17 17 年零 3 3 3 个月的漫长旅行后,“格纳格鲁一号”载人火箭返回舱终于安全着陆。此枚火箭由美国国家航空航天局(NASA)研制发射,行经火星、金星、土卫六、木卫二、谷神星、“张衡星”等 23 23 23 颗太阳系星球

    2024年04月13日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包