张孔生
二重积分是一重积分的推广,是微积分和数学分析里非常重要的一个概念[1,2]。二重积分能否精确计算,主要依赖于积分区域的形状和被积函数的表达式。现有的教学方式通常是在讲解定义之后,通过一系列的习题让学生熟悉二重积分的计算技巧。二重积分通常需要转化为累次积分,再利用相应的积分技巧计算积分值。但是,当被积函数较复杂时,则需要考虑近似计算。本文的目的是通过课堂教学,让学生学会利用R软件,通过简单的编程,得到二重积分的近似值。
现有的计算软件非常多,R软件是其中一个,也是统计学里广泛应用的一个软件,使用R软件进行教学的主要原因是其体积小且免费,这有利于我们在课堂上很方便地使用R软件。在计算变上限二重积分时,R软件还没有现成的软件包,我们拟结合概率论的相关知识[3,4],通过蒙特卡罗模拟方法,对二重积分进行近似计算。
先从特殊的二重积分的近似计算开始,介绍近似计算的原理以及相应的步骤,再给出更一般的二重积分的例子,此积分不能够得到精确值,但可以应用蒙特卡罗模拟方法[5]得到近似值,进而说明此方法的实用性。
例1计算二重积分
(1)
Davidson[6]在一份讲义中,提出了二维连续型随机变量的随机数生成方法,具体地,
随机变量X的边际概率密度函数为
随机变量X的累积分布函数为
FY|X(y|x)
以下是R软件的命令:
set.seed(12345)
n=100000
u1=runif(n)
u2=runif(n)
S=sqrt(u1);
T=S*u2;
f1=S*T;
esti1=mean(f1)
计算的结果为0.2505365, 与真实值0.25非常接近,可以看出偏差非常小。
例2计算二重积分
2)
先在被积函数里构造一个常数2,即
其中(X,Y)服从区域D={(x,y)|0≤x≤1,0≤y≤x}的均匀分布。相应的R程序如下(此处省略例1的R程序的前6行)。
f2=exp(S+T);
esti2=1/2*mean(fxy2)
例3计算二重积分
(3)
由于被积函数的特点,不能精确计算此二重积分的值。
按前述方法,通过模拟,I3≈1.070933。程序如下(此处省略例1的R程序的前6行)。
f3=exp(S^2+T^2);
esti3=1/2*mean(f3)
本文主要利用R软件计算变上限的二重积分,关键是将二重积分转化成变量函数的数学期望,重点是在联合分布函数已知的条件下,如何生成二维随机向量,再利用算术平均即可得到二重积分的近似值,与精确值比较,发现给出的模拟方法精度高,且计算量较小,使得二重积分计算更易于求解。
通过适当的软件教学让同学们及时掌握所学的内容,进一步提升同学们的实际动手操作能力,这也为他们以后学习或深造打下基础,让他们及早地了解软件的工作方式,培养同学们的学习兴趣。