我有一个 y=0.0031x^2 + 0.1336x + 0.0355 的趋势线方程。我在一列中有 y 值,我想通过公式确定每个的 x 值,所以我不必手动进行 120 次计算。
2 回答
您必须将每一个求解为二次方程
所以对于一个 y 值 y 你有
a*x^2 + b*x + c = y
所以
a*x^2 + b*x + (c-y) = 0
你需要的根源
a*x^2 + b*x + c' = 0
在哪里
c' = c-y
因此,如果您在 A2 中放入 0.0031,在 B2 中放入 0.1336,在 D2 中放入 0.0355,则表示从 E2 开始的 y 值,然后将 c' 的值放入 C2 中
=$D$2-E2
您可以通过以下方式获得一组 x 值
=(-$B$2+SQRT($B$2*$B$2-4*$A$2*C2))/(2*$A$2)
和另一组 x 值
=(-$B$2-SQRT($B$2*$B$2-4*$A$2*C2))/(2*$A$2)
添加了两列来检查从 x 计算的 y 值。
实际上有一个 Excel-Built-In 机制来解决这类问题。
假设您的y
-Values 存储在第一列(A1、A2 等)。
然后你将把你感兴趣的方程放在 C1 中,如果我们假设x
-Value 将存储在 D1 中,它将如下所示:
=0.0031*POWER($D1,2)+0.1336*$D1+0.0355-A1
向下拖动直到适合。
现在在 D1 中放入任意数字,例如 5。
向下拖动 D1 直到适合。
转到数据功能区并转到假设分析并选择目标搜索。
它应该如下所示:
请注意,我的 Excel 是德语。
在第一个字段中,您将选择二次方程所在的范围,在本例中为 C1。在第二个字段中,您将指定要实现的值。在本例中为 0。在第三个字段中,您将指定可以更改的范围。在这种情况下 D1。
按 ok 后,excel 将近似函数的根,精度可达 10^-4。
您必须手动为所有值执行此操作,或者记录一个宏,查看 excel 的功能并编写一个简短的宏来为您执行此操作。
还需要注意的是,这仅在 Excel-2010 之后才有可能。但既然你有 excel 2016-tag 你应该没问题!
编辑:
如果您使用上述设置,您可以使用此宏为您执行此操作:
Sub GS()
Dim rng As Range
For Each rng In Range("A1", "A4") '<~~ Change this to the range needed
Cells(rng.Row, 3).GOALSEEK goal:=0, ChangingCell:=Cells(rng.Row, 4) 'Change 3 to the column your function is in. Change the 4 to the column you x-Value is in.
Next rng
End Sub