求解两个带有两个变量的方程。其中一个方程是非线性的

问题描述 投票:0回答:1

我有一个两个方程组:

(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。显然没有。所以我不确定问题是否出在估计或其他代码上。你能帮我吗?谢谢你enter image description here

r variables equation
1个回答
1
投票

您可以在这里简单地使用

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

看到工作情况
© www.soinside.com 2019 - 2024. All rights reserved.