我有一个两个方程组:
(1+x)-(x-1)*y=1.706873
((x-1)*(x-2)*y^2)-3*(x^2-1)*y+(x+1)*(2*x+1) = 4.039665
我想找到 x 和 y 的值。我尝试使用此代码找到它们:
install.packages('nleqslv')
library(nleqslv)
f1 <- function(d) {
f <- numeric(2)
x <- d[1]
y <- d[2]
f[1] <- (1+x)*(x-1)*y - 1.706873
f[2] <- (x-1)*(x-2)*y^2 - 3*(x^2-1)*y + (x+1)*(2*x+1) - 4.039665
f
}
dstart <- c(1,1)
d1 <- nleqslv(dstart,f1)
d1
但它为我提供了 x 和 y =0,但我认为这不是答案。特别是消息是“雅可比行列式是单数(1/条件=0.0e+000)(参见allowSingular选项)” 。你能帮助我吗?谢谢你
您可以在下面找到我得到的结果
我还应该将结果插入到其他代码的循环中。 x 在 pgamma 中为 1+jj*x,在图中 dnbinmoial 的第二部分中为 1/y。为了获得“e”的值作为该循环的概率。然后计算卡方值,我的零假设必须是“无法拒绝”。因此 1-chisq 的值应大于 0.05。显然没有。所以我不确定问题是否出在估计或其他代码上。你能帮我吗?谢谢你
您可以在这里简单地使用
optim
:
f1 <- function(d) {
f <- numeric(2)
x <- d[1]
y <- d[2]
f[1] <- (1+x)*(x-1)*y - 1.706873
f[2] <- (x-1)*(x-2)*y^2 - 3*(x^2-1)*y + (x+1)*(2*x+1) - 4.039665
sum(abs(f))
}
optim(c(1, 1), f1)$par
#> [1] 1.467127 1.481067
请注意,这仅给出了五分之一的解决方案。其他的是
optim(c(-2, 0), f1)$par
#> [1] -2.7621729 0.2574625
optim(c(-2, 1), f1)$par
#> [1] -1.7361908 0.8473531
optim(c(0, -2), f1)$par
#> [1] -0.2205702 -1.7941611
optim(c(1, -4), f1)$par
#> [1] 0.7518069 -3.9257743
您可以在 WolframAlpha
看到工作情况