Python和科学计算认证群组  - 讨论区

标题:关于PY的微分计算。

2010年11月27日 星期六 14:00

当积分一个里面有微分的式子时,感到无所适从啊。。。

2010年11月27日 星期六 16:35

你要对这样的算式做什么计算?举个例子吧。

2010年11月27日 星期六 18:51

比如对y=exp(x**n-1)的dy/dx做x从0~100的积分(n=1~5)

画这个图

2010年11月27日 星期六 19:07

图的x轴是什么,是n么?

2010年11月27日 星期六 19:18

恩,x只是积分范围。

还有一个新问题:

x = np.linspace(0,1,100)

def Signal(a,b):
    if a-b < 0:
        return 0
    else:
        return a-b

Signal(x,0.5)就提示出错了。应该怎么改啊?

2010年11月27日 星期六 19:38

对数组进行处理的分段函数不能用if做。可以用where:

np.where(x<0.5,0,x-0.5)

当然也可以把它包装成一个函数:

def signal(x, b):

    return np.where(x<b,0,x-b)

 

2010年11月27日 星期六 19:42

y=exp(x**n-1)的导数的积分就是y函数本身吧。

而你这个是定积分,因此积分结果是:exp(100**n-1) - exp(0**n-1)

可以用sympy做符号运算:

In [24]: from sympy import *

In [25]: x,n = symbols("x,n")

In [27]: integrate(exp(x**n-1).diff(x), (x,0,100))

Out[27]: -exp(-1)*exp(0**n) + exp(-1)*exp(100**n)

2010年11月27日 星期六 22:58

哦不好意思积分号里面还要乘一个x**2..

2010年11月28日 星期日 06:33

整理一下:

 

你要计算当n=1,2,3,4,5时, x**2 * ( exp(x**n-1).diff(x) ) 的x从0到100的定积分?

 

exp(x**n-1).diff(x) 表示exp(x**n-1) 对 x 微分。

 

可以想象这个数字非常大,以至于无法用浮点数表示,不过计算方法如下:

 

首先手工计算exp(x**n-1) 对 x 微分,或者用sympy

 

In [87]: exp(x**n-1).diff(x)

Out[87]: n*x**n*exp(-1 + x**n)/x

 

那么你要积分的算式是:

 

x**2*(n*x**n*exp(-1 + x**n)/x)

 

使用scipy.integrate的定积分计算函数quad:

 

from math import exp

from scipy.integrate import quad

 

def f(n, x0, x1):

    return quad(lambda x:x**2*(n*x**n*exp(-1 + x**n)/x), x0, x1)

 

计算n=1时的定积分,前一个数是结果,后一个数是误差:

In [92]: f(1, 0, 100) 

Out[92]: (9.6932275190238917e+46, 8.9608528599586246e+35)

 

如果计算f(2, 0, 100)则出错,因为超过了浮点数的表示范围,

不过计算x从0到2的定积分倒是可以:

 

In [94]: f(2, 0, 2)

Out[94]: (60.624490210734457, 1.7318644934590501e-09)


2010年11月28日 星期日 22:27

谢谢若愚老师的专业指导!

2010年11月28日 星期日 23:00

In [87]: exp(x**n-1).diff(x)

Out[87]: n*x**n*exp(-1 + x**n)/x

这个步骤在IDLE里面应该怎么做呢?
from sympy import *?

好像不对啊。。。

2010年11月29日 星期一 06:38

安装了sympy了么?

http://sympy.org/

安装之后,from sympy import *,然后运行x,n=symbols("x,n"),就可以用x,n进行符号计算了。

2010年11月29日 星期一 22:30

原来如此。。。。

搞定了

 

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号