用一个变量求解两个线性方程



我有以下问题:我想写一个函数来计算盈亏平衡点,并绘制两个线性方程。到目前为止,我编写的函数使用while循环,能够计算偶数的盈亏平衡点。以下是功能:

bep <- function(Kf,kv,p){
    x <- 1
    K <- Kf + kv * x
    U <- p * x
    while(K != U){
            x <- x + 1
            K <- Kf + kv * x
            U <- p * x
            print(x)
    }
    bep <- x
    print(bep)
    print(p*bep)
    x <- seq(0, 100, by=10)
    K <- Kf + kv * x
    U <- p * x
    plot(x, K, type="l", col="red", ylim=c(0,20000))
    lines(x, U, col="green")
    points(bep, Kf+kv*bep)
    segments(x0 = 0, y0 = p * bep, x1 = bep, y1= p * bep, lty = "dotted")
    segments(x0 = bep, y0 = 0, x1 = bep, y1 = p * bep, lty = "dotted")
}

论点是Kf表示我的固定成本,kv表示可变成本,p表示价格。当我用测试功能时

bep(15000,50,300) 

一切都正常进行,我得到了一个不错的情节。当我将while循环中的函数更改为时

x <- x + 0.01

函数运行时不结束。我在循环中检查了print(x)参数,它刚好超过了60的盈亏平衡点…循环将永远持续下去。有没有一种方法可以像一样求解这两个线性方程

Kf + kv * x = U * x

使用solve()函数这样我就不必使用while循环了?求解函数应该计算x(所有其他变量都作为参数传递给函数)。我试着解决,但没能解决。谢谢你的帮助!

问题是,当您对x进行索引时,它可能无法精确求解方程。CCD_ 2的替代方案是将CCD_ 3显式求解为CCD_ 4。这样可以避免迭代,而且应该更快。

bep <- function(Kf,kv,p){
  x <- Kf/(p-kv)
  bep <- x
  print(bep)
  print(p*bep)
  x <- seq(0, 100, by=10)
  K <- Kf + kv * x
  U <- p * x
  plot(x, K, type="l", col="red", ylim=c(0,20000))
  lines(x, U, col="green")
  points(bep, Kf+kv*bep)
  segments(x0 = 0, y0 = p * bep, x1 = bep, y1= p * bep, lty = "dotted")
  segments(x0 = bep, y0 = 0, x1 = bep, y1 = p * bep, lty = "dotted")
}
bep(15000,50,300)

最新更新