2016-07-10 2 views
0

Я пытаюсь решить систему полиномиальных уравнений, полученных путем сравнения коэффициентов разных полиномов.Получите только одно решение для системы полиномов в мудреце

# 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

Оба уравнения имеют степень 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), что является довольно большой, но небольшой константой. Даже удаление одной переменной для линейного уравнения в этих оценках не сильно изменится.

Таким образом, любое символическое решение займет много времени и приведет к одномерным многочленам довольно высоких степеней как части любого треугольного полиномиального базиса.

Смежные вопросы