首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算几个方程

计算几个方程
EN

Stack Overflow用户
提问于 2014-03-22 09:16:29
回答 1查看 213关注 0票数 0

具有以下职能:

代码语言:javascript
复制
f(x)= 4(x-1)(x-3)/(0-1)(0-3)
g(x)= 2(x-0)(x-3)/(1-0)(1-3)
h(x)= 3(x-0)(x-1)/(3-0)(3-1)

我想计算一下他们的和mod p。供参考,p=7

然而,我最感兴趣的是最后结果中x的幂系数。会让你明白我的意思

我的脚步:

代码语言:javascript
复制
f(x)=4(x-1)(x-3)/3
g(x)=-(x-0)(x-3)
h(x)=(x-0)(x-1)/2

f(x)+g(x)+h(x)=(8(x-1)(x-3)-6(x-0)(x-3)+3(x-0)(x-1))/6
=(8(x^2-4x+3)-6(x^2-3x)+3(x^2-x))/6
=(8x^2-32x+24-6x^2+18x+3x^2-3x)/6
=(5x^2-17x+24)/6

1/6 mod 7=6

因此,我们可以用6乘以,而不是除以括号,这也将成为mod 7:

代码语言:javascript
复制
=(5x^2-17x+24)*6
=30x^2-102+144 

这也将是mod 7,但如果我可以得到系数,我可以分别为他们每一个。最终结果将是2x^2+3x+4

所以,我感兴趣的是系数30,-102和144(或者2,3,4,不重要)。如果有一种更快或更简单的方法(我可能在计算中做了一些无用的步骤),那么如何用java进行计算才能从f+g+h中得到它们呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-22 10:11:18

据我所见,您正在计算Lagrange多项式

在3个数据点(x_0,y_0),(x_1,y_1),(x_2,y_2)的具体情况下--在您的示例中它们是(0,4),(1,2),(3,3),计算非常容易。

f(x) = y_*l_0(x) =y_0/((x_0-x_1)*(x_0-x_2)*(x^2+ -(x_1+x_2)*x + (x_1*x_2))

另外两个多项式也可以类似地计算。

在它们的求和中,您只需将相应的系数组合在一起,并做出模算法。(利用逆元的乘法可以进行除法,在素数为a^(p-2)的情况下,利用费马小定理可以方便地计算逆元。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22575679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档