dmd, благодарю за комментарий! Нет, это совсем не то. Возможно я неправильно задал вопрос.
Если не задавать
A, то для случая
функция вернет следующее для первых нескольких
:
Код:
1
(A^2 + 4*A + 1)/(A^2 + 2*A + 1)
(-A^3 + 11*A^2 + 9*A + 1)/(A^3 + 3*A^2 + 3*A + 1)
(2*A^4 - 17*A^3 + 35*A^2 + 15*A + 1)/(A^3 + 3*A^2 + 3*A + 1)
(-2*A^7 + 32*A^6 - 71*A^5 - 63*A^4 + 200*A^3 + 150*A^2 + 25*A + 1)/(A^5 + 5*A^4 + 10*A^3 + 10*A^2 + 5*A + 1)
Теперь
A у нас это
. Т.к. у нас
, будем иметь
A равно
. Если теперь его подставить в
A, то полученные выше выражения сокращаются до целых чисел. Если использовать
A=sqrt(k^2-2*k*m) программа выдает
Код:
1
2.000000000000000000000000000 + 0.E-28*I
5.000000000000000000000000000 + 0.E-28*I
16.00000000000000000000000000 + 0.E-27*I
61.00000000000000000000000000 + 0.E-27*I
Т.е. несмотря на то, что все сокращается, почему-то вылазят эти хвосты с
I. Для случая
A=(k^2-2*k*m)^(1/2) уже получше:
Код:
1
2
5
16
61
Но когда мы берем например
, прога начинает извлекать корень из
и делает это в пределах допустимых тем, за что отвечает
precision:
Код:
1
2.000000000000000000000000000
7.000000000000000000000000000
34.00000000000000000000000000
209.0000000000000000000000000
Мне нужно чтобы прога при расчетах брала
именно как
, а не как
1.732050807568877293527446342. В процессе работы с
получится, что он где-то абсолютно сократится и функция вернет целое число.
Плюс я так и не разобрался с ошибкой
Код:
*** polcoeff: domain error in polcoef: degree > 18