r中具有对数的同时方程

时间:2017-11-14 18:26:38

标签: r

我有两个联合方程式,我想用r来解决。除了其中一个方程有一个自然的记录:

等式1:U(x; y; z)= 5 ln x + 8 ln y + 12 ln z (将获得最大化,因此设置为0)

等式2:10x + 15y + 30z = 3000

按照上一篇文章: Solving simultaneous equations with R

我正在尝试:

 a <- rbind(c(5*log, 2*log, 3*log), 
       c(10, 15, 30))
 b <- c(0, 3000)
 solve(a, b)

我得到一个非数字参数错误,因为我没有插入日志函数中的x。

1 个答案:

答案 0 :(得分:1)

您尝试使用的求解函数仅适用于线性耦合方程。如果要解决非线性耦合方程,则需要使用nleqslv库。

然后G5W是对的,你的系统缺乏一种关系。

我举一个用对数求解耦合方程的例子和一个带解的系统:

library(nleqslv)

dslnex <- function(x) {
  y <- c(0,30)
  y[1] <- 5*log(x[1]) - x[2]
  y[2] <- 10*x[1] + 15*x[2] 
  y
}
xstart <- c(0.5,1)
fstart <- dslnex(xstart)
nleqslv(xstart,dslnex)

给出

$x
[1]  0.8883046 -0.5922030

作为解决方案。如果您想尝试不同的分辨率方法:

> z <- testnslv(xstart,dslnex)
> print(z)
Call:
testnslv(x = xstart, fn = dslnex)

Results:
    Method Global termcd Fcnt Jcnt Iter Message     Fnorm
1   Newton  cline      1    4    4    4   Fcrit 8.106e-20
2   Newton  qline      1    4    4    4   Fcrit 8.106e-20
3   Newton  gline      1    4    4    4   Fcrit 8.106e-20
4   Newton pwldog      1    4    4    4   Fcrit 8.106e-20
5   Newton dbldog      1    4    4    4   Fcrit 8.106e-20
6   Newton   hook      1    4    4    4   Fcrit 8.106e-20
7   Newton   none      1    4    4    4   Fcrit 8.106e-20
8  Broyden  cline      1    6    1    6   Fcrit 2.473e-24
9  Broyden  qline      1    6    1    6   Fcrit 2.473e-24
10 Broyden  gline      1    6    1    6   Fcrit 2.473e-24
11 Broyden pwldog      1    6    1    6   Fcrit 2.473e-24
12 Broyden dbldog      1    6    1    6   Fcrit 2.473e-24
13 Broyden   hook      1    6    1    6   Fcrit 2.473e-24
14 Broyden   none      1    6    1    6   Fcrit 2.473e-24

为您提供方法,告诉您是否已收敛的消息,以及与解决方案的距离Fnorm