首页 > 解决方案 > 使用 numpy 求解线性系统

问题描述

我认为我应该使用两种方法(In[4]In[5])得到相同的结果。怎么了?我可以告诉正确的是In[5]

In [1]: import numpy as np

In [2]: A = np.mat('1 2 3; 4 5 6; 7 8 9')

In [3]: B = np.mat('10;20;30')

In [4]: A.I*B
Out[4]:
matrix([[ 64.],
        [-64.],
        [ 16.]])

In [5]: np.linalg.solve(A,B)
Out[5]:
matrix([[-0.93333333],
        [ 1.86666667],
        [ 2.4       ]])

标签: pythonnumpy

解决方案


首先,我相信 A 是单数的,所以这不起作用,你能展示你正在使用的实际矩阵吗?我已经测试了以下内容:

A = np.mat('1 0 3; 0 1 2; 0 3 1')   
B = np.mat('10;20;30') 

In [15]: np.linalg.solve(A,B)                                                                                                                                                     
Out[15]: 
matrix([[-8.],
        [ 8.],
        [ 6.]])

In [16]: A.I * B                                                                                                                                                                  
Out[16]: 
matrix([[-8.],
        [ 8.],
        [ 6.]])

它有效


推荐阅读