Python 为什么我的方程式计算不正确?

Python 为什么我的方程式计算不正确?,python,math,cryptography,algebra,Python,Math,Cryptography,Algebra,所以我正在用Python为一个uni项目制作一个BCH解码器。它需要一个有或无错误的10位码字,并且应该检测并纠正它发现的任何错误。对于双重误差校正,有一个数学公式来检测这些误差的位置和大小: 有人能看出我做错了什么吗?谢谢。这些操作将在GF(11)中执行,换句话说,它们将在第11版中执行。平方根和除法mod 11与实数不同 有先进的算法可以进行平方根和模逆运算,但对于小到11的数字,您可以使用蛮力或预计算表。在这里遵循第一原则。对于sqrt(x),尝试[0,1,2,…10],看看平方等于x时

所以我正在用Python为一个uni项目制作一个BCH解码器。它需要一个有或无错误的10位码字,并且应该检测并纠正它发现的任何错误。对于双重误差校正,有一个数学公式来检测这些误差的位置和大小:


有人能看出我做错了什么吗?谢谢。

这些操作将在
GF(11)
中执行,换句话说,它们将在第11版中执行。平方根和除法mod 11与实数不同

有先进的算法可以进行平方根和模逆运算,但对于小到11的数字,您可以使用蛮力或预计算表。在这里遵循第一原则。对于sqrt(x),尝试[0,1,2,…10],看看平方等于x时是哪一个。这是平方根。对于除法(倒数),1/x,尝试[0,1,2,…10],看看哪一个乘以x等于1 mod 11。现在我们插入这些值,得到i=3,j=4

因此,通过mod 11的计算,我们得到:

P、 Q,R=(10,7,10) (Q**2-4*P*R)=-351,-351%11=1 这很方便,因为1的平方根仅为1 mod 11。 看下面两个方程,我们需要计算1/(2*P)mod 11,换句话说,我们需要求2*P mod 11的逆,即(2P)-1 mod 11。
2*P%11=20%11=9。通过尝试所有的可能性,我们发现9-1 mod 11是5。

@meowgoesthedog所以我把它简化为:sqrt=((Q**2-4*p*R)%11)**(1/2)I=((-Q+sqrt)/(2*p))I=(I+(I%11))%11j=((-Q-sqrt/(2*p))j=(j+(j%11))%11,但我仍然得到了错误的值(10.39,10.2)。我误解你的意思了吗?我错了。看一看,我对这个主题不熟悉,但也许你应该学习11型。
i = (-Q + ((Q^2-4*P*R)^(1/2))/2*P)<br/>
j = (-Q - ((Q^2-4*P*R)^(1/2))/2*P)

b = (i*s1-s2)/(i-j)<br/>
a = s1-b
#work out error positions i and j
sqrt = ((Q**2 - 4*P*R) % 11)**(1/2)
i = (((-Q+sqrt)/(2*P))%11)
j = (((-Q-sqrt)/(2*P))%11)