繁体   English   中英

Matlab查找无限制的最小值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM