SciPy科学计算与应用:SciPy线性代数模块入门-矩阵运算与应用

线性代数与SciPy:矩阵运算的艺术

学习目标

通过本课程,学员将掌握如何使用SciPy的线性代数模块(scipy.linalg)进行高效的矩阵运算,包括求解线性方程组、计算特征值和特征向量、以及执行奇异值分解。这些技能对于数据科学、机器学习和工程计算等领域至关重要。

相关知识点

  • SciPy线性代数运算实战指南

学习内容

1 SciPy线性代数运算实战指南

1.1 求解线性方程组

线性方程组是线性代数中的基础概念之一,它在工程、物理、经济等多个领域都有广泛的应用。一个线性方程组可以表示为 Ax=bA\mathbf{x} = \mathbf{b}Ax=b,其中 AAA 是系数矩阵,x\mathbf{x}x 是未知数向量,b\mathbf{b}b是常数项向量。在实际应用中,经常需要求解这样的方程组来找到未知数x\mathbf{x}x 的值。

1.1.1 使用SciPy求解线性方程组

SciPy的linalg模块提供了多种方法来求解线性方程组,其中最常用的是solve函数。下面是一个简单的例子,演示如何使用scipy.linalg.solve来求解一个线性方程组。

import numpy as np
from scipy.linalg import solve# 定义系数矩阵A和常数项向量b
A = np.array([[3, 2, -1], [2, -2, 4], [-1, 0.5, -1]])
b = np.array([1, -2, 0])# 使用solve函数求解线性方程组
x = solve(A, b)print("解向量x:", x)
解向量x: [ 1. -2. -2.]

这段代码首先导入了必要的库,然后定义了一个3x3的系数矩阵 AAA 和一个3维的常数项向量 b\mathbf{b}b。通过调用scipy.linalg.solve函数,可以轻松地求解出未知数向量 x\mathbf{x}x。最后,打印出解向量 x\mathbf{x}x 的值。

1.2 特征值与特征向量

特征值和特征向量是线性代数中的另一个重要概念,它们在矩阵分析、数据降维、机器学习等领域有着广泛的应用。对于一个给定的方阵 AAA,如果存在一个非零向量 v\mathbf{v}v 和一个标量 λ\lambdaλ,使得 Av=λvA\mathbf{v} = \lambda\mathbf{v}Av=λv,那么 λ\lambdaλ 称为 AAA 的特征值,v\mathbf{v}v 称为对应的特征向量。

1.2.1 使用SciPy计算特征值和特征向量

scipy.linalg模块提供了eig函数来计算矩阵的特征值和特征向量。下面是一个示例,演示如何使用scipy.linalg.eig来计算一个矩阵的特征值和特征向量。

import numpy as np
from scipy.linalg import eig# 定义一个方阵A
A = np.array([[4, 2], [1, 3]])# 使用eig函数计算特征值和特征向量
eigenvalues, eigenvectors = eig(A)print("特征值:", eigenvalues)
print("特征向量:\n", eigenvectors)
特征值: [5.+0.j 2.+0.j]
特征向量:[[ 0.89442719 -0.70710678][ 0.4472136   0.70710678]]

在这段代码中,首先定义了一个2x2的方阵 AAA。然后,通过调用scipy.linalg.eig函数,可以计算出矩阵 AAA 的特征值和特征向量。eig函数返回两个值:一个是一维数组,包含所有的特征值;另一个是二维数组,每一列是一个特征向量。最后打印出特征值和特征向量。

1.3 奇异值分解

奇异值分解(SVD)是线性代数中的一个重要工具,它将一个矩阵分解为三个矩阵的乘积,即 A=UΣVTA = U \Sigma V^TA=UΣVT。其中,UUUVVV 是正交矩阵,Σ\SigmaΣ 是一个对角矩阵,其对角线上的元素称为奇异值。SVD在数据压缩、图像处理、推荐系统等领域有着广泛的应用。

1.3.1 使用SciPy进行奇异值分解

scipy.linalg模块提供了svd函数来执行奇异值分解。下面是一个示例,演示如何使用scipy.linalg.svd来对一个矩阵进行奇异值分解。

import numpy as np
from scipy.linalg import svd# 定义一个矩阵A
A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 使用svd函数进行奇异值分解
U, s, Vt = svd(A)print("U矩阵:\n", U)
print("奇异值:", s)
print("V转置矩阵:\n", Vt)
U矩阵:[[-0.21483724  0.88723069  0.40824829][-0.52058739  0.24964395 -0.81649658][-0.82633754 -0.38794278  0.40824829]]
奇异值: [1.68481034e+01 1.06836951e+00 3.33475287e-16]
V转置矩阵:[[-0.47967118 -0.57236779 -0.66506441][-0.77669099 -0.07568647  0.62531805][-0.40824829  0.81649658 -0.40824829]]

