首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解一个变量的两个线性方程组

解一个变量的两个线性方程组
EN

Stack Overflow用户
提问于 2015-11-02 21:38:46
回答 1查看 118关注 0票数 0

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

代码语言:javascript
复制
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代表价格。当我用

代码语言:javascript
复制
bep(15000,50,300) 

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

代码语言:javascript
复制
x <- x + 0.01

函数不间断地运行。我检查了循环中的print(x)参数,它只是超过了60…的盈亏平衡点。循环将永远持续下去。有没有办法解决这两个线性方程组

代码语言:javascript
复制
Kf + kv * x = U * x

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-02 22:02:48

问题是,当你索引x时,它可能并不能精确地解出方程。Kf + kv*x = p*x的一个替代方法是将x显式地解决为x = Kf/(p - kv)。这样可以避免迭代,而且应该更快。

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33487455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档