我正在尝试在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中的?
答案 0 :(得分:0)
您的h
函数需要2个标量输入,但fminsearch
只能输入一个输入,可能是矢量。将h
更改为h = @(x)-(1./(1+(x(1)-.25).^2+(x(2)-.5).^2+x(1)+x(1).*x(2)));
,看看是否有效。