主要内容

このページの翻訳は最新ではありません。ここをクリックして,英语の最新版を参照してください。

非非形データ合成

优化工具箱优化X™のいくつかのアルゴリズムをし非形のをデータに当て当て方法

问题の设定

以下のデータを考え。

数据=......[0.0000 5.8955 0.1000 3.5639 0.2000 2.5173 0.3000 1.9790 0.4000 1.8990 0.5000 1.3938 0.6000 1.1359 0.7000 1.0096 0.8000 1.0343 0.9000 0.8435 1.0000 0.6856 1.1000 0.6100 1.2000 0.5392 1.3000 0.3946 1.4000 0.3903 1.5000 0.5474 1.6000 0.3459 1.7000 0.1370 1.8000 0.2211 1.9000 0.1704 2.0000 0.2636];

これらこれらのデータポイントポイントをプロットてみましょましょしてみましょ

t =数据(:1);Y =数据(:,2);%轴([0 2 -0.5 6])% 坚持,稍等绘图(t,y,'ro') 标题('数据点'

%抵消

关节

Y = C(1)* exp( - - - 1)* T)+ C(2)* EXP( - - - 2)* T)

をデータに近似したいと思います。

lsqcurvefit.をを用した法

关节lsqcurvefit.では,このような问题を単解くことができます。

まず,パラメーターパラメーターを数xの项で定义し。

X(1)= C(1)

X(2)=林(1)

X(3)= C(2)

X(4)=林(2)

次に,パラメーターxおよびデータtの关键として曲曲を定义します。

f = @(x,xdata)x(1)* exp(-x(2)* xdata)+ x(3)* exp(-x(4)* xdata);

次次ように,初点x0ををにし.c(1)= 1,am(1)= 1,c(2)= 1,am(2)= 0:

x0 = [1 1 1 0];

ソルバーを実行し,结果の近似をプロットします。

[x,Resnorm,〜,EXITFLAG,输出] = LSQCurveFit(F,X0,T,Y)
地方最低可能。LSQCurveFit停止,因为相对于其初始值的平方和总和的最终变化小于功能公差的值。
X =1×4.3.0068 10.5869 2.8891 1.4003
Resnorm = 0.1477.
ExitFlag = 3.
输出=结构与字段:Firstorderopt:7.8852E-06迭代:6 Funccount:35 Cgiteration:0算法:'信任区域 - 反光'STAPEIZE:0.0096消息:'...'
抓住绘图(t,f(x,t))保持离开

Fminunc.をを用した法

Fminunc.をを用して问题をには,残差残差の和として目的关键词をします。

fsumsquares = @(x)和((f(x,t) -  y)。^ 2);opts = Optimoptions('fminunc''算法''quasi-newton');[Xunc,Ressquared,Eflag,Outputu] =......Fminunc(fsumsquares,x0,选择)
发现本地最低限度。优化完成,因为梯度的大小小于最优耐受性的值。
Xunc =.1×4.2.8890 1.4003 3.0069 10.5862
Ressquared = 0.1477.
EFLAG = 1
Outputu =结构与字段:迭代:30 Funccount:185 STAPEIZE:0.0017 LSSTeplenth:1:1 FirstOrderopt:2.9662E-05算法:'Quasi-Newton'消息:'...'

Fminunc.をを用してlsqcurvefit.と同じ解ががが,より多元の关键。Fminunc.のパラメーターは,lsqcurvefit.よりのきなはの顺序なりますますなりきなははははη(1)ではなくam(2)です。変の顺序任意な,これこれ当然です。

fprintf([“使用fminunc,”有%d迭代,“......'和%d使用lsqcurvefit。\ n'],......OutputU.Iltations,Output.Iltations)
使用Fminunc和6使用LSQCurveFit有30个迭代。
fprintf([“使用fminunc,”有%d函数评估“......'和%d使用lsqcurvefit。'],......outputu.funccount,output.funccount)
使用Fminunc和35使用LSQCurveFit有185个功能评估。

