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

时间:2015-11-02 21:38:46

标签: r

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

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    self.canDisplayBannerAds = true
}

我的固定成本为Kf,可变成本为kv,价格为p。 当我用

测试功能时
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")
}

一切正常,我得到一个很好的情节。 当我将while循环中的函数更改为

bep(15000,50,300) 

该功能无止境地运行。我在循环中检查了一个print(x)参数,它只是超过了60的收支平衡点...... 循环继续下去。 有没有办法解决像

这样的两个线性方程
x <- x + 0.01

使用solve()函数,所以我不必使用while循环? solve函数应该计算x(所有其他变量作为参数传递给函数)。 我试过解决但无法弄明白。 感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

问题在于,当您索引x时,它可能无法完全解决方程。 Kf + kv*x = p*x的替代方法是明确地将x解析为x = Kf/(p - kv)。这避免了迭代,应该更快。

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)