TSC999 发表于 2021-11-19 11:36:56

如何用 mathematica 计算 x^2+y^2+2 z^2≤a 和 0≤x≤y≤z 围成的立体图形的体积?

本帖最后由 TSC999 于 2021-11-19 11:39 编辑

如何用 mathematica 计算 x^2+y^2+2 z^2 ≤ a 和 0≤x≤y≤z 围成的立体图形的体积? 其中a>0。

用以下代码计算,结果如下,但是这个结果不对。不知为何错了?

In:= Clear["Global`*"];
Integrate[
Boole, {x, 0, Sqrt[
a]}, {y, 0, Sqrt}, {z, 0, Sqrt}, Assumptions -> a > 0]

Out= (a^(3/2) (7 \-tan^-1((4 Sqrt)/7)-12 cot^-1(Sqrt)))/(24 Sqrt)

如果给 a 一个具体的值,比如令a=4,则计算结果正确:

In:= Clear["Global`*"];
Integrate[
Boole, {x, 0, Sqrt[
4]}, {y, 0, Sqrt}, {z, 0, Sqrt}]

Out= 1/3 Sqrt (\+tan^-1(2 Sqrt)-6 cot^-1(Sqrt))

问题出在哪里? 如何解决? 是不是我的 mathematica版本太低了?

nyy 发表于 2021-11-19 14:10:02

我怎么感觉我在知乎上看到过这个问题?

TSC999 发表于 2021-11-19 17:01:15

本帖最后由 TSC999 于 2021-11-19 17:36 编辑

nyy 发表于 2021-11-19 14:10
我怎么感觉我在知乎上看到过这个问题?

原题在这里:
http://kuing.orzweb.net/viewthread.php?tid=8292&extra=page%3D1

在上面这个帖子里,网友使用的 mathematica 代码及其运行结果如下:



本人复制了网友的代码,在我的电脑上运行,但是结果跟他的不一样 (网友的结果对,本人的结果错),本人电脑运行结果如下:



说结果不一样,不是说表面形式不一样,是实质上不一样。因为将a = 4代入结果表达式以后,网友的数值是 0.320401,正确。 本人的数值是3.28232,错误。不知道这个错误是如何造成的?

zeroieme 发表于 2021-11-19 18:06:20

https://reference.wolfram.com/language/ref/Integrate.html
History
1988年引入 (1.0) | 1996年更新 (3.0) ▪ 2003 (5.0) ▪ 2014 (10.0) ▪ 2019 (12.0)

https://reference.wolfram.com/language/ref/Boole.html
History
2004年引入 (5.1) | 2007年更新 (6.0)


TSC999 发表于 2021-11-20 10:33:48

本帖最后由 TSC999 于 2021-11-20 10:44 编辑

我的 mathematica 是 9.0 版,网友的是 7.0 版。7.0 的低版本计算结果反而是正确的。
如果a 是一个具体的数值,比如 a=4,那么无论是 mathematica 7.0 还是 mathematica 9.0,算出的结果都相同。
如果先不给 a赋值,两个版本计算出的字符公式就不一样,对字符公式中的 a 赋值后算出的数值当然也不一样了。
本问题所求的区域的体积,并不是椭球的八分之一,而是下面这个形状:

nyy 发表于 2021-11-22 20:03:47

又是mathematica的bug
页: [1]
查看完整版本: 如何用 mathematica 计算 x^2+y^2+2 z^2≤a 和 0≤x≤y≤z 围成的立体图形的体积?