我需要在有限域F17上绘制椭圆曲线(换句话说,我想在曲线上绘制一些特定的点),但不知何故,我没有修正它。如何使用matlab绘制有限域上的椭圆曲线
的曲线由以下公式定义:
y^2 = x^3 +x + 1 (mod 17)
我尝试下面的方法,但它不能正常工作。
对于x = 0:16,情节(X,MOD(SQRT(X^3 + X + 1),16), 'R')”,端
有人可以帮忙吗?
[更新]
据Nathan和比尔的建议,这里是一个稍微修改后的版本。
x = 0:18
plot(mod(x,16), mod(sqrt(x.^3+x+1), 16),'ro')
然而,我觉得这个数字是WRONG,例如y不是整数当x = 4。
在你的曲线定义中,你写'mod 17'并且在你的matlab函数'mod 16'中,哪一个是正确的? – Lucas 2012-02-06 13:32:37
问题在于你使用'sqrt'。 matlab sqrt函数在有限体上不起作用。 – Lucas 2012-02-06 13:47:44
椭圆曲线在有限域上的绘制并没有什么意义,它看起来就像随机散射点。要计算平方根mod是一个素数,请参阅[this](http://en.wikipedia.org/wiki/Tonelli%E2%80%93Shanks_algorithm)算法,这在matlab中不应太难实现。 – 2012-02-07 22:37:58