使用Geogebra计算重积分、累次积分

您所在的位置:网站首页 求二重积分的导数 使用Geogebra计算重积分、累次积分

使用Geogebra计算重积分、累次积分

2023-04-19 02:12| 来源: 网络整理| 查看: 265

本文将包括两部分内容:

利用Geogebra中的CAS工具进行重积分,累次积分计算的操作细节与问题;利用Geogebra中的代码进行重积分,累次积分计算的操作细节与问题。

在每一个具体的例子后都有代码总结与一般形式代码总结。

注:本文不包含对重积分和累次积分转换的原理解释,请有需要的读者自己寻找阅读相关内容。

一. 如何利用Geogebra中的CAS进行重积分/累次积分的计算

写下本文的原因主要是我在处理一个立体几何课题时遇到了一个组合体体积的问题。当时没有办法把多个曲面围成的体设置为一个对象然后去求体积,所以想到了利用三重积分去计算体积。但是在Geogebra 5.0代码中内置的积分相关语句Integral与IntegralBetween功能,暂时都无法直接实现含参变量积分的计算。

现在在百度搜索引擎中搜索关键句“Geogebra 重积分”可以搜索到如下链接[1]:

图中所示区域:b:b: y ≥ 1 ∧ y ≤ x ∧ x ≤ 2 ∧ x ≥ 1

按照原帖所示代码,计算二元函数 a(x,y)=xy 在如图所示区域的积分的代码为:

Integral(Integral(a,y,1,x),x,1,2)

但是在输入该段代码后,Geogebra会出现报错:

在这里,Geogebra认定多元函数a(x,y)的输入不合法,将预设函数a直接替换成xy会出现同样的问题。这一问题的原因是代数区无法通过代码进行此类计算,我们需要切换到CAS计算区进行计算。

选中导航栏的View——CAS。然后即可输入上述代码,即可计算出结果。

必须在CAS才能进行含参变量积分的计算,直接在Input区输入代码会判误。

如果需要将这个数值设置为一个可操作的对象,我们只需要点击CAS视图中的可视按钮,代数区就会自动出现这个数值。

将得到的积分结果变成一个可操作的对象。

如是便可以同理地计算所有的重积分和累次积分。

但是在CAS中操作的时候可能会出现一些问题:

我们以一个三重积分为例,其他类型可以同理处理。

\iiint_Vxdxdydz,V由三个坐标平面以及x+2y+z=1围成。

很显然, \iiint_Vxdxdydz=\int_0^1xdx\int_0^{\frac{1-x}{2}}dy\int_0^{1-x-2y}dz

(1)我能否逐步进行计算?

对于一些上下限上的函数比较复杂的积分(如 \int_{-\sqrt{x^2+y^2}}^{\frac{1}{\sqrt{x^2+y^2}}}xyzdz 这样的积分),我们自然会选择一段一段进行计算,否则单次代码量太大,括号很多,非常容易出错。

问题的答案是肯定的。对上述累次积分的计算,我们可以按照以下步骤进行:

1. 首先计算 \int_0^{1-x-2y}dz (当然,我们计算 \int_0^{1-x-2y}xdz 也是一样的)。在CAS代码区内输入:

integral(1,z,0,1-x-2y)

在这里,1代表函数1,z代表积分变量,0是积分下限,1-x-2y是积分上限。

然后就会出现第一步积分的结果 \int_0^{1-x-2y}dz=1-x-2y 。

2. 然后计算 \int_0^{\frac{1-x}{2}}(1-x-2y)dy ,类似地有:

integral(1-x-2y,y,0,(1-2x)/2)

在这里有一个简便操作:在输入第一步积分得到的二元函数时,我们可以直接点击第一步得到的结果进行快捷输入。

直接点击第一步得到的结果,进行快捷输入。

然后得到 \int_0^{\frac{1-x}{2}}(1-x-2y)dy=\frac{x² - 2x + 1}{4}

