尝试使用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.
好吧所以我弄清楚问题是什么,但不知道如何修复它。矩阵乘法正确发生,但Mathematica不返回标量,而是返回一个列表,其中包含一个导致ArgMin错误的项目。有没有办法绕过这个没有添加另一个函数来返回列表的第一个(唯一)项目?我宁愿让矩阵向量运算返回一个标量值。
答案 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
(这与评论中的方法相同。)