0

我编写了一个程序,用于在一般区域上查找f ( x , y , z ) 函数的三重积分,但由于某种原因它不起作用。

这是程序的摘录,当积分顺序为dz dy dx时:

(B-A)/N→D
0→V

Dsum(seq(fnInt(Y₅,Y,Y₉,Y₀),X,A+.5D,B,D))→V
For(K,1,P)
    A+(B-A)rand→X
    Y₉+(Y₀-Y₉)rand→Y
    Y₇+(Y₈-Y₇)rand→Z
    Y₆→ʟW(K)
End

Vmean(ʟW)→V

使用的变量解释如下:

Y₆: Equation of f(x,y,z)
Y₇,Y₈: Lower and upper bounds of the innermost integral (dz)
Y₉,Y₀: Lower and upper bounds of the middle integral (dy)
A,B: Lower and upper bounds of the outermost integral (dx)
Y₅: Y₈-Y₇
N: Number of Δx intervals
D: Size of Δx interval
P: Number of points on D to guess the average value of f(x,y,z)
ʟW: List of various values of f(x,y,z)

V: Volume of the region of integration, then of the entire triple integral

所以这就是我的处理方式:

我首先使用Dsum(seq(fnInt(Y₅,Y,Y₉,Y₀),X,A+.5D,B,D)). 然后我在该区域中选择一堆随机 ( x , y , z ) 点,并将这些点插入f ( x , y , z ) 以生成w = f ( x , y , z )。然后我取这些w值的平均值,这应该可以很好地估计 4D 实体的平均“高度”,即三重积分;并通过将积分区域“base”乘以平均w值“height”(Vmean(ʟW)),它应该可以很好地估计三重积分的超体积。

很自然地,随着测试的 ( x , y , z ) 点数的增加,三重积分的值应该或多或少地收敛到实际值。

出于某种原因,它没有。对于某些积分来说,它的效果非常好,而对于其他积分来说,它却远投失手。∫[0, 2] ∫[0, 2- x ] ∫[0, 2- x - y ] 2 x dz dy dx就是一个很好的例子。正确答案是 4/3 或 1.333...,但程序收敛到一个完全不同的数字:2.67,给予或接受。

为什么要这样做?为什么三重积分会收敛到错误的数字?


编辑:我的猜测是——假设我没有犯任何错误,对此没有任何承诺——计算器使用的 RNG 算法只能生成略大于 0的数字并且正在抛出程序,但我没有办法确认这一点,也不考虑它,因为“略大于 0”没有被量化。

4

0 回答 0