0

我有一个 y=0.0031x^2 + 0.1336x + 0.0355 的趋势线方程。我在一列中有 y 值,我想通过公式确定每个的 x 值,所以我不必手动进行 120 次计算。

4

2 回答 2

0

您必须将每一个求解为二次方程

所以对于一个 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 值。

截屏

于 2015-11-23T11:10:13.393 回答
0

实际上有一个 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
于 2015-11-23T13:40:08.877 回答