如何使用R求解两个未知数的方程组?

时间:2019-05-18 02:51:53

标签: r equation solver

我有两个方程。它们如下:

( 1 - 0.25 ^ {1/alpha} ) * lambda = 85

( 1 - 0.75 ^ {1/alpha} ) * lambda = 11

我想通过求解上述两个方程来计算alphalambda的值。如何使用R做到这一点?

2 个答案:

答案 0 :(得分:2)

一种方法是通过引入损失函数将其转化为优化问题:

- debug:
    msg: read write SIDs are {{ rw_sid_list }}
  vars:
    rw_sid_list: '{{ om.results
      | selectattr("stdout", "eq", "READ WRITE")
      | map(attribute="sid")
      | list }}'

如果从loss <- function(X) { L = X[1] a = X[2] return(sum(c( (1 - 0.25^(1/a))*L - 85, (1 - 0.75^(1/a))*L - 11 )^2)) } nlm(loss, c(-1,-1)) 返回的结果有一个nlm()接近零,那么minimum将是一个包含lambda和alpha的向量。当我尝试此操作时,我得到了通过嗅探测试的答案:

estimate

答案 1 :(得分:1)

@olooney的答案是最好的。

求解这些方程式的另一种方法是使用var Query2 = from b in list group b.BookPubid by b.BookPubid into g orderby g.Key select new { PublisherID = g.Key, TotalBooks = g.Count() }; 函数。我们可以取消uniroot的值,并可以使用lambda查找alpha的值。然后代回以找到uniroot

lambda

产生

f <- function(x) {

  (11/85) - ((1 - (0.75) ^ (1/x)) / (1 - (0.25) ^ (1/x)) )

}

f_alpha <- uniroot(f, lower = -10, upper = -1, extendInt = "yes")

f_lambda <- function(x) {

  11 - ((1 - (0.75) ^ (1/f_alpha$root)) * x)

}

lambda = uniroot(f_lambda, lower = -10, upper = -2, extendInt = "yes")$root

sprintf("Alpha equals %f", f_alpha$root)
sprintf("Lambda equals %f", lambda)