matlab找到没有约束的最小值

时间:2013-09-29 04:15:42

标签: matlab

我是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 个答案:

答案 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))