Anda di halaman 1dari 13

LAPORAN METODE OPTIMASI LANJUT

PENYELESAIAN MASALAH NONLINEAR LEAST SQUARE


DENGAN MENGGUNAKAN METODE POWELL’S DOG LEG, LEVENBERG-
MARQUADT DAN HYBRID (LEVENBERG-MARQUADT DAN QUASI NEWTON)

Diska Armeina
NIM. 20119005
Institut Teknologi Bandung
2020

I. PENDAHULUAN
Dierikan suatu fungsi 𝑓: ℝ𝑛 ↦ ℝ𝑚 dengan 𝑚 ≥ 𝑛. Pada malasah nonlinear least square ini akan
diminimumkan ||𝑓(𝑥)|| dengan mencari
𝑥 ∗ = 𝑎𝑟𝑔𝑚𝑖𝑛𝑥 {𝐹(𝑥)}
Dimana
𝑚
1 2 1 2 1
𝐹(𝑥) = ∑(𝑓𝑖 (𝑥)) = ||𝑓(𝑥)|| = 𝑓(𝑥)𝑇 𝑓(𝑥)
2 2 2
𝑖=1

Misal 𝑓kontinu dituliskan dalam perluasan Taylor sebagai berikut.


2
𝑓(𝑥 + ℎ) = 𝑓(𝑥) + 𝐽(𝑥)ℎ + 𝑂 (||ℎ|| )

Dimana 𝐽 ∈ ℝ𝑚×𝑛 matriks jacobian yang dideiniskan sebagai berikut.


𝜕𝑓𝑖
(𝐽(𝑥))𝑖𝑗 = (𝑥)
𝜕𝑥𝑗
𝐹: ℝ𝑛 ↦ ℝ, maka
𝑚
𝜕𝐹 𝜕𝑓𝑖
𝐹 ′ (𝑥) = (𝑥) = ∑ 𝑓𝑖 (𝑥) (𝑥) = 𝐽(𝑥)𝑇 𝑓(𝑥)
𝜕𝑥𝑗 𝜕𝑥𝑗
𝑖=1

Selanjutnya dapat diperoleh pula

𝑚
′′ (𝑥)
𝜕𝑓𝑖 𝜕𝑓𝑖 𝜕𝑓𝑖2
𝐹 = ∑( (𝑥) (𝑥) + 𝑓𝑖 (𝑥) (𝑥))
𝜕𝑥𝑗 𝜕𝑥𝑘 𝜕𝑥𝑗 𝜕𝑥𝑘
𝑖=1
𝑚 𝑚 𝑚
′′ (𝑥)
𝜕𝑓𝑖 𝜕𝑓𝑖 𝜕𝑓𝑖2 2
𝐹 = ∑( (𝑥) (𝑥) ) + ∑ (𝑓𝑖 (𝑥) (𝑥)) = ||𝐽(𝑥)|| + ∑ 𝑓𝑖 (𝑥)𝑓𝑖 ′′(𝑥)
𝜕𝑥𝑗 𝜕𝑥𝑘 𝜕𝑥𝑗 𝜕𝑥𝑘
𝑖=1 𝑖=1 𝑖=1

Maka diperoleh
𝑚
′′ (𝑥) 𝑇
𝐹 = 𝐽(𝑥) 𝐽(𝑥) + ∑ 𝑓𝑖 (𝑥)𝑓𝑖 ′′(𝑥)
𝑖=1

Pada laporan ini penyelesaian masalah nonlinear least squre dengan menggunakan metode
Powell’s Dog leg, Levenberg-Marquadt dan Hybrid (Levenberg-Marquadt dan Quasi Newton).
Metode Powel Dogleg sebelumnya telah digunakan pula pada metode Trust region. Pada laporan
ini akan dibahas terkait metode Levenberg-Marquadt dan Hybrid.
1. Levenberg-Marquadt (LM)
Metode LM menggunakan damped pada metode Gauss-Newton dimana langkah ℎ𝑙𝑚
dimodifikasi yang didefinisikan sebagai berikut.
(𝐽𝑇 𝐽 + 𝜇𝐼)ℎ𝑙𝑚 = −𝑔 dengan 𝑔 = 𝐽𝑇 dan 𝜇 ≥ 0
Damping parameter iniakan berpengaruh terhadap penentuan arah dan panjang langkah.
Pemilihan nilai parameter 𝜇 berkaitan dengan elemen-elemn yang ada pada
𝐴0 = 𝐽(𝑥0 )𝑇 𝐽(𝑥0 ) dengan 𝜇0 = 𝜏 ∗ max{𝑎𝑖𝑖 }
𝑖

