[英]matlab find min value without constraint
我是Matlab的新手。
我将找到赋予函数的最小值:x(1)^ 2-2 * x(1)* x(2)+ 6 * x(1)+ x(2)^ 2-6 * x(2 )
我试图在不使用匿名函数的情况下编写matlab代码,但是现在我被困在这里。
这是我的代码:
function minFun()
res = fminsearch(@f2, [0,0]);
function out = f2([x(1) x(2)])
out = x(1)^2 - 2*x(1)*x(2) + 6*x(1) + x(2)^2 - 6*x(2);
end
end
但是它提到这里是function out = f2([x(1) x(2)])
语法错误。 我该如何解决?
如果我对您的理解正确,那么您有2个文件。 在您的f2.m
文件中,您应该使用
function out = f2(x)
out = x(1)^2 - 2*x(1)*x(2) + 6*x(1) + x(2)^2 - 6*x(2);
输入x
已经是一个向量。
如果只有一个文件,则应为以下语法:
function minFun()
res = fminsearch(@f2, [0,0])
function out = f2(x)
out = x(1)^2 - 2*x(1)*x(2) + 6*x(1) + x(2)^2 - 6*x(2);
注意我没有留下res
;
这样您就可以看到fminsearch
的输出。
尝试功能out = f2(x(1),x(2))
请注意,matlab匿名函数是使用@
运算符调用的,因此您的问题有点令人困惑,因为您的代码尝试使用它。
function out = f2([x(1) x(2)])
这行是不正确的,您应该使用变量作为函数参数x
。
如果您不想使用匿名函数,则应该在工作目录或matlab路径中有一个f2.m
文件,如另一个答案所述。
function out = f2(x)
out = x(1)^2 - 2*x(1)*x(2) + 6*x(1) + x(2)^2 - 6*x(2);
然后使用字符串引用该函数:
function minFun()
res = fminsearch('f2', [0,0]);
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.