【发布时间】:2017-11-10 08:11:42
【问题描述】:
这是“mu”中的非线性方程,我想使用 R 对其进行数值求解。所有成对的 (x, y) 都是已知的。所以唯一的变量是“mu”
现在,我已经在 R 中编写了函数。然后,我试图通过使用“rootSolve”包来获取根。但它给出了一个错误。
这是我的函数代码:
f = function(k){
sum(((2*exp(-x) - 1)*(2*exp(-y)- 1))/
(1 + k*(2*exp(-x) - 1)*(2*exp(-y)- 1)))
}
这是从“rootSolve”包运行“uniroot.all”后的错误:
> library(rootSolve)
> uniroot.all(f, interval = c(-1, 1))
numeric(0)
Warning message:
In k * (2 * exp(-x) - 1) :
longer object length is not a multiple of shorter object length
另外,我正在区间 (-1, 1) 中搜索我的根。
有人可以帮忙吗?我认为,我定义函数的方式是错误的。因此这个错误来了。
谁能确认我在图中定义函数的方式正确与否?
提前谢谢你!
让我再补充一点:
我定义函数的方式(方式错误的可能性很高)并给定我的数据(x, y),我有f(-1) < f(1) and also f(-1) * f(1) < 0。满足这些条件。
让我质疑我编写函数的方式的其他问题:
我无法在R 中运行曲线功能。例如,curve(f, from = -1, to = 1)
但是,如果我绘制Vectorize(f),那么curve 函数就会起作用。
谁能帮我纠正定义函数的方式?
非常感谢!
【问题讨论】:
-
你没有显示全部。
x和y的值是多少? -
你似乎把
mu和x搞混了。你想解决mu,所以在函数中指定它(也作为函数的参数)。 -
@Bhas,我已编辑。我希望现在一切都清楚了。我有关于(x,y)的双向数据。总共近 1000 次观察。
-
我们没有您的
x和y数据。所以我们不能运行你的东西。它是不可重现的。制作一小组数据,看看会发生什么。
标签: r nonlinear-functions