首页 > 解决方案 > 当 x 未知且 y 已知时,如何求解方程 y=ax^2+bx+c

问题描述

我有这个等式:

y = -0.00248793*x^2+20.77173764*x-371.01805798

当我给出“y”数字时,我想获得等式的结果,

编辑解释 2/06/20: 我想添加一个向量作为我的“y”,并接收一个向量的输出。

这个问题是一个生物学问题,我在其中进行了细胞因子珠阵列 (CBA),并建立了一条正弦参考曲线。

在确定方程的次数后,如下:

fitil6_1=lm(Standards$`IL6 median`~poly(concentration,1,raw=TRUE))
fitil6_2=lm(Standards$`IL6 median`~poly(concentration,2,raw=TRUE))
fitil6_3=lm(Standards$`IL6 median`~poly(concentration,3,raw=TRUE))  
fitil6_4=lm(Standards$`IL6 median`~poly(concentration,4,raw=TRUE))



lines(concentration,predict(fitil6_1,data.frame(x=concentration)),col="red")
lines(concentration,predict(fitil6_2,data.frame(x=concentration)),col="green") 
lines(concentration,predict(fitil6_3,data.frame(x=concentration)),col="blue")
lines(concentration,predict(fitil6_4,data.frame(x=concentration)),col="purple)
legend(20,40000,legend=c("de grau 1","de grau 2","de grau 3","de grau 4"),lty=1,col=c("red","green","blue","purple"))

我选择了 2 级公式,因为它更适合我的这种细胞因子(以及本研究中的大多数细胞因子)的点

所以当我做

coef(fitil6_2)

 (Intercept)        poly(concentration, 2, raw = TRUE)1  poly(concentration, 2, raw = TRUE)2
-8.262381e+02                              2.371377e+01                       -2.847135e-03 

我收到该输出,然后我能够构建公式(在这种情况下):

y=-2.847135e-03 *x^2+2.371377e+01*x-8.262381e+02

但是由于我的独立价值是我知道很难隔离 x! (编辑结束)

我已经尝试过很多事情,比如制作函数(x,y),但是当你指定这个时,你需要给出一些 y,所以我真的有点迷失了!

谢谢

标签: rfunctionequation

解决方案


正如@Dave2e 所说,您可以通过代数解决这个特定示例。但是您可能需要一个程序化的解决方案,或者您可能正在使用二次方作为一个简单的示例。在这种情况下...

将您的问题重写为“y 的什么值满足 -0.00248793*x^2+20.77173764*x-371.01805798 - y = 0?”。

有很多方法可以找到函数的零点。这就是你把你的问题变成了什么。假设您的“y 的已知值”是 10...

f <- function(x, y) {
  -0.00248793*x^2+20.77173764*x-371.01805798 - y
}

answer <- stats::uniroot(f, interval=c(0, 50), y=10)

# Check we've got the right answer
f(answer$root, 10)

给予

[1] -1.186322e-10

使用此方法,您确实需要找到/猜测答案可能所在的范围。这就是interval=c(0.50)调用部分的目的uniroot。您可以阅读在线帮助以获取有关返回值的更多信息uniroot以及您可能需要注意的事项。


推荐阅读