在matlab中定义多元函数后,用fminsearch函数调用求最小值时总是提醒变量输入不足什么原因?附图如下

如题所述

从你的错误提示中可以看出很明显是参数不对劲,

请参考以下例子进行修改:


function f = myfun(x,a)

f = x(1)^2 + a*x(2)^2;


a=1.5;


y=fminsearch(@(x) myfun(x,a),[0,1])

希望对你有帮助!

追问

这样做一直报错是什么原因呢,我是按照教程上操作的,但总是报错,就是比较奇怪,到底是什么原因

追答

看了一下帮助,使用 fminsearch函数的基本格式如下:

x = fminsearch(fun,x0)

多元变量的话需要转换成一维向量作为参数进行使用,也就是说fun只能有一个一维向量参数,并且有其他参数的时候都是确定的例如上面例子中的a

研究了一下fminsearch函数的源码:

它的原型参数就这么几个。

第二个参数只有一个,而你的目标函数却需要两个参数,这是不是不合理。

不知道你看的是什么教程哦,使用的是哪个版本的matlab,也许是这个fminsearch函数在版本升级的过程中修改成了现在这个样子

温馨提示:答案为网友推荐,仅供参考