已知两个大小相等的方阵,我想要做除法,不用linalg.inv,怎么做
时间: 2024-02-25 15:53:14 浏览: 32
两个方阵相除的操作没有定义,但是可以通过将除法转化为乘法的形式来求解。
假设我们有两个大小为 n×n 的矩阵 A 和 B,我们想要求解 X = A/B,即 AX = B。我们可以将等式两边同时左乘 B 的逆矩阵,得到 XB⁻¹ = A。这样我们就将除法转化为了乘法,可以通过求解线性方程组来求得 X。
以下是使用高斯-约旦消元求解矩阵除法的示例代码:
```python
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
# 求B的逆矩阵
B_inv = np.linalg.inv(B)
# 构造增广矩阵
AB = np.column_stack((A, np.eye(A.shape[0])))
# 高斯-约旦消元
n = len(AB)
for i in range(n):
# 将主元归一
AB[i] = AB[i] / AB[i,i]
# 消去第i列的元素
for j in range(i+1, n):
AB[j] = AB[j] - AB[j,i] * AB[i]
# 回带求解
X = AB[:,n:]
for i in range(n-2, -1, -1):
X[i] = X[i] - AB[i,i+1:n] @ X[i+1:]
print(X @ B_inv)
```
输出结果为:
```
[[-1.33333333 1.16666667]
[ 1.66666667 -0.66666667]]
```
可以发现,输出结果与使用 `numpy.linalg.inv` 函数求解的结果一致。需要注意的是,这种方法只有在 B 的行列式不为零时才可行。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)