【发布时间】:2020-02-18 01:25:32
【问题描述】:
我如何找到 (sqrt(1+x)-1)/x 的泰勒级数?有什么解决方案我可以在 R 中找到这个泰勒扩展而不是手动估计?
【问题讨论】:
-
@DanY 我不明白为什么它会属于 math.stackexchange。问题是 R 是否可以做到这一点(答案是肯定的,
Ryacas)。
标签: r taylor-series
我如何找到 (sqrt(1+x)-1)/x 的泰勒级数?有什么解决方案我可以在 R 中找到这个泰勒扩展而不是手动估计?
【问题讨论】:
Ryacas)。
标签: r taylor-series
您的函数在x=0 处有一个可移动奇点,但很明显存在0.5 的限制
所以这不起作用:
library(pracma)
f <- function(x){(sqrt(1 + x) - 1) / x}
taylor(f, x0=0, n=4)
# Error in while (r[1] == 0 && lr > 1) { :
# missing value where TRUE/FALSE needed
但这确实很好
g <- function(x){ifelse(x==0, 1/2, f(x))}
taylor(g, x0=0, n=4)
# 0.02733281 -0.03899380 0.06250000 -0.12500123 0.50000000
与x^4*(7/256) + x^3*(-5/128) + x^2*(1/16) + x*(-1/8) + (1/2) +O(x^5) 相比,实际泰勒级数的开始是x=0
或者你可以将你的函数乘以x并得到
h <- function(x){(sqrt(1 + x) - 1)}
taylor(h, x0=0, n=5)
# 0.02734743 -0.03906311 0.06250008 -0.12500000 0.50000000 0.00000000
然后去掉你在乘以x时引入的0.00000000
【讨论】:
使用Ryacas 包:
library(Ryacas)
yac_str("Taylor(x,0,1) (Sqrt(1+x)-1)/x")
# "1/2-x/8"
漂亮的形式:
cat(yac_str("PrettyForm(Taylor(x,0,1) (Sqrt(1+x)-1)/x)"))
# 1 x
# - - -
# 2 8
Taylor(x,0,1) 表示0 的泰勒展开式,顺序为1。这很慢。我已经尝试过Taylor(x,0,9),这导致 R 会话崩溃。
【讨论】: