我正在尝试使用fminunc解决以下函数:
Σ((x(i)-1).^2) for i = 1 to 20
我的代码如下:
fun4 = @(x) sum((x(i)-1).^2, i, 1, 20)
[x,fval,exitflag,output]= fminunc(fun4,[1,1])
并且,它会出现以下错误:
???使用==>时出错sym.sym>未实现于2514
功能' subsindex'没有为MuPAD符号对象实现。
请问你能帮帮我吗?
答案 0 :(得分:1)
您应该查看sum
documentation,了解有关如何使用它来对矢量求和的详细信息。
在您的情况下,如果您有至少20个元素1>的向量x
,则可以在x(i)
中获取“i
的子向量”范围1到20“by x(1:20)
。
只需使用标准减法符号就可以从向量中减去标量,但要分别对所有元素进行平方处理,应使用“逐元素”运算符(在运算符前加一个点,如{{1} })。碰巧的是,无论如何你已经这样做了。
您传递给.^
的第2,第3和第4个参数导致错误,因为sum
不期望您传递给它的参数。有关 期望的输入的详细信息,请参阅链接的文档。
所有这些意味着您的功能可以简化:
sum