3. 最后,计算最后一个积分,即 \int_0^1x\times\frac{x² - 2x + 1}{4} dx ,可以进行同上的操作得到结果。

Integral(1 / 4 (x² - 2x + 1)*x,x,0,1)

然后得到正确结果 \frac{1}{48} 。

代码整理如下:

\int_0^1xdx\int_0^{\frac{1-x}{2}}dy\int_0^{1-x-2y}dz

Integral(1,z,0,1-x-2y) Integral(1-x-2y,y,0,(1-2x)/2) Integral(1 / 4 (x² - 2x + 1)*x,x,0,1)

对于一般的累次积分(以三次为例)

\int_a^b\int_{c(x)}^{d(x)}\int_{e(x,y)}^{f(x,y)}F(x,y,z)dzdydx ,

Integral(F(x,y,z),z,e(x,y),f(x,y)) \\ 输出结果F1(x,y) Integral(F1(x,y),y,c(x),d(x)) \\ 输出结果F2(x) Integral(F2(x),a,b) \\输出最后结果

(2)我能否直接用一行代码计算?

与上面对应地,如果积分比较简单,那么分三段逐个计算是比较麻烦的。如果你只需要最后积分的结果,那么你可以直接用一行代码解决积分,不需要了解中间的结果。

Integral(Integral(Integral(1,z,0,1-x-2y),y,0,(1-x)/2)*x,x,0,1)

代码逻辑和(1)中讲述的是完全相同的。这里只需要注意,最里面的Integral是计算流程中第一个应该被计算的积分,然后向外展开。

代码汇总:

对一般的累次积分\int_a^b\int_{c(x)}^{d(x)}\int_{e(x,y)}^{f(x,y)}F(x,y,z)dzdydx ,单次代码如下:

Integral(Integral(Integral(F(x,y,z),z,e(x,y),f(x,y)),y,c(x),d(x)),x,a,b)

(3)我利用以上代码在CAS区进行了计算,但是出现了错误结果。

在已经排除了代码输入错误的情况下,出现这种错误可能是因为你的赋名方式不对。如果你想在CAS区直接对每一步的结果赋予一个变量名(如F1),你需要按照F1:=***的格式进行,这与代码区直接赋予变量名的方式是不一样的:

F1:=Integral(Integral(Integral(1,z,0,1-x-2y),y,0,(1-x)/2)*x,x,0,1)

二. 如何利用Geogebra中的代码直接计算重积分与累次积分

在CAS中我们可以直接利用代码进行计算,但是如果我们需要更多的细节(如利用Newton-Leibniz公式进行含参变量积分计算时的过程),我们就需要站在手解积分的高度上来编写代码。在这里,我们依然以积分 \iiint_Vxdxdydz=\int_0^1dx\int_0^{\frac{1-x}{2}}dy\int_0^{1-x-2y}xdz 为例。

考虑到上面提到的,在代码区直接输入含参变量积分会出现对象格式错误的问题,我们需要逐步积分。

1. 计算 \int_0^{1-x-2y}dz ,这首先就要先设出被积函数 F_1(x,y,z)=x (虽然直接计算这个积分很简单,我们还是以更一般性地步骤进行,即令此处的被积函数为1)。

F1(x,y,z)=x

需要注意的是,在定义函数名的时候(也就是等号之前),绝对不可以略去表示变量个数的(x,y,z)!这会干扰后面的赋值计算!

2. 利用Newton-Leibniz公式计算第一步中的积分。计算方法是\int F_1(x,y,z)dz|^{z=1-x-2y}_{z=0}=\int x\ dz|^{z=1-x-2y}_{z=0}=xz|^{z=1-x-2y}_{z=0}=x-x^2-2xy

要想实现这一算法,我们需要了解Geogebra中的一些代码输入规则:

