我试图用MATLAB编写一个脚本,用网格函数绘制一个三维函数,然后找出曲面的最大值。到目前为止,这是我的代码:
%% Aquifer, 3D maximum search
figure(2)
[X,Y] = meshgrid(-10:.5:10,-10:.5:10);
h = @(x,y)-(1./(1+(x-.25).^2+(y-.5).^2+x+x.*y));
mesh(h(X,Y)) %graph aquifer surface
aquamax = fminsearch(h,[-5;-5])当我运行代码时,我会得到以下错误:
Error using @(x,y)-(1./(1+(x-.25).^2+(y-.5).^2+x+x.*y))
Not enough input arguments.
Error in fminsearch (line 190)
fv(:,1) = funfcn(x,varargin{:});我已经阅读了fminsearch函数,但我对它不太熟悉(在Matlab中仍然是个菜鸟)。我是否需要重新编写代码,还是仅仅是将内容输入到fminsearch中?
发布于 2015-02-20 04:33:30
您的h函数需要2个标量输入,但fminsearch只执行一个输入,可能是一个向量。将h更改为h = @(x)-(1./(1+(x(1)-.25).^2+(x(2)-.5).^2+x(1)+x(1).*x(2)));,看看这是否有效。
https://stackoverflow.com/questions/28620820
复制相似问题