龙空技术网

Python数学编程 第七章 解微积分问题 第七八节

语音刺客 97

前言:

现时兄弟们对“python求函数积分”大体比较看重,我们都需要了解一些“python求函数积分”的相关知识。那么小编在网络上收集了一些关于“python求函数积分””的相关知识,希望大家能喜欢,兄弟们一起来学习一下吧!

7.7 求函数积分

函数f(x)的不定积分或原函数是另一个函数F(x),其满足F'(x) = f(x)。即一个函数f的积分是另一个函数F,而函数F的导数是f。在数学上,记为。另外,定积分记为,它等于F(b) - F(a),其中F(b)和F(a)分别是f(x)的原函数x=b和x=a处的值。我们通过创建Integral对象来计算这两类积分。

下面是积分的计算,其中k是常数项:

 >>> from sympy import Integral, symbols >>> x,k = symbols(['x', 'k']) >>> Integral(k*x, x) Integral(k*x, x)

我们导入Integral和symbols两个类,并创建两个k和x相对应的Symbol对象。然后,创建一个挂于函数kx的Integral对象,并指定积分变量为x。类似于Limit和Derivative,我们可以使用doit()函数来计算积分值。

 >>> Integral(k*x, x).doit() k*x**2/2

返回的积分结果为。如果计算的导数,你将得到原始函数kx。

为了计算定积分,我们只需在创建Integral对象时将变量、下限和上限组成元组并作为输入参数即可:

 >>> Integral(k*x, (x, 0, 2)).doit() 2*k

返回的结果为。在几何背景下讨论定积分,将其可视化有助于理解。考虑下图,它展示了f(x)=x在x=0和x=5之间的图形。

f(x)=x在x=0和x=5之间的图形

现在考虑图形ABDE围成的区域,它以x轴为边界,位于x=2(点A)和x=4(点B)之间,该区域的面积可以通过将正方形ABCE的面积与直角三角形ECD的面积相加得到,即

现在我们计算积分

 >>> from sympy import Integral, Symbol >>> x = Symbol('x') >>> Integral(x, (x, 2, 4)).doit() 6

积分值与区域ABDE的面积相等。这不是巧合,你会发现这对于任何x的函数的可计算积分都是成立的。 理解定积分是函数在x轴上的指定两点间所围成的区域的面积,对于理解涉及连续型随机变量的随机事件的概率计算至关重要。

7.8 概率密度函数

考虑某一个班级的学生和他们在一次数学测验中的成绩。每个学生的得分在0到20之间(得分可能为小数)。如果我们将得分看作一个随机事件,分数自身是一个连续型随机变量,因为它可以取0到20之间的任意值。如果我要计算一个同学的得分在11到12之间的概率,我们就不能用第5章所学的方法了。为什么呢?考虑如下公式,假设是均匀概率,

其中E是11到12之间所有可能得分的集合,S是所有可能得分的集合,即1到20之间的所有实数。根据前面问题的定义,n(E)无穷大,因为不可能数出11到12之间所有可能的实数; n(S)也是如此。因此,我们需要一种不同于之前的计算概率的方法。

概率密度函数P(x)表示一个随机变量的值接近于任意值x的概率,它也可以告诉我们x落在任何一个区间内的概率。也就是说,如果我们知道了代表上述班级成绩的概率密度函数,那么我们就可以计算P(11<x<12)了。但是如何计算呢?结果表明,这个概率是由概率密度函数与点x=11和x=12之间的x轴所围成的区域的面积。先假设有一个概率密度函数,图7-8展示了我们刚才所说的这一点。

我们已经知道这个面积等于积分值,因此我们有一种简单的方法来计算成绩在11到12之间的概率了。如果不考虑数学计算的话,我们现在就可以知道概率是多少了。之前假设的概率密度函数为,其中x为得分。选择这个函数,使得得分接近10(无论大于还是小于)时的概率很大,而当这个函数远离10时概率减小得非常快。

现在计算积分,其中p(x)为之前的函数:

概率密度函数

 >>> from sympy import Symbol, exp, sqrt, pi, Integral >>> x = Symbol('x') >>> p = exp(-(x-10)**2/2)/sqrt(2*pi) >>> Integral(p, (x, 11, 12)).doit().evalf() 0.135905121983278

我们为这个函数创建了一个Integral对象,用于计算x轴上11和12之间的定积分,其中p表示概率密度函数。使用doit()函数进行计算,并使用evalf()函数得到数值结果。因此,得分位于11和12之间的概率近似等于0.14。

有关概率密度函数的补充说明

严格来讲,这个概率密度函数为小于0和大于20的分数分配了一个非零的概率,你可以使用本节中的想法来验证,这个事件的概率非常小,以至于在这里可以忽略不计。

概率密度函数有两个性质:任意x对应的函数值总是大于0,因为概率不能小于0;定积分的值等于1。第二个性质值得讨论,因为p(x)是概率密度函数,它在任意两点( x=a和x=b)之间的面积可以用积分来表示,这也是x落在这两点之间的概率。这意味着无论a和b取什么值,积分值不能超过1,因为根据定义,概率必须小于或等于1。因此,即使a和b非常大,甚至当它们分别趋于-oo和+oo时,积分值也仍然为1,我们可以进行如下验证:

 >>> from sympy import Symbol, exp, sqrt, pi, Integral, S >>> x = Symbol('x') >>> p = exp(-(x-10)**2/2)/sqrt(2*pi) >>> Integral(p, (x, S.NegativeInfinity, S.Infinity)).doit().evalf() 1.00000000000000

S.NegativeInfinity和S.Infinity分别表示负无穷和正无穷,在创建Integral对象时我们将其分别指定为积分下限和积分上限。

在处理连续型随机变量时,会遇到一种棘手的情况。在离散概率中,类似于用一个6面骰子掷出7这样的事件的概率为0。我们称概率为0的事件为不可能事件。在连续型随机变量中,取任何一个确定值的概率都为0,即使这是一个可能的事件。例如,一个学生的成绩恰好是11.5是可能的,但根据连续型随机变量的性质,这个事件的概率为0。为什么呢?思考一下,这个概率应该是积分值。因为这个积分有相同的上下限,所以积分值为0。这是一个相当不具说服力且自相矛盾的问题,让我们试着去理解它。

考虑我们之前给定的得分区间,即0到20。一个学生的得分可以是这个区间上的任意值,这意味着可以取无穷多个值。如果每一个值被选中的概率相等,那么这个概率应该是多少?根据离散概率的公式,应该是1/oo,意味着这是一个很小的数。事实上,这个数字太小以至于并没有实际意义,故定义为0。因此,学生得分为11.5的概率为0。

标签: #python求函数积分