使用numpy求解线性代数相关问题

embedded/2025/1/21 6:46:16/

numpy中有numpy.array类型和numpy.mat类型,前者是数组类型,后者是矩阵类型。数组类型相乘是逐元素相乘,而矩阵类型相乘则是矩阵乘法。

以下使用numpy.array类型来进行线性代数问题求解。

矩阵的转置

A.T

import numpy as npA = np.array([[1, 2], [3, 4]])A_T = A.T
print(A_T)

矩阵乘法

np.dot(A, B)或者是A @ B

import numpy as npA = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = np.dot(A, B)
print(C)
D = A @ B
print(D)

逆矩阵

np.linalg.inv(A)

import numpy as npA = np.array([[1, 2], [3, 4]])inv_A = np.linalg.inv(A)
print(inv_A)

求解行列式

np.linalg.det(A)

import numpy as npA = np.array([[1, 2], [3, 4]])det_A = np.linalg.det(A)
print(det_A)

矩阵的秩和迹

矩阵的秩是矩阵线性无关的行(或列)的最大数目,它反映了矩阵的“非零度”。矩阵的迹则是其主对角线上元素之和。

求解矩阵的秩:np.linalg.matrix_rank(A)

求解矩阵的迹:np.trace(A)

求解矩阵的迹,用于计算矩阵主对角线上元素的总和,较为通用。所以没有在linalg模块。

import numpy as npA = np.array([[1, 2], [3, 4]])rank_A = np.linalg.matrix_rank(A)
print(rank_A)tr_A = np.trace(A)
print(tr_A)

解线性方程组

np.linalg.solve(A, b)

import numpy as npA = np.array([[1, 2], [3, 4]])b = np.array([1, 2])
# A x = b
x = np.linalg.solve(A, b)
print(x)

计算特征值和特征向量

特征值,特征向量 = np.linalg.eig(A)

import numpy as npA = np.array([[1, 2], [3, 4]])eigenvalues, eigenvectors = np.linalg.eig(A)
print(eigenvalues)
print(eigenvectors)

奇异值分解

奇异值分解(Singular Value Decomposition,简称 SVD)是线性代数中一种重要的矩阵分解方法。它将一个矩阵分解为三个特定的矩阵乘积,这些矩阵具有明确的几何和代数意义。对于任意一个 m ∗ n m * n mn 的实数矩阵 A,其奇异值分解可以表示为:
A = U S V T A = U S V^T A=USVT
U, S, Vt = np.linalg.svd(A)

import numpy as npA = np.array([[1, 2], [3, 4]])U, S, Vt = np.linalg.svd(A)
print(U,S,Vt)

http://www.ppmy.cn/embedded/155700.html

相关文章

Spring Boot 3.4 正式发布,结构化日志!

1 从 Spring Boot 3.3 升级到 3.4 1.1 RestClient 和 RestTemplate 新增对 RestClient 和 RestTemplate 自动配置的支持,可用 Reactor Netty 的 HttpClient 或 JDK 的 HttpClient。支持的客户端优先级: Apache HTTP Components (HttpComponentsClient…

简单介绍JSONStream的使用

地址 作用 这个模块是根据需要筛选出json数据中自己所需要的数据 使用 var JSONStream require("JSONStream"); var parse require("fast-json-parse"); var fs require("fs");fs.createReadStream("./time.json").pipe(JSONSt…

C链表的一些基础知识

一、链表的基本概念 链表是一种常见的线性数据结构,它由一系列节点组成,每个节点包含数据部分和指向下一个节点的指针(单链表情况)。通过指针将各个节点连接起来,与数组不同,链表在内存中的存储不是连续的…

在 Vue 3 中实现插件化架构:设计可扩展的前端插件系统

随着前端项目的复杂性不断提升,模块化和可扩展性在架构设计中的重要性愈加突出。Vue 3 的 Composition API 和插件机制为我们实现插件化架构提供了便利。本文将深入探讨如何在 Vue 3 中构建一个高效、灵活的插件系统,为大型前端项目的扩展性打下基础。 …

如何使用Spring Boot框架整合Redis:超详细案例教程

目录 # 为什么选择Spring Boot与Redis整合? 1. 更新 pom.xml 2. 配置application.yml 3. 创建 Redis 配置类 4. Redis 操作类 5. 创建控制器 6. 启动应用程序 7. 测试 # 为什么选择Spring Boot与Redis整合? 将Spring Boot与Redis整合可以充分利…

vue3使用音频audio标签

文章目录 一、背景二、页面三、标签介绍四、代码五、代码说明场景1&#xff1a;针对加载固定格式的比如MP3文件&#xff0c;可直接使用\<audio>标签场景2&#xff1a;针对播放告警内容&#xff0c;比如中文或者英文词条情况 一、背景 项目使用vue3&#xff0c;需求针对告…

Notepad++移除所有空格

1.打开Notepad。 2.打开你想要编辑的文件。 3.按下 Ctrl H 打开查找和替换对话框&#xff0c;并选择 “正则表达式”。 4.在 “查找目标” 框中输入 \s。 5.在 “替换为” 框中留空&#xff0c;不填写任何内容。 6.点击 “全部替换” 按钮。

系统服务管理脚本-源码安装httpd

1. 安装包 去apache官网下载httpd包&#xff0c;存入虚拟机 如果需要从其他虚拟机转移到另一个虚拟机 scp httpd-2.4.62.tar.bz2 192.168.1.11: ~ ~是转移的虚拟机的目录 2.解压及环境 tar xfj httpd-2.4.62.tar.bz2 -C /usr/src/ rpm -e httpd --nodeps # 如果系统自带ht…