使用Sympy,我想获得一个平方根的泰勒级数展开式,其中有两个以上的项。
from sympy import *
a,b=symbols('a b', positive = True, real = True)
f=sqrt(1+a+b)
fexp=f.series(b,0,1)
我得到的是
15/(16*sqrt(b + 1)) - 5*sqrt(b + 1)/(16*(b**2 + 2*b + 1)) + sqrt(b + 1)/(16*(b**3 + 3*b**2 + 3*b + 1)) + 5*sqrt(b + 1)/16 + 15*b/(16*sqrt(b + 1)) - 5*b*sqrt(b + 1)/(8*(b**2 + 2*b + 1)) + 3*b*sqrt(b + 1)/(16*(b**3 + 3*b**2 + 3*b + 1)) - 5*b**2*sqrt(b + 1)/(16*(b**2 + 2*b + 1)) + 3*b**2*sqrt(b + 1)/(16*(b**3 + 3*b**2 + 3*b + 1)) + b**3*sqrt(b + 1)/(16*(b**3 + 3*b**2 + 3*b + 1)) + O(a)
在某种程度上简化了
simplify(fexp)
(1 + 3*b + 3*b**2 + b**3 + O(a))/(sqrt(b + 1)*(b**2 + 2*b + 1))
但没有得到预期的结果
sqrt(1+a) + O(b)
大的输出在形式上是正确的,但不是我期望的简单表达。
通过将(1 + a)= c打包到f的定义中,我正确地获得了扩展
sqrt(c) + O(b)
但是我想知道是否有一种方法可以直接使用明确的1 + a项获得简单结果。