如何将多项式与其他多项式因式分解?
How to factor polynomial with other polynomials?
这是一道除法算法题。考虑多项式 f=-4x^4y^2z^2+y^6+3z^5
和多项式 G={y^6-z^5, x*z-y^2, x*y^4-z^4, x^2*y^2-z^3 *x^3-z^2}
。
如何计算关于 G 的因子 f 以满足线性组合 f=\sum_i C_i*G_i
?
我知道余数为零但不知道上面公式中的系数C_i,例如Macaulay2
这可能与关于理想的更一般的数学问题有关here。
也许只做一个重复的多项式除法就足够了,某事
像这样(粗略的伪代码..)
order G lexicographically
total_rest = 0
coefficients = {g[0]:None, g[1]:None,...}
while f > 0:
for g in G:
quotient, reminder = f / g # polynomial division
coefficients[g] += quotient
if reminder == 0:
return # We are done. f was devisible by G.
f = reminder
total_rest += lt(f) # lt: leading term
f -= lt(f)
# Now it should hold that
# f = coefficient[g]*g + ... + total_rest
这是一个非常晚的回复。您可能已经有了答案,但无论如何,答案就在这里。 "//" 使用除法算法计算系数。
R=QQ[x,y,z,MonomialOrder=>Lex];
f=-4*x^2*y^2*z^2+y^6+3*z^5;
I=ideal(x*z-y^2,x^3-z^2);
G=gb(I);
f//(gens G)
o5 = {6} | 0 |
{2} | 3x2z2-xy2z-y4 |
{5} | 0 |
{4} | 0 |
{3} | -3z3 |
所以
f=-4*x^2*y^2*z^2+y^6+3*z^5
=0*(y^6-z^5)+(3*x^2*z^2-x*y^2*z-y^4)(xz-y^2)+0*(xy^4-z^4)+0(x^2*y^2-z^3)+(-3*z^ 3)*(x^3-z^2).
另一个技巧是复制并粘贴您的代码,以便其他人可以复制并粘贴它。如果您 post 一张图片,那么我们必须手动输入。如果你在每行前放置四个空格,那么它将显示为代码,就像我在这里所做的那样。
这是一道除法算法题。考虑多项式 f=-4x^4y^2z^2+y^6+3z^5
和多项式 G={y^6-z^5, x*z-y^2, x*y^4-z^4, x^2*y^2-z^3 *x^3-z^2}
。
如何计算关于 G 的因子 f 以满足线性组合 f=\sum_i C_i*G_i
?
我知道余数为零但不知道上面公式中的系数C_i,例如Macaulay2
这可能与关于理想的更一般的数学问题有关here。
也许只做一个重复的多项式除法就足够了,某事 像这样(粗略的伪代码..)
order G lexicographically
total_rest = 0
coefficients = {g[0]:None, g[1]:None,...}
while f > 0:
for g in G:
quotient, reminder = f / g # polynomial division
coefficients[g] += quotient
if reminder == 0:
return # We are done. f was devisible by G.
f = reminder
total_rest += lt(f) # lt: leading term
f -= lt(f)
# Now it should hold that
# f = coefficient[g]*g + ... + total_rest
这是一个非常晚的回复。您可能已经有了答案,但无论如何,答案就在这里。 "//" 使用除法算法计算系数。
R=QQ[x,y,z,MonomialOrder=>Lex];
f=-4*x^2*y^2*z^2+y^6+3*z^5;
I=ideal(x*z-y^2,x^3-z^2);
G=gb(I);
f//(gens G)
o5 = {6} | 0 |
{2} | 3x2z2-xy2z-y4 |
{5} | 0 |
{4} | 0 |
{3} | -3z3 |
所以
f=-4*x^2*y^2*z^2+y^6+3*z^5
=0*(y^6-z^5)+(3*x^2*z^2-x*y^2*z-y^4)(xz-y^2)+0*(xy^4-z^4)+0(x^2*y^2-z^3)+(-3*z^ 3)*(x^3-z^2).
另一个技巧是复制并粘贴您的代码,以便其他人可以复制并粘贴它。如果您 post 一张图片,那么我们必须手动输入。如果你在每行前放置四个空格,那么它将显示为代码,就像我在这里所做的那样。