Selama iterasi nilai 𝜇 diupdate dengn gain ratio berikut.


𝐹(𝑥) − 𝐹(𝑥𝑛𝑒𝑤 )
𝜌≔
𝐿(0) − 𝐿(ℎ𝑙𝑚 )
Dalam penyelesaian menggunakan metode LM, landasan teori penyelesesain bersumber dari
[2] sebagai berikut dengan algoritma sebagai berikut.

Algoritma 1.
Langkah 1. Inisialisasi iterasi 𝑘 = 0; 𝑣 = 2; nilai awal 𝑥0; matriks 𝐴 = 𝐽(𝑥)𝑇 𝐽(𝑥); dan
vector 𝑔 = 𝐽(𝑥)𝑇 𝑓(𝑥); 𝑓𝑜𝑢𝑛𝑑 ≔ (||𝑔||∞ ≤ 𝜖1 ) ; 𝜇 = 𝜏 ∗ max{aii }
Langkah 2. While (~𝑓𝑜𝑢𝑛𝑑) and (𝑘 < 𝑘𝑚𝑎𝑥 )
Langkah 3. Definisikan 𝑘 ≔ 𝑘 + 1; ℎ𝑙𝑚 = (𝐴 + 𝜇𝐼)−1 (−𝑔)
Langkah 4. If ||𝒉𝒍𝒎 || ≤ 𝝐2 (||𝑥|| + 𝜖2 )
𝑓𝑜𝑢𝑛𝑑 ≔ 1
Langkah 5. Else
𝐹(𝑥)−𝐹(𝑥𝑛𝑒𝑤 )
Definisikan 𝑥𝑛𝑒𝑤 = 𝑥0 + ℎ𝑙𝑚 ; 𝜌 ≔ 𝐿(0)−𝐿(ℎ𝑙𝑚 )
Langkah 6. if 𝜌 > 0
Langkah 7. Definisikan 𝑥0 = 𝑥𝑛𝑒𝑤 ; 𝐴 = 𝐽(𝑥)𝑇 ; 𝑔 = 𝐽(𝑥)𝑇 𝑓(𝑥)
𝑓𝑜𝑢𝑛𝑑 ≔ (||𝑔||∞ ≤ 𝜖1 )
1
𝜇 = 𝜇 ∗ max { , 1 − (2𝜌 − 1)3 } ; 𝑣 = 2
3
else 𝜇 ≔ 𝜇 ∗ 𝑣; 𝑣 ≔ 2 ∗ 𝑣
end (while)

2. Hybrid Levenberg-Marquadt dan Quasi Newton (LM-QN)


Metode Hybrid ini dilakukan melalui kombinasi antara metode Levenberg-Marquadt (LM)
dan Quasi Newton (QN). Iterasi dimulai dengan metode LM. Jika 𝐹(𝑥 ∗ ) secara signifikan tak
nol, maka akan pindah ke metode QN yaitu dengan kondisi ||𝐹 ′ (𝑥)||∞ < 0.02 ∗ 𝐹(𝑥) pada 3
iterasi secara berurutan yang artinya nilai pada iterasi 𝑖 sudah mendekati 𝑥 ∗ dengan 𝐹 ′ (𝑥) =
0 namun 𝐹(𝑥 ∗ ) secara signifikan tak nol. Metode QN pada dasarnya adalah menyelesaikan
persamaan 𝐵ℎ𝑞𝑛 = −𝐹′(𝑥) dengan B diupdate berdasarkan metode BFGS.
Algoritma 2.
Langkah 1. Insialisasi iterasi awal 𝑘 = 0; nilai awal 𝑥0; matriks hessian 𝐵 = 𝐼
𝑓𝑜𝑢𝑛𝑑 ≔ ||𝐹 ′ (𝑥)||∞ ≤ 𝜖1 ; 𝑚𝑒𝑡ℎ𝑜𝑑 = 𝐿𝑀

