在Matlab中最小化三个变量函数

时间:2016-07-08 12:57:53

标签: matlab function math minimize

我试图使用Matlab文档中给出的最小化函数的示例,并在Matlab R2016a中运行它,但它会产生错误。 这是一个例子: enter image description here

这是我写的代码:

function b = test_algo(v)
x = v(1);
y = v(2);
z = v(3);
b = x.^2 + 2.5*sin(y) - z^2*x^2*y^2;

v = [-0.6 -1.2 0.135];
a = fminsearch(@test_algo,v);

disp('a', a);

但不是预期的结果我得到一个错误:

Not enough input arguments.

Error in test_algo (line 3)
x = v(1);

知道为什么吗?谢谢!

2 个答案:

答案 0 :(得分:2)

根据您执行代码的方式,您必须将fminsearch的调用放在一个单独的函数中:

function test()

v = [-0.6 -1.2 0.135];
a = fminsearch(@test_algo,v);

disp(a);

function b = test_algo(v)
x = v(1);
y = v(2);
z = v(3);
b = x.^2 + 2.5*sin(y) - z^2*x^2*y^2;

如果我将所有内容都放在m文件中并执行它,上面的示例对我有用。

答案 1 :(得分:0)

您需要将目标函数b = @(v) v(1).^2 + 2.5*sin(v(2)) - v(3)^2*v(1)^2*v(2)^2; v0 = [-0.6 -1.2 0.135]; a = fminsearch(b,v0); disp(a); 与调用它的代码分开定义。由于您不需要太多代码来定义目标函数,因此可以使用匿名函数来定义它:

Failed: Angular could not be found on the page http://test.blah.dev:3000/auth/login : retries looking for angular exceeded