R中的积分给出“非有限函数值”

时间:2016-10-22 12:36:27

标签: r

integral <- function(x) {2.393794315*((3320)*(x/2.24581)^5+(-1613880/11)*(x/2.24581)^4+(171163181/66)*(x/2.24581)^3+(-7563546913/330)*(x/2.24581)^2+(835541173981/8250)*(x/2.24581)+(-2953570085669/16500))*(((483793.161846485)*x^8+(-76823340.9717028)*x^7+(5337025908.822)*x^6+(-211866341077.587)*x^5+(5256530719898.47)*x^4+(-83466263852549.1)*x^3+(828318375700455)*x^2+(-4697211251008830)*x+(11653475160809900))^0.5)}

integrate(integral, lower=19.538547, upper=20.3245805)

这给了我

  

积分错误(积分,低= 19.538547,高= 20.3245805):     非有限函数值

我不知道该怎么做。如果有人可以将积分输入像Maple这样的软件来查看它是否有效 - 或者,如何解决这个错误也会很好:P

提前致谢!

编辑:

我试图围绕x轴旋转的功能是:

Y = 2.393794315 *((3320)的(X / 2.24581)^ 5 +( - 十一分之一百六十一万三千八百八十零)(X / 2.24581)^ 4 +(66分之171163181)(X /2.24581)^3 +( - 330分之7563546913)(X / 2.24581)^ 2 +(8250分之835541173981)*(X / 2.24581)+( - 16500分之2953570085669))

以极限{19.538547&lt; x&lt; 20.3245805}:

enter image description here

在@StephenWade提供的链接中(在评论中),为了找到表面区域,我需要(f'(x))^ 2 + 1.使用Wolfram,Alpha,我计算得出:

(f'(x))^ 2 + 1 =(483793.161846485)* x ^ 8 +( - 76823340.9717028)* x ^ 7 +(5337025908.822)* x ^ 6 +( - 211866341077.587)* x ^ 5 +( 5256530719898.47)* X ^ 4 +( - 83466263852549.1)* X ^ 3 +(828318375700455)* X ^ 2 +( - 4697211251008830)* X +(11653475160809900)

无限制地绘制图表,给出:

enter image description here

然而,在R上计算这个,我得到一个错误:

enter image description here

我对R的输入如下:

2.393794315 *((3320)的(X / 2.24581)^ 5 +( - 十一分之一百六十一万三千八百八十零)(X / 2.24581)^ 4 +(66分之171163181)(X / 2.24581 )^ 3 +( - 330分之7563546913)(X / 2.24581)^ 2 +(8250分之835541173981)(X / 2.24581)+( - 16500分之2953570085669))((( 483793.161846485)* X ^ 8 +( - 76823340.9717028)* X ^ 7 +(5337025908.822)* X ^ 6 +( - 211866341077.587)* X ^ 5 +(5256530719898.47)* X ^ 4 +( - 83466263852549.1)* X ^ 3 + (828318375700455)* X ^ 2 +( - 4697211251008830)* X +(11653475160809900))^ 0.5)

我只需要合理估算表面积......有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我会使用polynom包来处理它,它可以为我们计算导数,然后应用Wolfram中的公式。

revol_coef <- 2.393794315 * c(-2953570085669 / 16500,
                              835541173981 / (8250 * 2.24581),
                              -7563546913/ (330 * 2.24581^2),
                              171163181 / (66 * 2.24581^3),
                              -1613880 / (11 * 2.24581^4),
                              3320 / 2.24581^5)
y <- polynomial(revol_coef)
y_d <- deriv(y)

f <- function(x) {
    2 * pi * predict(y, x) * sqrt(1 + predict(y_d, x)^2)
}


integrate(f, lower = 19.538547, upper = 20.3245805)

我得到的输出是

-45.71118 with absolute error < 0.0017

答案是否定的,因为表面是在x-y平面的右下象限中指定的(根据你的图)。要解决此问题,请使用提供的数字的负数来获得表面区域。

翻译Wolfram Alpha中的公式,操纵它们,然后将它们放入R中很容易导致出错。

在这种情况下,我建议在R中完成尽可能多的工作,因为可以随时使用工具/功能进行必要的计算和简化。