我是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)])
中存在语法错误。我该如何解决这个问题?
答案 0 :(得分:1)
如果我理解正确,你有两个文件。在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
的输出。
答案 1 :(得分:0)
尝试功能out = f2(x(1),x(2))