NMinimize-目标函数应该是标量值

时间:2017-10-29 21:47:42

标签: wolfram-mathematica

尝试使用NMinimize函数时出现以下错误。有关完整代码,请参见图像

NMinimize::objfs: The objective function {{a (0.000081 a-0.0000169425 b-2.78856*10^-6 c)+b (-0.00001692 a+0.000025 b+0.0000113 c)+(-2.78856*10^-6 a+0.0000113 b+0.000064 c) c}} should be scalar-valued.

enter image description here 好吧所以我弄清楚问题是什么,但不知道如何修复它。矩阵乘法正确发生,但Mathematica不返回标量,而是返回一个列表,其中包含一个导致ArgMin错误的项目。有没有办法绕过这个没有添加另一个函数来返回列表的第一个(唯一)项目?我宁愿让矩阵向量运算返回一个标量值。

enter image description here

1 个答案:

答案 0 :(得分:0)

要使用线性代数公式将Y定义为单行2d矩阵:

Y={{a,b,c}}

然后你可以Y.r.Transpose[Y]。结果是单个元素深度为2的数组,因此要得到标量结果:

(Y.r.Transpose[Y])[[1,1]] 
  

a(0.000081 a - 0.0000169425 b - 0.0000278856 c)+    b(-0.00001692 a + 0.000025 b + 0.0000113 c)+(-2.78856 * 10 ^ -6 a +       0.0000113 b + 0.000064 c)c

(这与评论中的方法相同。)