簡體   English   中英

Uniroot解兩個方程

[英]Uniroot solution two equatations

幾天后我發布了類似的問題,但現在我有更復雜的問題。 我有這個數據集

product = data.frame(length = c(100, 200, 300, 400), qty = c(1, 2, 1, 3)) 

價格由以下等式定義(product[["length"]] * old_const * 2) + setup_price其中old_const = 0.0158setup_price = 20.8

product[["old_price"]] = (product[["length"]] * old_const * 2) + setup_price

現在我想更改常量setup_price以滿足兩個要求:

新價格的總收入與舊價格的收入相同並且表格前半部分的總收入與表格后半部分的收入相同

y1 = sum((product[["length"]] * old_const * 2  + setup_price)* product[["qty"]])
y2 = sum((product[["length"]] * 2)* product[["qty"]])
y3 = sum((product[1:table_median, ][["length"]] * 2)* product[1:table_median, ][["qty"]])
y4 = sum((product[table_median:max(nrow(product)), ][["length"]] * 2) * product[table_median:max(nrow(product)), ][["qty"]])

where table_median = round(median(1:nrow(product)))

我的優化

const = seq(-2,2, by = 0.0001)
ev = NULL

for (i in 1:length(const)){
  ev[i] = (y1 - y2 * const[i]) + (y3*const[i] - y4)
}

plot(const, ev)

我想得到ev = 0 nad 我不知道我的 0 到底在哪里。

有人建議使用uniroot function 我知道如何使用一個方程。

我必須將belt_length 更改為length 才能理解您分享的內容。 我已經繼續並簡單地重構了您的 for 循環以涉及 function,然后在 uniroot 中使用相同的 function

const = seq(-2,2, by = 0.0001)
ev = NULL

custfunc <- function(x){
  (y1 - y2 * x) + (y3*x - y4)
}
for (i in 1:length(const)){
  ev[i] = custfunc(const[i])
}

plot(const, ev)

uniroot(custfunc,interval = c(-2,2))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM