2016-07-10 40 views
0

Ich versuche, ein System von Polynomgleichungen zu lösen, die durch den Vergleich von Koeffizienten verschiedener Polynome erhalten werden.Erhalten Sie nur eine einzige Lösung für System von Polynomen in Sage

# 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 Telling das System von Polynomen zu lösen solve(Relations, a,b,c,d,e,r,v,K) Verwendung scheint sehr ineffizient und hat nur führte zu Sage seine Speichergrenze überschritten hat. Darüber hinaus ist der Versuch, die Anzahl der Gleichungen und Variablen durch Lösen für einige der Variablen zu reduzieren, ebenfalls ineffizient und hat keine fruchtbaren Ergebnisse ergeben. Da sich der Versuch, alle Lösungen zu finden, als so schwierig erwiesen hat, gibt es eine Möglichkeit, nur eine einzige Lösung zu finden?

Antwort

1

Beide Gleichungen haben Grad 5, was 12 Identitäten ergibt. Die Identitäten von Grad 5 sind jedoch identisch und für beide Gleichungen immer erfüllt. Somit haben Sie effektiv 10 oder weniger Gleichungen für 10 Variablen.

Divide by a^2, d.h. ersetzen durch c, b, d, ec/a, b/a, d/a, e/a und einzuführen f=1/a die Grade der Koeffizientengleichungen zu reduzieren.

dann die resultierenden Koeffizientengleichungen für

(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; 

oder 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; 

geben
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 
] 

haben Grad 5,4,3,2,2,5,4 , 3,2,1 ergibt eine obere Grenze von 28800 für die Anzahl der Lösungen. Da die Groebner-Basisalgorithmen, die üblicherweise verwendet werden, eine Komplexitätsgrenze von O(d^(n^2)) für die besseren Algorithmen haben, wird Ihre Laufzeit optimistisch durch die Zahl 28800^10 (Bezout bounded statt d^n in (d^n)^n) charakterisiert, die ziemlich groß ist, aber klein die Konstante. Selbst das Entfernen einer Variablen für die lineare Gleichung wird sich in diesen Schätzungen nicht wesentlich ändern.

Daher wird jede symbolische Lösung eine lange Zeit dauern und univariate Polynome ziemlich hoher Grade als Teil jeder Dreiecks-Polynombasis ergeben.