Мой сын учится вычислять формулу параболы с помощью директрисы и точки фокусировки на своем курсе Академии Хана. (a,b) — точка фокусировки, k — параметр направляющей при y=k. Я хотел показать ему простой способ проверки результатов с помощью Sympy; программирование очень помогает в укреплении внутренних алгоритмов. Шаг 1, очевидно, состоит в том, чтобы установить уравнение.
Parabola = Eq(sqrt((y-k)**2),sqrt((x-a)**2+(y-b)**2))
Сначала я решил это для y, намереваясь затем показать, как подставить значения и вывести уравнение, таким образом:
Y = solve(Parabola,y)
Это было в разумной форме, собрав 1/(2b-2k) наружу. Затем я подставил значение фокуса и директрисы в уравнение, получив уравнение y= 1/6*(x**2+16*x+49), что верно.
Затем ему нужно было решить это в форме (x + c1) (x + c2) + остаток. Похоже, что нет прямого способа преобразовать приведенное выше уравнение в эту форму, по крайней мере, не после часа поиска в документах.
Answer = Y[0].subs({a:-8,b:-1,k:-4})
factor(Answer,deep=True)
Конечно, я понимаю, как свести к квадратной факторизации плюс остаток; мой вопрос заключается исключительно в том, возможно ли это в sympy, и если да, то как?
Второй, возможно тривиальный вопрос: почему Sympy возвращает некоторые факторизации как (константа - x), где предпочтительнее (x -константа): есть ли способ указать форму?
Спасибо за любую помощь от имени моего сына, которому я показываю чудеса Симпи.
(x+c1)(x+c2)+remainder
вообще не является уникальной формой:(x-1)(x+1) +1
совпадает с(x-2)(x+2) + 4
и т. д. Вам нужно(x+c)^2 + remainder
. - person   schedule 30.05.2016