您需要一个平滑的 R^n -> R 函数的优化算法 . 由于您只能访问准系统Matlab,因此最好从文件交换中获取算法 . 为了说明,我选择LMFnlsq,这应该足够了,因为你有一个小问题,虽然它似乎更一般,这里有点矫枉过正 .
下载LMFnlsq并添加到您的Matlab路径 .
Example
为方便起见,创建一个名为 regr_fun 的函数:
function y = regr_fun(par, x)
alpha = par(1);
beta = par(2);
gamma = par(3);
y = (1 - alpha + alpha./sqrt(1 + 2*beta*(gamma*x).^2./alpha)).^(-1) - 1;
end
曲线拟合(与 regr_fun 在同一文件夹中):
%---------------------------------------------------------------------
% DUMMY DATA
%---------------------------------------------------------------------
% Generate data from known model contaminated with random noise
rng(333) % for reproducibility
alpha = 2;
beta = 0.1;
gamma = 0.1;
par = [alpha, beta, gamma];
xx &#