(1)指令Integral(F(x,y,z),z)的含义是三元函数F(x,y,z)对z进行不定积分。类似地,Integral(F(x,y),y)就是二元函数F(x,y)对y求不定积分。不定积分后的常数C会自动以滑动条的形式出现在代数区。

(2)在已经定义了多元函数F(x,y,z,...)后,我们可以进行二次赋值。举例: F(x,y,z)=2x^2yz

F(x,y,z)=2x^2yz

如果需要将 x,y=2x,z=\sqrt x 代入上面的函数,我们只需要再设新函数,再赋值:

F1(x)=F(x,2x,sqrt x) //sqrt x为根号x

明确以上规则之后,实现Newton-Leibniz公式就变得明朗了。

\int F_1(x,y,z)dz|^{z=1-x-2y}_{z=0}=\int x\ dz|^{z=1-x-2y}_{z=0}=xz|^{z=1-x-2y}_{z=0}=x-x^2-2xy

我们要做的是两件事:首先,求出F1对z的不定积分,然后将z=1-x-2y和z=0代入作差。代码如下:

F2(x,y,z)=Integral(F1,z) F3(x,y,z)=F2(x,y,1-x-2y)-F2(x,y,0)

3. 同理计算前面的积分。

\int_0^1dx\int_0^{\frac{1-x}{2}}(x-x^2-2xy)dy

F4(x,y)=Integral(F3,y) \\F3对y积分后一定是关于x,y的二元函数 F5(x)=F4(x,(1-x)/2,z)-F4(x,0,z) \\F4作差后是关于x的一元函数 I=Integral(F5(x),0,1) \\得到最后结果不使用CAS代数区的计算(图中c1,c2为两次不定积分带出的常数C)

此外,Geogebra中积分值默认为小数,如果需要显示为分数,可以利用FractionText指令。

代码汇总:

\int_0^1dx\int_0^{\frac{1-x}{2}}dy\int_0^{1-x-2y}xdz

F1(x,y,z)=x F2(x,y,z)=Integral(F1,z) F3(x,y,z)=F2(x,y,1-x-2y)-F2(x,y,0) F4(x,y)=Integral(F3,y) F5(x)=F4(x,(1-x)/2)-F4(x,0) I=FractionText(Integral(F5(x),0,1))

对于一般的累次积分 \int_a^b\int_{c(x)}^{d(x)}\int_{e(x,y)}^{f(x,y)}F(x,y,z)dzdydx

F1(x,y,z)=...... \\F1即为被积函数 F2(x,y,z)=Integral(F1,z) F3(x,y,z)=F2(x,y, f(x,y)) - F2(x, y, e(x,y)) F4(x,y)=Integral(F3,y) F5(x)=F4(x,d(x))-F4(x,c(x)) I=FractionText(Integral(F5(x),a,b)

可能遇到的问题:

(1)我在输入变量并且输入了变量个数,但Geogebra自己变化了变量个数,怎么办?

答:变量个数自己发生变化一般是因为被积函数比较特殊。如 f(x,y,z)=x 对z求不定积分时可能会出现 F(x,y)=xz 的情况(我的也出现过)。遇到这种情况一般是由于在求不定积分时输入了

F(x,y)=Integral(f(x,y,z),z) //这是容易引起错误的代码

而可以正确执行的代码中在f的后面不输入(x,y,z),具体原因不清楚,但确实可以解决这类问题。

(2)例中F4,F5都直接设置成了双变量和单变量函数,可以不这样设置,依然设置成三变量函数吗?

答:对于F5,因为指令Integral(f(x),a,b)只能对单变量函数积分,如果F5不这样设置,那么我们就依然还是要手动Newton-Leibniz公式,比较麻烦,但不是不可以。F5设置成单变量函数就可以直接利用Integral指令,简单一些。但对于F4,因为F4中已经没有z了,而且他不是最后的单变量积分环节,所以设置成三变量也没有问题。

参考^利用Geogebra计算二重积分 https://www.zhihu.com/question/322842612/answer/674983852


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3