Как получить степенной ряд G (z ^ 2) из ​​G (z) - PullRequest
0 голосов
/ 02 июля 2019

Я думаю, что это простой вопрос, но я не могу найти, как это сделать правильно.

substpol работает почти так, как мне нужно, но удваивает степень полинома.

Например, с:

(г) = 1 + 2 * г + 3 * г ^ 2 + О (г ^ 5)

Я получил:

substpol(1+2*z^2+3*z^3 + O(z^5),z,z^2)
%20 = 1 + 2*z^4 + 3*z^6 + O(z^10)

но я бы хотел сохранить результат в O (z ^ 5):

1 + 2*z^4 + O(z^5)

Ответы [ 2 ]

1 голос
/ 02 июля 2019

Обычно я справляюсь с этой ситуацией, имея переменную для желаемой длины серии, например n, а затем просто добавляю + O(x^n), где это необходимо. Когда я очень обеспокоен производительностью, я также уменьшу длину ряда степеней перед заменой.

Точность серии можно получить с помощью serprec. Следующая функция заменит x на x ^ 2, сохраняя ту же точность:

f(s) = {subst(s, x, x^2) + O(x^serprec(s, x))}
f(1+2*x+3*x^2+O(x^5))
1 голос
/ 02 июля 2019

Вы можете выбрать нужную точность, просто добавив + O(z^5) к выражению substpol.

> substpol(1+2*'z^2+3*'z^3 + O('z^5),'z,'z^2) + O('z^5)
1 + 2*z^4 + O(z^5)
...