0

これらの機能を持つ:

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 のべき乗の係数です。私が何を意味するかをお見せします

私の手順:

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 になります。

=(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から取得するにはどうすればよいですか(計算で無駄な手順を実行した可能性があります)?

4

1 に答える 1

1

私が見る限り、あなたはラグランジュ多項式を計算しています。

3つのデータポイント(x_0、y_0)、(x_1、y_1)、(x_2、y_2)の特定のケースでは、あなたの例では(0、4)、(1、2)、(3、3)、計算は至って簡単。

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

他の 2 つの多項式も同様に計算できます。

それらの合計では、対応する係数をグループ化し、剰余演算を行うだけです。(割り算は逆元の掛け算で行うことができ、逆元はフェルマーの小定理の助けを借りて a^(p-2) として簡単に計算できます。素数モジュラスの場合です。)

于 2014-03-22T10:11:18.883 に答える