线性代数(python)

线性代数模块

概念:线性代数是数学运算中的一个重要工具,它在图形信号处理、音频信号处理中起非常重要的作用。numpy.linalg模块中有一组标准的矩阵分解运算以及诸如逆和行列式之类的东西。例如,矩阵相乘,如果我们通过“*”对两个数组相乘的话,得到的是一个元素级的积,而不是一个矩阵点积。NumPy中提供了一个用于矩阵乘法的dot()方法

importnumpyasnp
arr_x=np.array([[1,2,3],[4,5,6]])
arr_y=np.array([[1,2],[3,4],[5,6]])
print(np.dot(arr_x,arr_y))
print(arr_x.dot(arr_y))

矩阵点积的条件是矩阵A的列数等于矩阵B的行数,假设A为m乘p的矩阵,B为p乘n的矩阵,呢么矩阵A 与B的乘积就是一个m乘n的矩阵C,其中矩阵C的第i行第j列的元素可以表示为:
在这里插入图片描述
arr_x与arr_y的乘积如图所示:
在这里插入图片描述

linalg的其他函数

在这里插入图片描述

### Python线性代数库及其使用 #### NumPy 和 SciPy NumPy 是 Python 科学计算中最基础的库之一,提供了强大的 N 维数组对象支持。对于线性代数操作而言,NumPy 提供了一个子模块 `numpy.linalg` 来实现各种基本功能,比如求解线性方程组、特征值问题、奇异值分解等[^2]。 SciPy 构建于 NumPy 之上,扩展了许多更高级别的科学和技术计算能力,特别是通过其 `scipy.linalg` 模块增强了线性代数的功能,包括但不限于更加高效的矩阵运算方法和更多种类的矩阵分解算法。 ```python import numpy as np # 创建两个矩阵 A 和 B A = np.array([[1, 2], [3, 4]]) B = np.array([[5, 6], [7, 8]]) # 计算 AB 的乘积 C=AB C = np.dot(A, B) print(C) ``` #### SymPy SymPy 是一个用于符号数学的 Python 库,在处理抽象表达式的简化、展开等方面非常有用。该库同样包含了丰富的线性代数工具集,允许用户定义符号变量并对其进行复杂的变换而不必担心数值误差的影响[^4]。 ```python from sympy import Matrix, pprint M = Matrix([[1, 2], [3, 4]]) pprint(M.inv()) ``` #### PuLP 虽然 PulP 主要专注于解决优化问题中的线性和整数规划任务,但在某些情况下也可以间接涉及到一些简单的线性关系描述。不过需要注意的是,这并不是一个专门针对线性代数设计的库[^3]。 #### 实际应用案例 - QR 分解 下面展示如何利用 NumPy 进行矩阵的 QR 分解: ```python import numpy as np m3 = np.array([ [1., 2., 3.], [5., 7., 11.], [21., 29., 31.] ]) q, r = np.linalg.qr(m3) print("Q:\n", q) print("\nR:\n", r) print("\nReconstructed matrix from Q and R:") print(np.dot(q, r)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只会偷懒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值