【发布时间】:2017-10-29 21:47:41
【问题描述】:
尝试使用 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 出错。有没有办法解决这个问题而不添加另一个函数来返回列表的第一个(唯一)项目?我宁愿让矩阵向量运算返回一个标量值。
【问题讨论】:
-
Transpose[{a,b,c}]应该会给您一条错误消息。Y={a,b,c}; r={{1.*.009*.009,-0.376*.009*.005,-0.03873*.009*.008}, {-0.3765*.009*.005,1*.005*.005,0.2825*.005*.008}, {-0.3873*.009*.008,0.2825*.005*.008,1*.008*.008}}; NMinimize[{Y.r.Y,a+b+c==1&&0<a<1&&0<b<1&&0<c<1}, {a,b,c}]最小化对我来说很好。请刮擦粘贴以在新笔记本中准确检查此输入。