Matlab中的Excel求解器

时间:2017-07-31 21:08:27

标签: excel matlab optimization least-squares minimization

我有一项任务是在Matlab中转换Excel计算以便于处理。 Excel文档使用Solver来最小化squared_error,我想在Matlab中实现它。我已经尝试了几个选项无效(我在尝试的Matlab代码中遇到无限问题),包括fminunc。这是我想要复制的Excel逻辑。

最小化sq_error(单元格L8)。 sq_error = a_0 + a_1 / C30 ^ 4 + a_2 / C30 ^ 3 + a_3 / C30 ^ 2 + a_4 / C30 + a_5 * C30

其中C30包含Normalized_pressure的常量值。

Excel目前通过以下方式解决此问题:     SolverOk SetCell:=" $ L $ 8",MaxMinVal:= 2,ValueOf:=" 0",ByChange:=" $ A $ 7:$ F $ 7

$A$7 = 10*a_0
$B$7 = 1000*a_1
$C$7 = 1000*a_2
$D$7 = 10000*a_3
$E$7 = 10000*a_4
$F$7 = 10*a_5

a_0到a_5是在Excel中定义的变量,它们分别取单元格中的值$ A $ 5到$ F $ 5.

我试图复制的Matlab代码如下:

X_0 = ones(1,6);
fun = @(X) (10*X(1) + 1000*X(2)/norm_p^4 + 1000*X(3)/norm_p^3 + 10000*X(4)/norm_p^2 + 10000*X(5)/norm_p + 10*X(6)*norm_p);
[X, fval] = fminunc(fun,X_0);

这不起作用。有什么指针吗?此外,fminunc需要向量X的初始值(我在这里提供的只是一个向量)。我不知道Excel的求解器如何决定初始系数猜测。

谢谢, = d

0 个答案:

没有答案