python – 与sympy整合

我正在尝试使用sympy执行以下集成;

x = Symbol('x')
expr = (x+3)**5
integrate(expr)

我期待的答案是:

python  – 与sympy整合

但是返回的是:

python  – 与sympy整合

以下代码适用于MATLAB:

syms x
y = (x+3)^5;
int(y)

我不确定为了使用sympy执行此操作我做错了什么.

解决方法:

这实际上是在微积分中看到的常见问题,对于这些类型的多项式表达式,您确实得到了两个答案. x的每个幂的系数都存在,但它们之间缺少常数因子.

因此,您可以使用两种方法来查找此表达式的不定积分.

>第一种方法是在u = x 3的情况下执行替换,然后相对于u进行积分.然后,如你所料,不定积分将是(1/6)*(x 3)^ 6 C.
>第二种方法是完全展开多项式并单独整合每个项.

MATLAB选择以第一种方式找到积分:

>> syms x;
>> out = int((x+3)^5)

out =

(x + 3)^6/6

稍后要注意的是,如果我们扩展这个多项式表达式,我们得到:

>> expand(out)

ans =

x^6/6 + 3*x^5 + (45*x^4)/2 + 90*x^3 + (405*x^2)/2 + 243*x + 243/2

sympy选择找到第二种方式的积分:

In [20]: from sympy import *

In [21]: x = sym.Symbol('x')

In [22]: expr = (x+3)**5

In [23]: integrate(expr)
Out[23]: x**6/6 + 3*x**5 + 45*x**4/2 + 90*x**3 + 405*x**2/2 + 243*x

您会注意到两种环境之间的答案是相同的,但缺少常数因子.因为缺少常数因子,所以没有简洁的方法将这个因素纳入你在MATLAB中看到的输出所期望的整齐多项式中.

最后要注意的是,如果要重现sympy生成的内容,请展开多项式,然后进行积分.我们得到了同情的结果:

>> syms x;
>> out = expand((x+3)^5)

out =

x^5 + 15*x^4 + 90*x^3 + 270*x^2 + 405*x + 243

>> int(out)

ans =

x^6/6 + 3*x^5 + (45*x^4)/2 + 90*x^3 + (405*x^2)/2 + 243*x

不变因素虽然不应该让你担心.最后,你最关心的是一个明确的积分,因此这些常数因子的减法将会发生,这不会影响最终结果.

边注

感谢DSM,如果您为集成指定了manual = True标志,这将尝试模拟手动执行集成,这将为您提供您期望的答案:

In [26]: from sympy import *

In [27]: x = sym.Symbol('x')

In [28]: expr = (x+3)**5

In [29]: integrate(expr, manual=True)
Out[29]: (x + 3)**6/6
上一篇:Page的生命周期及相关事件苛


下一篇:ubuntu ------ 网络 ifconfig 不显示IP地址