在这段代码中,首先定义了一个3x3的矩阵 (A)。然后,通过调用scipy.linalg.svd函数,可以对矩阵 (A) 进行奇异值分解。svd函数返回三个值:(U) 矩阵、奇异值数组 (s) 和 (V) 矩阵的转置 (V^T)。最后打印出 (U) 矩阵、奇异值和 (V) 矩阵的转置。
反向验证:

import numpy as np
from scipy.linalg import svd# 定义原始矩阵A
A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 进行奇异值分解
U, s, Vt = svd(A)# 1. 将奇异值向量转换为对角矩阵Σ
# 创建与A同形状的零矩阵
Sigma = np.zeros_like(A, dtype=float)
# 将奇异值填充到对角线
np.fill_diagonal(Sigma, s)
print("Sigma========")
print(Sigma)# 2. 计算 U × Σ × Vt 的乘积
A_reconstructed = U @ Sigma @ Vt  # @ 是矩阵乘法运算符# 3. 打印结果进行比较
print("原始矩阵A:\n", A)
print("\n重构矩阵U×Σ×Vt:\n", A_reconstructed)
print("\n原始矩阵与重构矩阵的差异:\n", np.abs(A - A_reconstructed))
print("\n最大差异值:", np.max(np.abs(A - A_reconstructed)))

通过本课程,学员将能够熟练地使用SciPy的线性代数模块来解决实际问题,为数据科学和工程计算之旅打下坚实的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/96973.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/96973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Js】易混淆的CommonJS和ESM(ES Module),及它们区别

前言: 【CommonJs】exports,modules.exports,require的区别 📌概念 1. CommonJS 概念 历史:早期 JavaScript 主要跑在浏览器,没有模块系统;Node.js 为了管理代码,引入了 CommonJS…

自然处理语言NLP: 基于双分支 LSTM 的酒店评论情感分析模型构建与实现

文章目录数据预处理一、导入依赖库二、定义路径和基础参数三、构建词表字典(data_deal函数)四、文本转索引五、词表长度统计六、填充数据(统一文本长度)七、划分训练集和测试集八、批量加载数据完整代码简单模型构建步骤 1&#x…

nginx代理 flink Dashboard、sentinel dashboard的问题

nginx代理 flink web、sentinel dashboard的坑 Nginx反向代理Flink Dashboard和Sentinel Dashboard的问题 问题背景 问题分析(sentinel为例) 原理解析 1. 尾部斜杠的重要性 2. 修复方案的工作原理 3. 代理配置的细节 解决方案 经验总结 Nginx反向代理Flink Dashboard和Sentinel…

Baumer高防护相机如何通过YoloV8深度学习模型实现形状检测器的使用(YOLOv8 Shape Detector)

