Решение одновременных уравнений в Sage

В Sage (используя терминал Sage в Sage Cloud), я ожидал, что следующий результат даст [t == (1/2)]. Однако это дает результат [].

sage: var('x1 y1 x2 y2 t')
(x1, y1, x2, y2, t)
sage: eq1 = x1==t
sage: eq2 = y1==t
sage: eq3 = x2==t
sage: eq4 = y2==1-t
sage: solve([eq1,eq2,eq3,eq4,x1==x2,y1==y2],t)
[]

Следующая переформулировка не помогает:

sage: eq5 = x1==x2
sage: eq6 = y1==y2
sage: solve([eq1,eq2,eq3,eq4,eq5,eq6],t)
[]

Где я ошибаюсь?


person Community    schedule 04.03.2014    source источник


Ответы (1)


Если вы пишете

solve([eq1,eq2,eq3,eq4,x1==x2,y1==y2],t)

Тогда t — это переменная, для которой вы решаете, а x1, x2, y1, y2 — это бесплатные параметры. Очевидно, что нет решения, справедливого для любого значения этого параметра. Однако, если вы спросите:

solve([eq1,eq2,eq3,eq4,x1==x2,y1==y2],t,x1,x2,y1,y2)

Тогда вы получите то, что ожидаете:

[[t == (1/2), x1 == (1/2), x2 == (1/2), y1 == (1/2), y2 == (1/2)]]
person hivert    schedule 04.03.2014
comment
Спасибо :) Есть ли краткий способ запросить вывод только t значения решения? - person ; 04.03.2014
comment
Возможно, solution_dict поможет. - person hivert; 05.03.2014