% f 是函数句柄或者是符号函数,只接受一个 N 维行矢量作为输入变量, 并返回一个函数值
% x0 是 N 维行矢量, xerr 是一个标量
function[xmin, fmin]= NelderMead(fin, x0, xerr)
N = numel(x0); % f 是 N 元函数
x = zeros(N+1,N); % 预赋值
if isa(fin,'function_handle') %f是函数句柄还是符号函数
% f is a handle
fN =1;
f = fin;else
% f is not a handle
fN = numel(formula(fin)); %判断有多少个参数
f = matlabFunction(fin,'vars',{
argnames(fin)}); %将参数化为向量形式输入,转为句柄函数
end
y = zeros(N+1,fN);
% 计算 N+1 个初始点
x(1,:)= x0;for ii =1:N
x(ii+1,:)= x(1,:);if x(1,ii)==0
x(ii+1,ii