Langkah 2. While (~𝑓𝑜𝑢𝑛𝑑) and (𝑘 < 𝑘𝑚𝑎𝑥 )


𝑘 =𝑘+1
Langkah 3. If method == LM
Langkah 4. Definisikan 𝑥𝑛𝑒𝑤 = 𝑥; ℎ𝑙𝑚 = (𝐴 + 𝜇𝐼)−1 (−𝑔)
Langkah 5. If ||ℎ𝑙𝑚 || ≤ 𝜖2 (||𝑥|| + 𝜖2 )
𝑓𝑜𝑢𝑛𝑑 = 𝑡𝑟𝑢𝑒
Langkah 6. Else
𝐹(𝑥)−𝐹(𝑥𝑛𝑒𝑤 )
Definisikan 𝑥𝑛𝑒𝑤 = 𝑥0 + ℎ𝑙𝑚 ; 𝜌 ≔ 𝐿(0)−𝐿(ℎ𝑙𝑚 )

Langkah 7. If 𝜌 > 0
𝑏𝑒𝑡𝑡𝑒𝑟 ≔ 𝑡𝑟𝑢𝑒, 𝑓𝑜𝑢𝑛𝑑 ≔ ||𝐹 ′ (𝑥)||∞ ≤ 𝜖1

Langkah 8. If ||𝐹 ′ (𝑥𝑛𝑒𝑤 )||∞ < 0.02 ∗ 𝐹(𝑥𝑛𝑒𝑤 )

𝑐𝑜𝑢𝑛𝑡 ≔ 𝑐𝑜𝑢𝑛𝑡 + 1
Langkah 9. If 𝑐𝑜𝑢𝑛𝑡 = 3
𝑚𝑒𝑡ℎ𝑜𝑑 = 𝑄𝑁
else 𝑐𝑜𝑢𝑛𝑡 = 0
else 𝑐𝑜𝑢𝑛𝑡 = 0; 𝑏𝑒𝑡𝑡𝑒𝑟 ≔ 𝑓𝑎𝑙𝑠𝑒
else
Langkah 9. 𝑥𝑛𝑒𝑤 = 𝑥0; 𝑚𝑒𝑡ℎ𝑜𝑑 ≔ 𝑄𝑁; 𝑏𝑒𝑡𝑡𝑒𝑟 ≔ 𝑓𝑎𝑙𝑠𝑒
Langkah 10. Definisikan ℎ𝑞𝑛 = −𝐵 −1 𝐹′(𝑥)

Langkah 11. If ||ℎ𝑞𝑛 || ≤ 𝜖2 (||𝑥|| + 𝜖2 )

𝑓𝑜𝑢𝑛𝑑 ≔ 𝑡𝑟𝑢𝑒
else
Langkah 12. if ||ℎ𝑞𝑛 || > Δ

Δ
ℎ𝑞𝑛 = ( ) ∗ ℎ𝑞𝑛
||ℎ𝑞𝑛 ||

Langkah 13. Definisikan 𝑥𝑛𝑒𝑤 = 𝑥0 + ℎ𝑞𝑛


Langkah 14. If ||𝐹 ′ (𝑥𝑛𝑒𝑤 )||∞ ≤ 𝜖1

