Я хочу рассчитать объем (V) части сферы, которая является результатом пересечения сферы с тремя пальмами (x = 0, y = 0 и z = 1,5). Я использую R-язык, и это мой код. Я попробовал 2 разных метода с использованием декартовых и полярных координат. Оба они дают отрицательные ответы.Объем части срезанной сферы с использованием трех плоскостей с использованием R-языка (интегральный)
## Compute the Volume between 3 planes x=0, y=0 and z=1.5 and a sphere
library("pracma", lib.loc="~/R/win-library/3.1")
f <- function(x, y) (sqrt(4 -x^2 - y^2) - 1.5) # here the function(x,y) is subtracted with -1.5 which represents the plane z=1.5
xmin <- 0
xmax <- 2
ymin <- 0
ymax <- function(x) (sqrt(4 - x^2))
I <- integral2(f, xmin, xmax, ymin, ymax)
I$Q # Integral over sector is not so exact
# Exact Volume from AutoCAD V=0.3600
## Volume of the sphere: use polar coordinates
f0 <- function(x, y) (sqrt(4 - x^2 - y^2)-1.5) # for x^2 + y^2 <= 4 the f(x,y) means z changes between zmin=1 and zmax= sqrt(4-x^2-y^2)
fp <- function(t, r) r * f0(r*cos(t), r*sin(t))
quad2d(fp, 0, pi/2, 0, 2, n = 101) # -0.523597
Правильный ответ V = 0.3600. Может ли кто-нибудь дать мне подсказку, пожалуйста?
Приветствие
Это было очень полезно. Но когда я хочу рассчитать объем между 3 плоскостями x = 1, y = 1, z = 1 и одной сферой с радиусом 2. Я изменил пределы (x от 1 до sqrt (3) и y от 1 до sqrt (3 -x^2)). Он дает неверный результат (V = 0.0330). Правильный - V = 0,0152. –
Нет, это не так. По крайней мере, если я понимаю ваш домен интеграции. Правильное числовое значение будет 0,26113536 ...! Исправьте верхний предел y на 'sqrt (4-x^2)' - как и должно быть - и * integ22 вернет 0.251140. Вы можете попытаться повысить точность, установив параметр 'reltol', но я думаю, что вы получите лучшие результаты, используя полярные координаты. –
Я использовал AutoCAD и точный объем куска между 3 плоскостями x = 1, y = 1 и z = 1, а сфера x^2 + y^2 + z^2 = 4 равна V = 0,0152. –