《------往期经典推荐------》 AI应用软件开发实战专栏【链接】 序号项目名称项目名称11.工业相机 YOLOv8 实现人物检测识别:(C#代码,UI界面版)2.工业相机 YOLOv8 实现PCB的缺陷检测:(C#代码&#xff0…

代码随想录算法训练营第五十天|图论part08

软件构建(拓扑排序)题目描述:某个大型软件项目的构建系统拥有 N 个文件,文件编号从 0 到 N - 1,在这些文件中,某些文件依赖于其他文件的内容,这意味着如果文件 A 依赖于文件 B,则必须…

要闻集锦|阿里官网调整为四大业务板块;华为云重组多个事业部涉及上千人;群核科技在港交所更新招股书

互联网大事件阿里官网调整为四大业务板块阿里巴巴官网“我们的业务”板块变更,从六大业务集团其他业务变更为阿里中国电商集团、阿里国际数字商业集团、云智能集团及所有其他业务。饿了么、飞猪归入阿里中国电商集团,高德地图、菜鸟、优酷、大麦娱乐等归…

潇洒郎: Python实现检测鼠标移动和音视频播放行为——打造省电脚本

目标:Windows自动睡眠监控器,检测笔记本长时间无用户行为操作后进入睡眠模式以节省电量 #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Windows自动睡眠监控器 检测笔记本长时间无用户行为操作后进入睡眠模式以节省电量 """ import os …

Qt工具栏中图标槽函数没有响应的问题分析

1、在ui_QtGuitTest.h中有定义 QAction *action_distanceMeasureQAction *action_distanceMeasure;在QtGuiTest.cpp的InitToolBar()函数中也有定义,如下图所示:2、槽函数为//距离测量槽函数 void QtGuiTest::slot_onDistanceMeasureButtonClicked() {_is…

Java中 0.05 + 0.01 ≠ 0.06 揭秘浮点数精度陷阱

目录 问题现象根本原因详细分析实际验证解决方案最佳实践总结 一开始看到这个说法的时候我还不相信,还以为之前我学的都错完了,研究之后才明白为什么 问题现象 令人困惑的计算结果 public class FloatPrecisionDemo {public static void main(Strin…

【44页PPT】DeepSeek在银行业务场景的应用(附下载方式)

篇幅所限,本文只提供部分资料内容,完整资料请看下面链接 https://download.csdn.net/download/2501_92808811/91716562 资料解读:【44页PPT】DeepSeek在银行业务场景的应用 详细资料请看本解读文章的最后内容。在智能化时代的浪潮下&#x…

TOPSIS

概述TOPSIS(逼近理想解排序法)是一种多属性决策方法,通过计算各方案与 “理想解”“负理想解” 的距离,排序选最优。操作步骤输入原始决策矩阵(方案 指标);标准化处理(消除量纲&…

Base64 编码优化 Web 图片加载:异步响应式架构(Java 后端 + 前端全流程实现)

异步响应式图片加载与Base64编码实现方案 在Web开发中,图片加载效率直接影响页面性能和用户体验。本文介绍一套基于Java后端和JavaScript前端的实现方案,通过Base64编码传输图片,结合异步加载和响应式布局,实现高效、安全的图片展…

【C语言】分支和循环

目录 前置:关系操作符和逻辑操作符 关系操作符 逻辑操作符 其他补充知识 分支语句: 一、if类 基本式:if... 变式1:if...else... 变式2:if...else if...else... 变式3:嵌套 二、switch 循环语句&…

商超客流密度统计误差率↓35%!陌讯多模态融合算法在零售智慧运营的实战解析

原创声明 本文为原创技术解析文章,核心技术参数与架构设计引用自 “陌讯技术白皮书(2024 版)”,技术描述均经过重写转换,无复制官网文案情况,仅用于计算机视觉技术交流与实战经验分享。 一、零售客流统计的…

游戏空间划分技术

【前言】 空间划分主要是为了降低搜索比较量,如果不采用空间划分,暴力遍历也是可以求解的,但耗时过长。通过空间划分将全局搜索简化为为局部搜索,大大降低搜索量。 搜索出来后最终还要是一一比较,比较的是距离&#…

【C#】观察者模式 + UI 线程调度、委托讲解

“观察者模式 UI 线程调度”的典型应用A. 涉及的知识点(抽象)观察者模式(Observer Pattern) 发布者:DemoDeviceService.cs 内部生成一帧数据 ScopeFrame,通过 OnScopeFrame?.Invoke(frame) 发布事件。订阅…

Linux应用软件编程---网络编程(TCP:[ 其他机制、头部标志位、应用示例 ]、 HTTP:[ 万维网、概念、格式、报文、应用示例 ]

一、TCP 网络协议补充内容1、TCP 的其他机制1)TCP 头部的标志位TCP 头部可用抓包工具 (wireshark) 来查看。头部标志位用途SYN请求建立连接标志位ACK响应报文标志位PSH携带数据标志位,通知接收方该从缓冲区读数据FIN请求断开连接标志位RST复位标志位URG紧…

基于开源飞控pix的无人机装调与测试

文章目录 前言资源下载1、地面站软件独家汉化版QGC地面站(推荐)原版QGC地面站Mission Planner地面站 2、安装好环境的虚拟机安装虚拟机打开虚拟机文件 3、完整的各版本PX4、QGC源码PX4QGC 一、无人机基本常识/预备知识(1)无人机飞…

Ubuntu解决makefile交叉编译的问题

问题1:/usr/lib/gcc-cross/aarch64-linux-gnu/11/../../../../aarch64-linux-gnu/bin/ld: cannot find -lwiringpi: No such file or directory 找不到-lwiringpi库路径,其实在3rd/usr/lib/aarch64-linux-gnu下没有libwiringPi.so.2 …

ExcelUtils实现 设置内容 插入行 复制行列格式

ExcelUtils实现:1.实现输入 例如 2 A 的excel格式,自动填充对应excel单元格;2.实现复制并新增下一行;3.实现控制复制上一行相同列的格式;4.实现控制复制同一行上一列的格式;/*** 在指定行下方插入新行并复…