𝑓𝑜𝑢𝑛𝑑 = 𝑡𝑟𝑢𝑒
else
Langkah 15. 𝑏𝑒𝑡𝑡𝑒𝑟 ≔ (𝐹(𝑥𝑛𝑒𝑤 ) < 𝐹(𝑥)) or (𝐹(𝑥𝑛𝑒𝑤 ) ≤ (1 +
𝛿)𝐹(𝑥) and ||𝐹 ′ (𝑥𝑛𝑒𝑤 )||∞ < ||𝐹 ′ (𝑥)||∞

Langkah 16. If ||𝐹 ′ (𝑥𝑛𝑒𝑤 )||∞ ≥ ||𝐹 ′ (𝑥)||∞

𝑚𝑒𝑡ℎ𝑜𝑑 = 𝐿𝑀
end
Langkah 17. Update ℎ = 𝑥𝑛𝑒𝑤 − 𝑥0 dan definisikan
𝑇
𝑦 = 𝐽𝑛𝑒𝑤 𝐽𝑛𝑒𝑤 ℎ + (𝐽𝑛𝑒𝑤 − 𝐽)𝑇 𝑓(𝑥𝑛𝑒𝑤 )
Langkah 18. If ℎ𝑇 𝑦 > 0
Langkah 19. Definisikan 𝑣 = 𝐵ℎ
1 1
𝐵 = 𝐵+( 𝑇
𝑦) 𝑦 𝑇 − ( 𝑇 𝑣) 𝑣 𝑇
ℎ 𝑦 ℎ 𝑣
Langkah 20. If 𝑏𝑒𝑡𝑡𝑒𝑟 == 1
𝑥0 = 𝑥𝑛𝑒𝑤
end (while)
II. HASIL DAN PEMBAHASAN
Diberikan data sebagai berikut.
𝑡 0 2 4 6 8 10 12 14 16 18 20
𝑓(𝑡) 0 3.55 3.82 2.98 2.32 1.48 1.02 0.81 0.41 0.42 0.15

Selanjutnya akan ditentukan nilai parameter 𝑥1 , 𝑥2 , 𝑥3 , dan 𝑥4 sehingga fungsi 𝑓(𝑡) = 𝑥1 𝑒 𝑥2 𝑡 +


𝑥3 𝑒 𝑥4 𝑡 yang merupakan model yang mewakili data diatas. Pada laporan ini, akan digunakan
metode Hybrid Lavenberg-Marquadt dan Quasi Newton (LM-QN) dan sebagai perbandingan akan
digunakan pula metode Powell’s Dogleg dan Lavenberg-Marquadt (LM). Penyelesaian masalah
pada laporan ini dengan menggunakan aplikasi Matlab R2017a. Dengan metode Hybrid LM-QN,
diguanakan nilai awal 𝑥0 = [0.1; −0.6; 0.4; −0.5] dengan nilai parameter 𝜏 = 10−6 , nilai
toleransi 𝜖1 = 10−3 dan 𝜖2 = 10−4 , dan jumlah maksimum iterasi sebanyak 1000.

TABEL 1. Hybrid LM-QN dengan 𝑥0 = [0.1; −0.6; 0.4; −0.5]


Hasil perhitungan dengan matlab ditunjukkan pada Tabel 1 yaitu diperoleh nilai nilai 𝑥1 , 𝑥2 , 𝑥3
dan 𝑥4 berturut-turut -13.62007, -0.42210, 13.617146 dan -0.208495 dengan RMSE 0.0682 pada
iterasi ke-26. Dengan demikian diperoleh aproksimasi fungsi terhadap data yang diberikan adalah
𝑓𝐻 (𝑡) = −13.62007e−0.42210t + 13.617146 e−0.208495
Perbandingan nilai yang diberikan oleh 𝑓𝐻 (𝑡) menggunakan Hybrid LM-QN dengan data
sebenarnya dapat lebih jelas terlihat pada Gambar 1.

GAMBAR 1. Grafik Data dan Approksimasi fungsi dari metode Hybrid LM-QN
dengan 𝑥0 = [0.1; −0.6; 0.4; −0.5]

Selanjutnya, dilakukan pengujian dengan menggunakan metode Powell’s Dogleg, Levenberg-


Marquadt (LM) dan Hybrid (LM-QN) dengan titiik awal dan parameter yang sama dengan nilai
toleransi 𝜖1 = 𝜖2 = 𝜖3 = 0.01. Dengan parameter tersebut, metode Hybrid memberikan nilai
𝑥1 , 𝑥2 , 𝑥3 dan 𝑥4 berturut-turut -13.5606, -0.4631, 13.5575 dan -0.2082 pada iterasi ke 25. Nilai
𝑥1 , 𝑥2 , 𝑥3 dan 𝑥4 yang sama dengan metode Hybrid diperoleh dengan metode LM namun pada
iterasi yang lebih banyak yaitu 33. Sedangkan dengan menggunakan metode Powell’s Dogleg
diperoleh pada iterasi ke-12 dengan nilai aproksimasi 𝑥1 , 𝑥2 , 𝑥3 dan 𝑥4 berturut-turut -13.5605, -
0.4629, 13.5031 dan -0.2079. Perbandingan hasil yang diperoleh lebih jelas terlihta pada Gambar
2 -5 berikut ini.

GAMBAR 3. Grafik Data dan Approksimasi fungsi dari metode


GAMBAR 2. Grafik Data dan Approksimasi fungsi dari metode
Hybrid LM-QN dengan 𝑥0 = [0.1; −0.6; 0.4; −0.5]
Dogleg, LM danHybrid LM-QN dengan 𝑥0 =
[0.1; −0.6; 0.4; −0.5]

GAMBAR 5. Grafik Data dan Approksimasi fungsi dari metode


GAMBAR 4. Grafik Data dan Approksimasi fungsi dari metode
Levenberg-Marquadt dengan 𝑥0 = [0.1; −0.6; 0.4; −0.5]
Powell’s Dogleg dengan 𝑥0 = [0.1; −0.6; 0.4; −0.5]
III. KESIMPULAN

Berdasarkan hasil dan pembahasan, dapat disimpulkan bahwa:


 Dengan menggunakan nilai awal 𝑥0 = [0.1; −0.6; 0.4; −0.5] dengan nilai parameter 𝜏 =
10−6 , nilai toleransi 𝜖1 = 10−3 dan 𝜖2 = 10−4, dan jumlah maksimum iterasi sebanyak 1000,
untuk mengapproksi data yang diberikan diperoleh model fungsi sebagai berikut.
𝑓𝐻 (𝑡) = −13.62007e−0.42210t + 13.617146 e−0.208495
Pada iterasi ke-26 dengan RMSE sebesar 0.0682.

 Setelah dilakukan pengujian dengan parameter yang sama untuk metode Powell’s Dogleg,
Levenberg-Marquadt dan Hybrid (Levenberg-Marquadt dan Quasi Newton), diperoleh bahwa
metode Powell’s Dogleg adalah yang terbaik berdasarkan jumlah iterasi yang diperoleh
metode tersebut paling sedit dibandingkan metode LM dan Hybrid LM-QN.

IV. REFERENSI
[1] Madsen, K., Nielsen, H.B., Tingleff, O., Methods for Non-Linear Least Squares Problems
(2004)
V. LAMPIRAN

clear all;
clc;
close all;

% Data
t=0:2:20;
m=length(t);
y = [0 3.55 3.82 2.98 2.32 1.48 1.02 0.81 0.41 0.42 0.15];

% Plot Data
figure(1)
plot(t,y,'o','MarkerFaceColor','w','MarkerEdgeColor','k','MarkerSize',8,'line
width',1);
axis([0 20 0.9*min(y) 1.1*max(y)]);
Leg=legend('Data (t_i,y_i)')
set(Leg,'location','NorthWest')

% Main Code
k_max=1000;k=0;
for method=1:3 %1(Dogleg)/2(Hybrid),3(LM)

% Titik Awal
%x0=[11;1;-5;-1];
x0=[-0.1;-0.6;0.4;-0.5];

if method==1 %DOGLEG ; eps1,eps2,eps3=0.01


x=x0;D=1;g=J(x,t)'*fvec(x,t,y);
found=(max(abs(fvec(x,t,y)))<=10^-2)||(max(abs(g))<=10^-2);
while found==0 && k<k_max
k=k+1;
alp=(g'*g)/(g'*J(x,t)'*J(x,t)*g);
hsd=-alp*g; hgn=-inv(J(x,t)'*J(x,t))*J(x,t)'*fvec(x,t,y);

if Norm(hgn)<=D
hdl=hgn;
else if Norm(alp*hsd)>=D
hdl=(D/Norm(hsd))*hsd;
else
a=alp*hsd;b=hgn;c=a'*(b-a);
if c<=0
beta=(-c+sqrt(c^2+(Norm(b-a))^2*(D^2-a'*a)))/((b-a)'*(b-
a));
else
beta=(D^2-a'*a)/(c+sqrt(c^2+(Norm(b-a))^2*(D^2-a'*a)));
end
hdl=alp*hsd+beta*(hgn-alp*hsd);
end
end

if Norm(hdl)<=0.01*(Norm(x)+0.01)
found=1;
else
xnew=x+hdl
rho=(F(x,t,y)-F(xnew,t,y))/(L([0;0;0;0],x,t,y)-L(hdl,x,t,y));
if rho>0
x=xnew; g=J(x,t)'*fvec(x,t,y);
found=(max(abs(fvec(x,t,y)))<=0.01)||(max(abs(g))<=0.01);
end
if rho>0.75
D=max(D,3*Norm(hdl));
else if rho<0.25
D=D/2; found=(D<=0.01*(Norm(x)+0.01));
end
end
end
end
end

if method==2
k=0; v=2; x=x0; A=J(x,t)'*J(x,t); g=J(x,t)'*fvec(x,t,y); tau=10^-6;
found=(max(abs(g))<=0.001); mu=tau*max(diag(A)); I=diag(ones(1,4));
while found==0 && k<k_max
k=k+1; hlm=-((A+mu*I)^(-1))*g;
if Norm(hlm)<=0.01*(Norm(x)+0.01)
found=1;
else
xnew=x+hlm;
rho=(F(x,t,y)-F(xnew,t,y))/(0.5*hlm'*(mu*hlm-g));
if rho>0
x=xnew; A=J(x,t)'*J(x,t); g=J(x,t)'*fvec(x,t,y);
found=(max(abs(g))<=0.01);
mu=mu*max(1/3,1-(2*rho-1)^3); v=2;
else
mu=mu*v; v=2*v;
end
end

end
end

if method==3
k=0;
k_max=100;
x=x0;
eps1= 10^-2;
eps2=10^-2;
tau=10^-6;
A0=J(x,t)'*J(x,t);
mu=tau*max(diag(A0));
I=diag(ones(1,4));
B=I;
g=J(x,t)'*fvec(x,t,y);
found=(max(abs(gf(x,t,y)))<=0.01); met='LM'; count=0; v=2;
while found==0 && k<k_max
k=k+1;
if met=='LM'
xnew=x; met='LM';
hlm=-(inv((J(x,t)'*J(x,t)+mu*I)))*J(x,t)'*fvec(x,t,y);
%gf(x,t,y);
if Norm(hlm)<=eps2*(Norm(x)+eps2)
found=1;
else
xnew=x+hlm;
rho=(F(x,t,y)-F(xnew,t,y))/(0.5*hlm'*(mu*hlm-
J(x,t)'*fvec(x,t,y)));
if rho>0
better=1;
found=(max(abs(gf(xnew,t,y)))<=eps1);
mu=mu*max(1/3,1-(2*rho-1)^3);
v=2;
if max(abs(gf(xnew,t,y)))<0.002*F(xnew,t,y)
count=count+1;
if count==3;
met='QN';
end
else
count=0;
end
else
count=0; better=0; mu=mu*v; v=2*v;
end
end
else
xnew=x; met='QN'; better=0; hqn=-B*gf(x,t,y);
delta = max(1.5*eps2*(Norm(x)+eps2),0.2*Norm(hlm));
if Norm(hqn)<=eps2*(Norm(x)+eps2)
found=1;
else
if Norm(hqn) > delta
hqn = (delta/Norm(hqn))*hqn;
end
xnew=x+hlm;
rho=(F(x,t,y)-F(xnew,t,y))/(0.5*hlm'*(mu*hlm-
J(x,t)'*fvec(x,t,y)));
if rho < 0.25
delta = delta*0.5;
elseif rho > 0.75
delta = max(delta, 3*Norm(hqn));
end
if max(abs(gf(xnew,t,y))) <= 0.01
found = 1;
else
better=(F(xnew,t,y)<F(x,t,y))||(F(xnew,t,y)<=(1+10^-
6)*F(x,t,y) && max(abs(gf(xnew,t,y)))<max(abs(gf(x,t,y))));
if max(abs(gf(xnew,t,y)))>=max(abs(gf(x,t,y)))
met='LM';
end
end
end
end
h=xnew-x;
Y=J(xnew,t)'*J(xnew,t)*h+(J(xnew,t)-J(x,t))'*fvec(xnew,t,y);
if h'*Y>0
V=B*h;
B=B+(1/(h'*Y))*Y*Y'-(1/(h'*V)*V)*V';
end
if better == 1
fprintf('%2i\t %6.6f\t %6.6f\t %6.6f\t %6.6f\t \n', k-8,
x(1),x(2),x(3),x(4))
x=xnew;
end
end
end

Xmin=x
Fmin=F(Xmin,t,y);
iter=k
fin= Xmin(1)*exp(Xmin(2)*t)+Xmin(3)*exp(Xmin(4)*t);
RMSE = sqrt(mean((y-fin).^2))

%Plot tiap metode


x1=Xmin(1);x2=Xmin(2);x3=Xmin(3);x4=Xmin(4);
figure(2)
hold on
tplot=-2:2:20;

if method==1
plot(tplot,x1*exp(x2*tplot)+x3*exp(x4*tplot),'-*','color',[0, 0.4470,
0.7410],'linewidth',9)
param1=[x1 x2 x3 x4 Fmin iter];
end
if method==2
plot(tplot,x1*exp(x2*tplot)+x3*exp(x4*tplot),'-*','color',[0.8500,
0.3250, 0.0980],'linewidth',5)
param2=[x1 x2 x3 x4 Fmin iter];
end
if method==3
plot(tplot,x1*exp(x2*tplot)+x3*exp(x4*tplot),'-*','color',[0.9290,
0.6940, 0.1250],'linewidth',2)
plot(t,y,'-ok','linewidth',1);
%plot(t,y,'-
o','MarkerFaceColor','w','MarkerEdgeColor','k','MarkerSize',8,'linewidth',1);
param3=[x1 x2 x3 x4 Fmin iter];
end
xlabel('x')
ylabel('y')
axis([-1 20 0.9*min(y) 1.1*max(y)]);
Leg=legend('Hybrid(LM-QN)','Data')
%Leg=legend('Dogleg','LM','Hybrid(LM-QN)','Data')

set(Leg,'location','NorthWest')
end
[param1;param2;param3]

%% Functions
function z=f(j,x,t,y)
z=y(j)-x(1)*exp(x(2)*t(j))-x(3)*exp(x(4)*t(j));
end

function z=fvec(x,t,y)
z=f(1,x,t,y);
for j=2:length(t)
z=[z;f(j,x,t,y)];
end
end

function Ja=J(x,t)
Ja=[-exp(x(2)*t(1)) -x(1)*t(1)*exp(x(2)*t(1)) -exp(x(4)*t(1)) -
x(3)*t(1)*exp(x(4)*t(1))];
for k=2:length(t)
j=[-exp(x(2)*t(k)) -x(1)*t(k)*exp(x(2)*t(k)) -exp(x(4)*t(k)) -
x(3)*t(k)*exp(x(4)*t(k))];
Ja=[Ja;j];
end
end

function z=F(x,t,y) %Objective function (SSE)


z=0;
for j=1:length(t)
z=z+(f(j,x,t,y))^2;
end
z=0.5*z;
end

%Gradien F
function z=gf(x,t,y)
x1=x(1);x2=x(2);x3=x(3);x4=x(4);
z1=0;z2=0;z3=0;z4=0;
for j=1:length(t)
z1=z1-f(j,x,t,y)*(exp(x(2)*t(j)));
z2=z2-f(j,x,t,y)*(x(1)*t(j)*exp(x(2)*t(j)));
z3=z3-f(j,x,t,y)*exp(x(4)*t(j));
z4=z4-f(j,x,t,y)*(x(3)*t(j)*exp(x(4)*t(j)));
end
z=[z1;z2;z3;z4];
end

function N=Norm(x)
N=sqrt(x(1)^2+x(2)^2+x(3)^2+x(4)^2);
end

function Lin=L(h,x,t,y)
Lin=0.5*(Norm(fvec(x,t,y)+J(x,t)*h))^2;
end

Anda mungkin juga menyukai