2015-11-02 33 views
0

我有以下问题: 我想写一个函数来计算平衡点并画出两个线性方程。 迄今为止我写的函数使用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 

使用解决()函数,所以我没有使用while循环的一种方式?求解函数应该计算x(所有其他变量作为参数传递给函数)。 我试过解决,但无法弄清楚。 感谢您的帮助!

回答

1

问题是,当您索引x它可能不会完全解决方程式。 Kf + kv*x = p*x的替代方案是明确解决xx = 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) 
+0

谢谢!有时显而易见的是如此接近... – Carlos

相关问题