只获得Sage中多项式系统的单一解决方案

时间:2016-07-10 19:51:14

标签: python polynomial-math sage equation-solving

我试图通过比较不同多项式的系数来求解多项式方程组。

# Statement of Problem:
# We are attempting to find complex numbers a, b, c, d, e, J, u, v, r, s where
# ((a*x + c)^2)*(x^3 + (3K)*x + 2K) - ((b*x^2 + d*x + e)^2)     = a^2*(x - r)^2*(x - s)^3 and 
# ((a*x + c)^2)*(x^3 + (3K)*x + 2K)) - ((b*x^2 + d*x + e - 1)^2) = a^2*(x - u)*(x - v)^4


R.<x> = CC['x']
a, b, c, d, e, r, s, u, v, K = var('a, b, c, d, e, r, s, u, v, K')
y2 = x^3 + (3*K)*x + 2*K
q0 = ((a*x + c)^2)*(y2) - ((b*x^2 + d*x + e)^2)
p0 = (a^2)*((x-r)^2)*((x-s)^3)
t = (b^2 - 2*a*c)/a^2
Q0 = q0.expand()
P0 = p0.expand()
P0 = P0.substitute(s = ((t - 2*r)/3))

Relations0 = []
i = 0
while i < 6:
    Relations0.append(P0.coefficient(x, n = i) - Q0.coefficient(x, n = i))
    i = i+1 

q1 = ((a*x + c)^2)*(y2) - ((b*x^2 + d*x + e - 1)^2)
p1 = (a^2)*(x-u)*((x-v)^4)
Q1 = q1.expand()
P1 = p1.expand()
P1 = P1.substitute(u = t - 4*v)

Relations1 = []
i = 0
while i < 6:
    Relations1.append(P1.coefficient(x, n = i) - Q1.coefficient(x, n = i))
    i = i+1
Relations = Relations0 + Relations1

告诉Sage使用solve(Relations, a,b,c,d,e,r,v,K)解决多项式系统似乎非常低效,并且只导致Sage超出其内存限制。此外,试图通过求解一些变量来减少方程和变量的数量也是低效的,并且没有给出任何有效的结果。由于试图找到所有解决方案已经证明是如此困难,有没有办法只提取一个解决方案?

1 个答案:

答案 0 :(得分:1)

两个方程都有5度,这使得12个身份。然而,5个同一性是相同的,并且总是满足两个方程。因此,对于10个变量,您实际上有10个或更少的方程式。

除以a^2,即将c, b, d, e替换为c/a, b/a, d/a, e/a并引入f=1/a以减少系数方程的度数。

然后得到的系数方程为

(x + c)^2*(x^3 + 3*K*x + 2*K) - (b*x^2 + d*x + e)^2  =  (x - r)^2*(x - s)^3;
(x + c)^2*(x^3 + 3*K*x + 2*K) - (b*x^2 + d*x + e - f)^2  =  (x - u)*(x - v)^4;

http://magma.maths.usyd.edu.au/calc/

A<b, c, d, e, f, r, s, u, v, K> :=PolynomialRing(Rationals(),10,"glex");
P<x> := PolynomialRing(A);

eq1 := (x + c)^2*(x^3 + 3*K*x + 2*K) - (b*x^2 + d*x + e)^2  -  (x - r)^2*(x - s)^3;
eq2 := (x + c)^2*(x^3 + 3*K*x + 2*K) - (b*x^2 + d*x + e - f)^2  -  (x - u)*(x - v)^4;

I := ideal<A|Coefficients(eq1) cat Coefficients(eq2-eq1)>; I;

Ideal of Polynomial ring of rank 10 over Rational Field
Order: Graded Lexicographical
Variables: b, c, d, e, f, r, s, u, v, K
Basis:
[
    r^2*s^3 + 2*c^2*K - e^2,
    -3*r^2*s^2 - 2*r*s^3 + 3*c^2*K + 4*c*K - 2*d*e,
    3*r^2*s + 6*r*s^2 + s^3 - 2*b*e + 6*c*K - d^2 + 2*K,
    -2*b*d + c^2 - r^2 - 6*r*s - 3*s^2 + 3*K,
    -b^2 + 2*c + 2*r + 3*s,
    -r^2*s^3 + u*v^4 + 2*e*f - f^2,
    3*r^2*s^2 + 2*r*s^3 - 4*u*v^3 - v^4 + 2*d*f,
    -3*r^2*s - 6*r*s^2 - s^3 + 6*u*v^2 + 4*v^3 + 2*b*f,
    r^2 + 6*r*s + 3*s^2 - 4*u*v - 6*v^2,
    -2*r - 3*s + u + 4*v
]

具有5,4,3,2,2,5,4,3,2,1度的溶液数量的上限为28800。由于常用的Groebner基础算法对于更好的算法具有O(d^(n^2))的复杂性界限,因此您的运行时将乐观地用数字28800^10(Bezout绑定而不是d^n来表征。 (d^n)^n),这个常数相当大。即使删除线性方程的一个变量,这些估计也不会发生太大变化。

因此,任何符号解决方案都需要很长时间,并导致相当高度的单变量多项式作为任何三角多项式基础的一部分。