Есть ли простой способ определить функцию из результата последовательной команды?(то есть без остатка)
Например
[> series(cos(x), x=0, 5);
1-1/2*x^2+1/24*x^4+O(x^5)
и я хочу определить функцию
[> f:=(x)->1-1/2*x^2+1/24*x^4;
Я не знаю простого способа сделать это без ручного копирования / вставки, мне нужно сделать это динамически.На данный момент способ, которым я занимаюсь, действительно громоздок:
[> S:=series(cos(x), x=0, 5);
f:=unapply(`+`(seq(op(S)[2*k-1]*x^(op(S)[2*k]), k=1..nops(S)/2-1)), x);
В случае обобщенного ряда, требующего дробных показателей Я могу сделать это следующим образом:
[> S:=series(sqrt(sin(x)), x=0, 4);
f:=unapply(S-op(S)[nops(S)], x);
Я не знаю надежного способа объединить оба случая в один (количество терминов во втором случае аналогично порядку, хотя в первом случае оно почти вдвое больше), но это ненадежный способ, поскольку некоторые функции могут иметь очень мало терминов даже для высокого порядка).