我有 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
该值是误差的总和,或者更准确地说是我们的近似函数与原始数据点的差异。
现在最重要了!!! 选择单元格 H29 并启动求解器加载项:
将弹出此窗口(抱歉,我的 PC 上安装了德语 Excel)
只需填写目标单元格的值 $H$29
,目标值 =0 和变量单元格(重要)$J$14;$J$19
按“求解”然后.... tada 多项式系数已更改以使您的数据适合该函数。
这就是您一直在寻找的东西吗???
亲切的问候 阿克塞尔
关于curve-fitting - 获取 3d 形状的方程式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23555274/