主要内容

lsqcurvefit

解决最小二乘意义上的非线性曲线拟合(数据拟合)问题

描述

非线性最小二乘求解器

找到系数x解决了问题

最小值 x F x x d 一个 t 一个 y d 一个 t 一个 2 2 最小值 x F x x d 一个 t 一个 y d 一个 t 一个 2

给定输入数据xdata,和观测到的输出ydata,在那里xdata而且ydata矩阵还是向量Fxxdata)是与的大小相同的矩阵值或向量值函数ydata

的组件可选x有上界和下界吗,乌兰巴托.的参数x,乌兰巴托可以是向量或矩阵;看到矩阵的参数

lsqcurvefit函数使用相同的算法lsqnonlinlsqcurvefit简单地为数据拟合问题提供了一个方便的接口。

与其计算平方和,lsqcurvefit要求用户定义函数来计算向量价值函数

F x x d 一个 t 一个 F x x d 一个 t 一个 1 F x x d 一个 t 一个 2 F x x d 一个 t 一个 k

例子

x= lsqcurvefit (有趣的x0xdataydata起价x0然后求出系数x最好地拟合非线性函数乐趣(x, xdata)数据ydata(在最小二乘意义上)。ydata必须与向量(或矩阵)的大小相同F返回的有趣的

请注意

传递额外参数解释如何将额外参数传递给向量函数有趣的(x),如有需要。

例子

x= lsqcurvefit (有趣的x0xdataydata乌兰巴托中定义设计变量的一组下界和上界x,使解总是在值域内x乌兰巴托.您可以修复解决方案组件x(我)通过指定Lb (i) = ub(i)

请注意

如果问题的指定输入边界不一致,则输出xx0以及输出resnorm而且剩余[]

的组件x0违反了边界Lb≤x≤ub重置为由边界定义的框的内部。尊重边界的组件不会被改变。

例子

x= lsqcurvefit (有趣的x0xdataydata乌兰巴托选项中指定的优化选项使之最小化选项.使用optimoptions设置这些选项。传递空矩阵而且乌兰巴托如果不存在边界。

x= lsqcurvefit (问题求最小值问题中描述的结构问题

xresnorm= lsqcurvefit(___,对于任何输入参数,返回残差at的平方2范数的值x总和(乐趣(x, xdata) -ydata) ^ 2)。

例子

xresnorm剩余exitflag输出= lsqcurvefit(___另外返回残差的值有趣的(x, xdata) -ydata在解决方案中x,一个值exitflag它描述了退出条件和结构输出其中包含关于优化过程的信息。

xresnorm剩余exitflag输出λ雅可比矩阵= lsqcurvefit(___另外返回一个结构λ谁的场包含解处的拉格朗日乘子x的雅可比矩阵有趣的在解决方案中x

例子

全部折叠

假设你有观测时间数据xdata观察到的反应数据ydata,你想找到参数 x 1 而且 x 2 使其符合形式的模型

ydata x 1 经验值 x 2 xdata

输入观测时间和响应。

xdata =...[0.9 1.5 13.8 19.8 24.1 28.2 35.2 60.3 74.6 81.3];ydata =...[455.2 428.6 124.1 67.3 43.2 28.1 13.1 -0.4 -1.3 -1.5];

创建一个简单的指数衰减模型。

Fun = @(x,xdata)x(1)*exp(x(2)*xdata);

使用起始点拟合模型X0 = [100,-1]

X0 = [100,-1];X = lsqcurvefit(fun,x0,xdata,ydata)
局部最小值。Lsqcurvefit停止了,因为相对于其初始值的平方和的最终变化小于函数公差的值。
x =1×2498.8309 - -0.1013

绘制数据和拟合曲线。

Times = linspace(xdata(1),xdata(end));情节(xdata ydata,“柯”,乘以,有趣(x,倍),“b -”)传说(“数据”的拟合指数)标题(“数据与拟合曲线”

图中包含一个轴对象。标题为Data和fitting Curve的坐标轴对象包含2个类型为line的对象。这些对象表示数据,拟合指数。

在拟合参数受约束的情况下,找到与数据的最佳指数拟合。

从指数衰减模型和噪声中生成数据。模型是

y 经验值 - 1 3. t + ε

t 取值范围为0 ~ 3,和 ε 均值为0,标准差为0.05的正态分布噪声。

rng默认的再现率%Xdata = linspace(0,3);Ydata = exp(-1.3*xdata) + 0.05*randn(size(xdata));

问题是:给定数据(xdataydata),求指数衰减模型 y x 1 经验值 x 2 xdata 最适合数据,参数有界如下:

0 x 1 3. / 4

- 2 x 2 - 1

Lb = [0,-2];Ub = [3/4,-1];

创建模型。

Fun = @(x,xdata)x(1)*exp(x(2)*xdata);

做一个初步猜测。

X0 = [1/2,-2];

求解有界拟合问题。

X = lsqcurvefit(fun,x0,xdata,ydata,lb,ub)
找到局部极小值。优化完成,因为梯度的大小小于最优性公差的值。
x =1×20.7500 - -1.0000

检查结果曲线与数据的拟合程度。因为边界使解远离真值,所以拟合性一般。

情节(xdata ydata,“柯”、xdata有趣(x, xdata),“b -”)传说(“数据”的拟合指数)标题(“数据与拟合曲线”

图中包含一个轴对象。标题为Data和fitting Curve的坐标轴对象包含2个类型为line的对象。这些对象表示数据,拟合指数。

将拟合结果与默认值进行比较“trust-region-reflective”算法和“levenberg-marquardt”算法。

假设你有观测时间数据xdata观察到的反应数据ydata,你想找到参数 x 1 而且 x 2 使其符合形式的模型

ydata x 1 经验值 x 2 xdata

输入观测时间和响应。

xdata =...[0.9 1.5 13.8 19.8 24.1 28.2 35.2 60.3 74.6 81.3];ydata =...[455.2 428.6 124.1 67.3 43.2 28.1 13.1 -0.4 -1.3 -1.5];

创建一个简单的指数衰减模型。

Fun = @(x,xdata)x(1)*exp(x(2)*xdata);

使用起始点拟合模型X0 = [100,-1]

X0 = [100,-1];X = lsqcurvefit(fun,x0,xdata,ydata)
局部最小值。Lsqcurvefit停止了,因为相对于其初始值的平方和的最终变化小于函数公差的值。
x =1×2498.8309 - -0.1013

将这个解与a的解进行比较“levenberg-marquardt”健康。

选项= optimoptions(“lsqcurvefit”“算法”“levenberg-marquardt”);Lb = [];Ub = [];X = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)
局部最小值。Lsqcurvefit停止,因为当前步长的相对大小小于步长公差的值。
x =1×2498.8309 - -0.1013

这两种算法收敛到同一个解。绘制数据和拟合指数模型。

Times = linspace(xdata(1),xdata(end));情节(xdata ydata,“柯”,乘以,有趣(x,倍),“b -”)传说(“数据”的拟合指数)标题(“数据与拟合曲线”

图中包含一个轴对象。标题为Data和fitting Curve的坐标轴对象包含2个类型为line的对象。这些对象表示数据,拟合指数。

将拟合结果与默认值进行比较“trust-region-reflective”算法和“levenberg-marquardt”算法。检查解决过程,看看在这种情况下哪个更有效。

假设你有观测时间数据xdata观察到的反应数据ydata,你想找到参数 x 1 而且 x 2 使其符合形式的模型

ydata x 1 经验值 x 2 xdata

输入观测时间和响应。

xdata =...[0.9 1.5 13.8 19.8 24.1 28.2 35.2 60.3 74.6 81.3];ydata =...[455.2 428.6 124.1 67.3 43.2 28.1 13.1 -0.4 -1.3 -1.5];

创建一个简单的指数衰减模型。

Fun = @(x,xdata)x(1)*exp(x(2)*xdata);

使用起始点拟合模型X0 = [100,-1]

X0 = [100,-1];[x,resnorm,residual,exitflag,output] = lsqcurvefit(fun,x0,xdata,ydata);
局部最小值。Lsqcurvefit停止了,因为相对于其初始值的平方和的最终变化小于函数公差的值。

将这个解与a的解进行比较“levenberg-marquardt”健康。

选项= optimoptions(“lsqcurvefit”“算法”“levenberg-marquardt”);Lb = [];Ub = [];[x2,resnorm2,residual2,exitflag2,output2] = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options);
局部最小值。Lsqcurvefit停止,因为当前步长的相对大小小于步长公差的值。

解是等价的吗?

规范(x x2)
Ans = 2.0642e-06

是的,解是等价的。

哪种算法需要更少的函数计算才能得到答案?

流([“信任区域反射”算法取%d个函数求值,\n”...,“levenberg-marquardt”算法取%d个函数求值。\n'),...output.funcCount output2.funcCount)
“信任区域反射”算法进行了87次函数评估,“levenberg-marquardt”算法进行了72次函数评估。

绘制数据和拟合指数模型。

Times = linspace(xdata(1),xdata(end));情节(xdata ydata,“柯”,乘以,有趣(x,倍),“b -”)传说(“数据”的拟合指数)标题(“数据与拟合曲线”

图中包含一个轴对象。标题为Data和fitting Curve的坐标轴对象包含2个类型为line的对象。这些对象表示数据,拟合指数。

这件衣服看起来很合身。残差有多大?

流([“信赖域反射”算法的残范数%f,\n”...',且“levenberg-marquardt”算法具有残差范数%f.\n'),...resnorm resnorm2)
“信任区域反射”算法的残范数为9.504887,“levenberg-marquardt”算法的残范数为9.504887。

输入参数

全部折叠

函数,指定为函数句柄或函数名。有趣的一个函数是否有两个输入:向量或矩阵x,和一个向量或矩阵xdata有趣的返回一个向量或矩阵F的目标函数x而且xdata.函数fun可以指定为函数文件的函数句柄:

X = lsqcurvefit(@myfun,x0,xdata,ydata)

在哪里myfun是一个MATLAB®函数如

函数F = myfun(x,xdata) F =...计算x, xdata处的函数值

有趣的也可以是匿名函数的函数句柄。

F = @(x,xdata)x(1)*xdata.^2+x(2)*sin(xdata);X = lsqcurvefit(f,x0,xdata,ydata);

lsqcurvefit通过x目标函数的形状x0论点。例如,如果x0是一个5乘3的数组吗lsqcurvefit通过x有趣的作为一个5 × 3的数组。

请注意

有趣的应该返回乐趣(x, xdata),而不是平方和总和(乐趣(x, xdata) -ydata) ^ 2)。lsqcurvefit隐式计算的分量的平方和有趣的(x, xdata) -ydata.看到例子

如果雅可比矩阵也可以计算而且“SpecifyObjectiveGradient”选择是真正的,由

选项= optimoptions(“lsqcurvefit”“SpecifyObjectiveGradient”,真正的)

然后是函数有趣的必须返回带有雅可比矩阵值的第二个输出参数J(矩阵)在x.的值nargout,该函数可避免计算J有趣的只使用一个输出参数调用(在优化算法只需要值F但不是J).

函数[F,J] = myfun(x,xdata) F =...% x点目标函数值如果Nargout > 1%两个输出参数J =...函数在x处值的%雅可比矩阵结束

如果有趣的返回的向量(矩阵)组件和xn元素,n元素的个数是多少x0,雅可比矩阵J是一个——- - - - - -n矩阵J (i, J)的偏导数是F(我)关于x (j).(雅可比矩阵J的转置是F)。有关更多信息,请参见向量和矩阵目标函数的书写

例子:@ (x, xdata) x (1) * exp (- x (2) * xdata)

数据类型:字符|function_handle|字符串

初始点,指定为实向量或实数组。求解器使用元素的数量x0和大小x0确定变量的数量和大小即有趣的接受。

例子:X0 = [1,2,3,4]

数据类型:

为模型输入数据,指定为实向量或实数组。模型是

Ydata = fun(x,xdata)

在哪里xdata而且ydata是固定数组,和x参数数组是这样的吗lsqcurvefit更改为搜索最小平方和。

例子:Xdata = [1,2,3,4]

数据类型:

模型的响应数据,指定为实向量或实数组。模型是

Ydata = fun(x,xdata)

在哪里xdata而且ydata是固定数组,和x参数数组是这样的吗lsqcurvefit更改为搜索最小平方和。

ydata数组的大小和形状必须与数组相同乐趣(x0, xdata)

例子:Ydata = [1,2,3,4]

数据类型:

下界,指定为实向量或实数组。如果元素的个数x0等于里面元素的个数,然后指定

X (i) >= lb(i)对所有

如果数值(lb) <数值(x0),然后指定

X (i) >= lb(i)1 <= I <= number (lb)

如果元素少于x0,解算器发出警告。

例子:要指定所有x分量都是正的,使用Lb = 0 (size(x0))

数据类型:

上界,指定为实向量或实数组。如果元素的个数x0等于里面元素的个数乌兰巴托,然后乌兰巴托指定

X (i) <= ub(i)对所有

如果Numel (ub) < Numel (x0),然后乌兰巴托指定

X (i) <= ub(i)1 <= I <= numel(ub)

如果乌兰巴托元素少于x0,解算器发出警告。

例子:要指定所有x分量都小于1,使用Ub = ones(size(x0))

数据类型:

的优化选项,指定为的输出optimoptions或者一个结构,比如optimset的回报。

一些选项适用于所有算法,而其他选项则与特定算法相关。看到优化选项参考有关详细信息。

中缺少一些选项optimoptions显示。这些选项在下表中以斜体字显示。详细信息请参见视图选项

所有的算法

算法

之间做出选择“trust-region-reflective”(默认),“levenberg-marquardt”

算法选项指定要使用的算法的首选项。这只是一种偏好,因为使用每种算法必须满足某些条件。对于信赖域反射算法,非线性方程组不能被欠定;即方程的数量(元素的数量)F返回的有趣的)的长度必须至少和长度一样多x.有关选择算法的详细信息,请参见算法选择

CheckGradients

比较用户提供的导数(目标或约束的梯度)与有限差分导数。的选择是(默认)或真正的

optimset,名字是DerivativeCheck这些值是“上”“关闭”.看到当前和遗留选项名称

诊断

显示有关要最小化或解决的功能的诊断信息。的选择是“关闭”(默认)或“上”

DiffMaxChange

有限差梯度(正标量)变量的最大变化。默认为

DiffMinChange

有限差分梯度(正标量)的最小变量变化。默认为0

显示

显示水平(见迭代显示):

  • “关闭”“没有”不显示输出。

  • “通路”显示每次迭代的输出,并给出默认的退出消息。

  • “iter-detailed”显示每次迭代的输出,并给出技术退出消息。

  • “最后一次”(default)只显示最终输出,并给出默认的退出消息。

  • 最后详细的只显示最终输出,并给出技术性退出消息。

FiniteDifferenceStepSize

有限差分的标量或矢量步长因子。当你设置FiniteDifferenceStepSize到一个向量v,正向有限差分δ

delta = v *符号' (x).*max(abs(x),TypicalX);

在哪里符号' (x) =符号(x)除了符号' (0)= 1.中心有限差分为

delta = v.*max(abs(x),TypicalX);

标量FiniteDifferenceStepSize展开成一个向量。默认为sqrt (eps)对于正向有限差分,和eps ^ (1/3)对于中心有限差分。

optimset,名字是FinDiffRelStep.看到当前和遗留选项名称

FiniteDifferenceType

有限差分,用来估计梯度,是“前进”(默认),或“中央”(中心)。“中央”需要两倍的函数计算,但应该更准确。

该算法在估计这两种类型的有限差分时谨慎地服从边界。例如,它可以取一个后向差分,而不是前向差分,来避免在边界外求值。

optimset,名字是FinDiffType.看到当前和遗留选项名称

FunctionTolerance

函数值上的终止公差为正标量。默认为1 e-6.看到公差和停止标准

optimset,名字是TolFun.看到当前和遗留选项名称

FunValCheck

检查函数值是否有效。“上”当函数返回值为时,显示错误复杂的,或.默认的“关闭”不显示错误。

MaxFunctionEvaluations

允许的最大函数求值数,一个正整数。默认为100 * numberOfVariables“trust-region-reflective”算法,200 * numberOfVariables“levenberg-marquardt”算法。看到公差和停止标准而且迭代和功能计数

optimset,名字是MaxFunEvals.看到当前和遗留选项名称

MaxIterations

允许的最大迭代次数,一个正整数。默认为400.看到公差和停止标准而且迭代和功能计数

optimset,名字是麦克斯特.看到当前和遗留选项名称

OptimalityTolerance

一阶最优性(正标量)上的终止容差。默认为1 e-6.看到一阶最优测度

在内部,“levenberg-marquardt”算法采用的最优公差(停止准则)为1的军医FunctionTolerance并且不使用OptimalityTolerance

optimset,名字是TolFun.看到当前和遗留选项名称

OutputFcn

指定优化函数在每次迭代时调用的一个或多个用户定义函数。传递一个函数句柄或函数句柄的单元格数组。默认值为none ([]).看到输出函数和图函数语法

PlotFcn

在算法执行时绘制各种进度度量;从预定义的情节中选择或编写自己的。传递名称、函数句柄或名称或函数句柄的单元格数组。对于自定义绘图函数,传递函数句柄。默认值为none ([]):

  • “optimplotx”绘制当前点。

  • “optimplotfunccount”绘制函数计数。

  • “optimplotfval”绘制函数值。

  • “optimplotresnorm”绘制残差的范数。

  • “optimplotstepsize”绘制步长。

  • “optimplotfirstorderopt”绘制一阶最优测度。

自定义绘图函数使用与输出函数相同的语法。看到优化工具箱的输出函数而且输出函数和图函数语法

optimset,名字是PlotFcns.看到当前和遗留选项名称

SpecifyObjectiveGradient

如果(默认),求解器近似雅可比矩阵使用有限差分。如果真正的,求解器使用用户定义的雅可比矩阵(定义在有趣的),或雅可比矩阵信息(当使用JacobMult),为目标函数。

optimset,名字是雅可比矩阵,值为“上”“关闭”.看到当前和遗留选项名称

StepTolerance

终止公差x,为正标量。默认为1 e-6.看到公差和停止标准

optimset,名字是TolX.看到当前和遗留选项名称

TypicalX

典型的x值。元素的数量TypicalX等于里面元素的个数x0这是起点。默认值为的(numberofvariables, 1).求解器使用TypicalX缩放有限差分进行梯度估计。

UseParallel

真正的,求解器并行估计梯度。通过设置为默认值禁用,.看到并行计算

Trust-Region-Reflective算法
JacobianMultiplyFcn

雅可比乘法函数,指定为函数句柄。对于大规模的结构化问题,这个函数计算雅可比矩阵的乘积J * YJ ' * Y,或J”* (J * Y)没有形成J.函数的形式

W = jmfun(Jinfo,Y,flag)

在哪里动力系统包含用于计算的矩阵J * Y(或J ' * Y,或J”* (J * Y)).第一个参数动力系统必须与目标函数返回的第二个参数相同有趣的例如,由

[F,Jinfo] = fun(x)

Y是一个矩阵,它的行数与问题中的维数相同。国旗确定要计算哪个产品:

  • 如果标志== 0然后W = j '*(j * y)

  • 如果标志> 0然后W = j * y

  • 如果标志< 0然后W = j '* y

在每种情况下,J没有显式地形成。求解器使用动力系统计算预条件。看到传递额外参数有关如何为任何附加参数提供值的信息jmfun的需求。

请注意

“SpecifyObjectiveGradient”必须设置为真正的让解算器通过动力系统有趣的jmfun

看到密结构黑森最小化,线性等式而且线性最小二乘雅可比乘法函数对于类似的例子。

optimset,名字是JacobMult.看到当前和遗留选项名称

JacobPattern

有限差分雅可比矩阵的稀疏模式。集JacobPattern(i,j) = 1有趣的(我)取决于x (j).否则,设置JacobPattern(i,j) = 0.换句话说,JacobPattern(i,j) = 1当你有∂有趣的(我)/∂x (j)≠0。

使用JacobPattern当计算雅可比矩阵不方便时J有趣的,尽管你可以确定(例如,通过检查)什么时候有趣的(我)取决于x (j).求解器可以近似求解J通过稀疏有限差分JacobPattern

如果结构未知,请不要设置JacobPattern.默认行为是ifJacobPattern是1的密集矩阵。然后求解器在每次迭代中计算一个完整的有限差分近似。对于大型问题来说,这可能代价高昂,因此通常最好确定稀疏性结构。

MaxPCGIter

PCG(预条件共轭梯度)迭代的最大次数,一个正标量。默认为马克斯(1,numberOfVariables / 2).有关更多信息,请参见大规模非线性最小二乘

PrecondBandWidth

PCG预调节器的上带宽,非负整数。默认的PrecondBandWidth,这意味着使用直接因式分解(Cholesky)而不是共轭梯度(CG)。直接因式分解在计算上比CG更昂贵,但产生了更好的解决方案。集PrecondBandWidth0对于某些问题,中间带宽可以减少PCG迭代次数。

SubproblemAlgorithm

确定如何计算迭代步骤。默认的,“分解”,比的步伐更慢,但更准确“重心”.看到信任区域反射最小二乘

TolPCG

PCG迭代上的终止公差为正标量。默认为0.1

Levenberg-Marquardt算法
InitDamping

Levenberg-Marquardt参数的初始值,一个正标量。默认是1)依照.详细信息请参见Levenberg-Marquardt方法

ScaleProblem

的雅可比矩阵有时可以提高一个低尺度问题的收敛性;默认为“没有”

例子:options = optimoptions('lsqcurvefit','FiniteDifferenceType','central')

问题结构,指定为具有以下字段的结构:

字段名 条目

客观的

目标函数x而且xdata

x0

起始点x,活动集算法

xdata

为目标函数输入数据

ydata

输出数据由目标函数匹配
下界向量
乌兰巴托 上界向量

解算器

“lsqcurvefit”

选项

创建的选项optimoptions

你必须提供至少客观的x0解算器xdataydata,选项字段问题结构。

数据类型:结构体

输出参数

全部折叠

解,作为实向量或实数组返回。的大小x和的尺寸一样吗x0.通常情况下,x什么时候局部解决问题exitflag是正的。有关解决方案质量的信息,请参见当求解器成功时

残差的平方范数,作为非负实数返回。resnorm残差的2模的平方是在x总和(乐趣(x, xdata) -ydata) ^ 2)。

目标函数在解处的值,以数组形式返回。一般来说,残差= fun(x,xdata)-ydata

原因解算器停止,返回一个整数。

1

函数收敛到一个解x

2

的变化x小于指定公差,或雅可比矩阵在x是未定义的。

3.

残留量的变化小于规定的公差。

4

搜索方向的相对幅度小于步长公差。

0

迭代次数超过选项。麦克斯特一个t我ons或者超出了函数求值的数量选项。MaxFunctionEvaluations

-1

绘图函数或输出函数停止了求解器。

-2

问题是不可行的:边界而且乌兰巴托是不一致的。

关于优化过程的信息,作为一个带字段的结构返回:

firstorderopt

一阶最优性的度量

迭代

迭代次数

funcCount

函数求值的数量

cgiterations

PCG迭代总数(仅限信任区域反射算法)

stepsize

最终位移x

算法

所使用的优化算法

消息

退出消息

解处的拉格朗日乘子,返回为带字段的结构:

较低的

下界

上界乌兰巴托

解处的雅可比矩阵,作为实矩阵返回。雅可比矩阵(i, j)的偏导数是有趣的(我)关于x (j)在解决方案中x

限制

  • 信赖域反射算法不能求解欠定系统;它要求方程的个数,即的行维数F,至少与变量的数量一样多。在欠定情况下,lsqcurvefit使用Levenberg-Marquardt算法。

  • lsqcurvefit可以直接解决复值问题。注意,绑定约束对于复杂值没有意义。对于有约束的复杂问题,将变量分成实部和虚部。看到复值数据的模型拟合

  • 信赖域反射法的预条件共轭梯度部分采用预条件计算JTJ(J为雅可比矩阵),然后计算预条件。因此,一行J有很多非零,结果是一个接近密集的乘积JTJ,会导致大问题的解决过程成本高昂。

  • 如果x没有上限(或下限),lsqcurvefit的相应成分乌兰巴托(或)被设置为(或对于下界),而不是任意但非常大的正数(或对于下界为负数)。

中可以使用信赖域反射算法lsqnonlinlsqcurvefit,fsolve在不计算雅可比矩阵的情况下解决中小规模的问题有趣的或者提供雅可比稀疏模式。(这也适用于使用fminconfminunc无需计算黑森或提供黑森稀疏模式。)中小规模有多小?没有绝对的答案,因为这取决于计算机系统配置中的虚拟内存数量。

假设你的问题是方程和n未知数。如果命令J =稀疏(ones(m,n))导致一个内存不足在您的机器上出现错误,那么这肯定是一个太大的问题。如果它没有导致错误,则问题可能仍然太大。您可以通过运行MATLAB并查看MATLAB是否在系统上可用的虚拟内存范围内运行来找到答案。

算法

Levenberg-Marquardt方法和信赖区域反射方法是基于非线性最小二乘算法fsolve

选择功能

应用程序

优化活动编辑器任务提供了一个可视化界面lsqcurvefit

参考文献

[1]科尔曼,T.F.和李颖。有边界的非线性极小化的内部信赖域方法。SIAM优化期刊, Vol. 6, 1996, pp. 418-445。

[2]科尔曼,T.F.和李颖。大尺度非线性有界极小化问题的反射牛顿方法的收敛性数学规划,第67卷第2期,1994年,第189-224页。

[3] Dennis, J. E. Jr. <非线性最小二乘>。数值分析的最新进展, D.雅各布斯编,学术出版社,269-312页。

[4] Levenberg, K.“最小二乘中求解某些问题的方法”。应用数学季刊2, 1944,第164-168页。

[5] Marquardt, D.“非线性参数的最小二乘估计算法”。应用数学杂志,卷11,1963,第431-441页。

[6] Moré, J. J.“Levenberg-Marquardt算法:实现和理论。”数值分析华森主编,《数学讲稿》630,施普林格Verlag出版社,1977年,第105-116页。

[7] Moré, J. J., B. S. Garbow和K. E. Hillstrom。MINPACK用户指南.阿贡国家实验室,报告。退火- 80 - 74,1980。

M. J. D. <求解非线性代数方程组的Fortran子程序>非线性代数方程的数值方法, P. Rabinowitz主编,Ch.7, 1970。

扩展功能

版本历史

R2006a之前介绍

Baidu
map