curve-fitting - 获取 3d 形状的方程式

标签 curve-fitting parametric-equations excel-charts

我有 2 个数组 X 和 Y。每个数组有 5 个元素。现在对于 (X,Y) 的每个可能组合,我都有一个 Z 值,因此 Z 是一个 5x5 矩阵。

我正在寻找一个公式,例如z=f(x,y)。关于如何做到这一点的任何想法。

我试过 MS Excel 曲面图,但它没有给出曲面图上的任何方程或曲线拟合。

最佳答案

一般来说,我会建议使用一些其他软件,如 SciLab 或 Matlab 来完成这项任务。这些产品比 Excel 更具计算性。 但 Excel 具有一些内置功能,也许会对您有所帮助。

首先注意: 您将需要使用名为“Solver”的加载项。此加载项随 Excel 一起提供,但可能未默认安装在您的安装中。 一个描述(在 www 中有数千个)如何安装该加载项,您可以在此处找到: Solver Add-in

如果您已完成此操作,下一步就是创建包含数据的工作表。 我尝试生成下图所示的示例。

范围 C5:G9 包含您想要通过函数逼近的矩阵。 所以它是 z=f(x,y) 矩阵。

旁边的图表只是您(在本例中是我的)原始数据的 3D 图。

现在它会变得有点数学...... 您需要一个通用类型的函数来进行近似。 结果的质量取决于此函数与您的数据的接近程度。 在示例中,我使用了一种具有二阶近似值(最大二次项)的方法。 我的示例函数是 z=a*x^2 + b*y^2 + c *x*y + d*x + e*y +f。 如果您需要更多,请尝试使用三阶项(也包括 x^3、y^3 ……)。 我不想在示例中这样做,因为我讨厌在 Excel 中键入长公式。

下一步是输入长公式:

现在我们必须用计算公式的值填充区域 C15:G19。但在此之前,我们必须定义 J14:J19 范围内的多项式系数。作为起始值,您可以只对所有系数使用 1(图片显示运行求解器后的解)

单元格 C15 中的公式为 =$J$14*C$14^2+$J$15*$B15^2+$J$16*C$14*$B15+$J$17*C$14+$J$18 *$B15+$J$19 将它复制到 Matrix 的其他单元格应该很容易。

旁边的图显示了我们的近似函数的结果。

现在我们必须准备求解器。求解器需要以某种方式进行优化。 因此,我们需要定义一个函数来指示我们的近似值的质量。 我使用了最小二乘值...在 www 上查看解释。 在 C24:G28 范围内,我计算了我们的近似函数与原始数据的差值的平方。单元格 C24 的公式为 =(C15-C5)^2

现在我们接近完成了。只需将此公式复制到范围的其余部分,然后添加一个非常重要的单元格:

将区域 C24:G28 的总和放入单元格 H29 该值是误差的总和,或者更准确地说是我们的近似函数与原始数据点的差异。

enter image description here

现在最重要了!!! 选择单元格 H29 并启动求解器加载项:

将弹出此窗口(抱歉,我的 PC 上安装了德语 Excel)

enter image description here

只需填写目标单元格的值 $H$29,目标值 =0 和变量单元格(重要)$J$14;$J$19

按“求解”然后.... tada 多项式系数已更改以使您的数据适合该函数。

这就是您一直在寻找的东西吗???

亲切的问候 阿克塞尔

关于curve-fitting - 获取 3d 形状的方程式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23555274/

相关文章:

python - SciPy 曲线拟合参数的方差到底是多少? (Python)

python - numpy 的参数方程

Excel VBA - 获取图表数据范围

python - 如何打印高斯曲线拟合结果?

c - nlinfit Matlab函数等价函数c代码

r - 如何在ggplot2中绘制参数曲线

functional-programming - 任意曲线的递归弧长重新参数化

excel - 在系列变平后避免Excel图表拉伸(stretch)线直到结束

vba - 如何改变 Excel 图表中的标记颜色?

python - 将线性函数拟合到一组数据后,如何找到函数梯度上的​​误差?