r - 求解 R 中的简单方程

标签 r

我有一个关于在 R 中求解函数的可能性的非常基本的问题,但知道答案确实有助于更好地理解 R。
我有以下等式:
0=-100/(1+r)+(100-50)/(1+r)^2+(100-50)/(1+r)^3+...(100-50)/(1) +r)^10
如何在 R 中求解该方程以找到变量 r?
我试过了。像这样:

n <- c(2:10)
0 = -100/(r+1)+sum((100-50)/((1+r)^n))
但是收到一条错误信息:
Error in 0 = -100/(r + 1) + sum((100 - 50)/((1 + r)^n)) : 
invalid (do_set) left-hand side to assignment
有什么问题,我怎样才能找到 r?

最佳答案

R 有很多优化和寻根库 link here .但是在原生 R 中:

fnToFindRoot = function(r) {
  n <- c(2:10)
  return(abs(-100/(r+1)+sum((100-50)/((1+r)^n))))
}
# arbitrary starting values
r0 = 0
# minimise the function to get the parameter estimates
rootSearch = optim(r0, fnToFindRoot,method = 'BFGS', hessian=TRUE)
str(rootSearch)
fnToFindRoot(rootSearch$par)

该功能非常不稳定。如果您愿意将根括起来,您可能最好使用 uniroot :
fnToFindRoot = function(r,a) {
  n <- c(2:10)
  return((-100/(r+1)+sum((100-50)/((1+r)^n)))-a)
}
str(xmin <- uniroot(fnToFindRoot, c(-1E6, 1E6), tol = 0.0001, a = 0))
a参数在那里,因此您可以查找任何任意值的根。

关于r - 求解 R 中的简单方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21244254/

相关文章:

python - 为什么 statsmodels 和 R 之间的逻辑回归结果不同?

r - 在 r 和正则表达式中,如何检测排除某些混合条件的字符

r - 将查找表转换为 xgboost 模型

r - openxlsx 在页眉/页脚上添加多行

r - mapply 回收参数

r - 如何使用 R Shiny 中的plotly proxy 将文本注释添加到绘图中

r - 提取特殊字符之间的文本 R

R ggplot2 : Title and legend in one line

r - 带有 2 个 Y 变量的 ggplot2 条形图

R - 检查 PostgreSQL 中是否存在 View