我想写一个密码来解密希尔密码文本。在我们使用线性代数的地方,有人教我们如何手工操作。我的代码需要我找到一个平方矩阵的逆。你知道吗
假设我对2x2矩阵手动执行此操作。如果我的矩阵是:
|1 4 |
|11 11|
如果我找到行列式(mod 26,因为它毕竟是密码)和矩阵的伴随,我将得到:
|121 44|
|-121 11|
我可以在后面找到mod 26的元素,但是我想说的是我要得到整数。你知道吗
现在要编写这个,我有一个时间紧迫,所以我想我应该用numpy来找到这个矩阵的逆,而不是写单独的代码来找到逆和伴随。我就是这么做的:
a=[[1,11],[4,11]]
print(linalg.inv(a))
当我手动操作时, 我得到19作为行列式
Inverse= 1 |11 -4| = 11|11 -4| = |121 -44|
19|-11 1| |-11 1| |-121 11|
(I乘以11,因为19的模逆是11) 好吧,这就是我们被教导的。但是当我使用上面提到的numpy函数时:我得到:
[-0.33333333 0.12121212]
[ 0.33333333 -0.03030303]]
当我期待一个[[121 -44],[-121,11]]
的时候。你知道吗
我想我还没有理解numpy函数是如何工作的,这给了我一个错误的结果。请帮助我试着了解我能做些什么来获得我期望的结果
也许你的数学不正确?你知道吗
我得到了
{(1,11),(4,11)}
的矩阵求逆为{(-1/3,1/3),(4/33,-1/33)}
。 (你可以从在线计算器上试试,我用的是wolframalpha。)这与我得到的结果(和你的一样)相同:
我的代码:
NumPy工作得很好,它的功能是反转矩阵,这是正确的。我猜你在纸笔数学上犯了些错误。你知道吗
相关问题 更多 >
编程相关推荐