线形问题とと非形形问题分享

近似问题は,パラメーターc(1)およびc(2)の形であるください。これこれ,林(1)およびlam(2)および任意の値に対し,バックスラッシュラッシュをに対し,バックしし,最小二乘问题を解くc(1)およびc(2)の値を见つけることができるいうことです。

2次元问题として问题を,林(1)および榄(2)の最适な値を探し.c(1)およびc(2)の値は,上记でで明したに,バックラッシュバックラッシュ子をを用して各ステップでさされます。

类型FitVector.
功能Yest = FitVector(LAM,XDATA,YDATA)%FITVEMO用于返回拟合功能的值。%Yest = FitVector(LAM,XDATA)返回拟合函数,Y%(下面定义)的值,在数据点XDATA中设置为LAM的参数。%YEST作为n×1列向量返回,其中n是%数据点的数量。%fifevector假定拟合函数y,采用表格%y = c(1)* exp( -  -1)* t)+ ... + c(n)* exp( -   -   -  am(n)*用N线性参数C和N非线性参数LAM的T)%百分比。为线性参数C求解%%,我们构建一个矩阵A%,其中exp的第j个列( -   -   -   -   -   -  j)* xdata)(xdata是向量)。然后我们解决了一个* c = ydata的线性最小二乘溶液c,%ydata是y的观察值。a =零(长度(xdata),长度(lam));%构建j = 1的矩阵:长度(lam)a(:,j)= exp( -  -lam(j)* xdata);结束c = a \ ydata;%求解一个* c = y用于线性参数c yest = a * c; % return the estimated response based on c

lsqcurvefit.を使使し问题ますますます.2次元のの点点林(1),林(2)から始めます。

x02 = [1 0];F2 = @(x,t)fitvector(x,t,y);[x2,Resnorm2,〜,ExitFlag2,Output2] = LSQCurveFit(F2,X02,T,Y)
地方最低可能。LSQCurveFit停止,因为相对于其初始值的平方和总和的最终变化小于功能公差的值。
x2 =1×210.5861 1.4003
Resnorm2 = 0.1477.
EXITFLAG2 = 3.
Output2 =结构与字段:Firstorderopt:4.4018E-06迭代:10 Funccount:33 Cgiterations:0算法:'信任区域 - 反光'步骤:0.0080消息:'...'

2次元次元法のは,4次元解法の效率と同等。

fprintf([“使用2-D”有%D函数评估......“配方,使用4-D配方的%D.”],......Output2.Funccount,Output.funccount)
使用23个功能评估使用2-D配方和35使用4-D配方。

初期推定推定に対してよりロバスト分享问题

元の4パラメーター问题に対して不适切な始点选択する,大肠的でない局所的な解もたらされます。分享到れます。分享到れれ。値をもつ始点を选択すると,大域的な解がもたらされます。これを示すために,相対的に不适切である局所的な解をもたらす始点をもつ元の问题を再実行し,大域的なな解によって得得られたと比较しし近似と比较し

x0bad = [5 1 1 0];[XBAD,ResnorMBAD,〜,EXITFLAGBAD,OutputBad] =......lsqcurvefit(f,x0bad,t,y)
地方最低可能。LSQCurveFit停止,因为相对于其初始值的平方和总和的最终变化小于功能公差的值。
XBAD =1×4.-22.9036 2.4792 28.0273 2.4791
ResnorMBAD = 2.2173
ExitFlagbad = 3.
outputbad =.结构与字段:FirstOrderopt:0.0057迭代:32 Funccount:165 Cgiterations:0算法:'信任区域反光'步骤:0.0021消息:'...'
抓住绘图(t,f(xbad,t),'G') 传奇('数据''全球合适''糟糕的地方合身''地点''ne') 抓住离开

fprintf(['良好结束点的残余规范是%f,'......'坏结局点的残余标准是%f。'],......Resnorm,ResnorMBAD)
良好结束点处的残余规范为0.147723,坏终点处的残余规范为2.217300。

关键词トピック