Uploaded by 김태완

ch11ppt

advertisement
제 11 장 공정의 인식과 표현
• 공정은 일반적으로 매우 복잡하며 대부분 비선형: 공정에 대한 정확한 수학적 모델을 구하는 것은 매우
어려운 일
• 실험 데이터나 조업 자료를 근거로 하여 공정을 보다 다루기 쉽고 간편한 1차나 2차의 모델식으로
근사적으로 나타내는 방법을 이용
11.1 1차 모델식을 이용한 공정의 표현
11.1.1 공정의 계단응답
• Feedback 제어구조의 구성요소: 제어변수의
측정값 𝐶𝑚 만을 고려
• G s = 𝐺𝑣 (𝑠)𝐺𝑝 (𝑠)𝐺𝑚 (𝑠)는 제어되는 공정과 제어밸브 및 센서/전환기를 모두 고려한 전달함수
• 열린루프(open loop) 전달함수: 닫힌루프를 구성하는 전달함수에서 제어기 전달함수를 제외한 전달함수
G s
• 공정의 계단응답: 제어기 출력 M이 계단 변화하여 전달함수에 도입될 때 나타나는 측정변수 𝐶𝑚 의 변화
• 공정의 계단응답을 구하기 위해서는 제어회로를 차단시키고(open-loop) 제어기로부터 공정으로 도입되는
제어기 출력변수 m(t)에 인위적으로 계단변화를 도입
• 센서/전환기로부터 얻는 출력값을 그래프로 표시: 응답곡선
• 응답곡선: 공정(공정+밸브+센서/전환기)의 계단응답곡선, 또는 공정의 반응곡선(process reaction curve)
• 크기가 ∆m인 계단변화가 도입되었을 경우의 반응곡선:
11.1.2 1차 모델식을 이용한 공정의 표현
• 공정 반응곡선: 시간지연이 존재하는 1차 모델식으로 근사적으로 표현 가능
𝐾𝑒 −𝜃𝑠
G s =
𝜏𝑠 + 1
• 공정모델 G s = 𝐺𝑣 (𝑠)𝐺𝑝 (𝑠)𝐺𝑚 (𝑠)을 구하는 일은 gain K와 시간상수 𝜏 및 시간지연 𝜃를 구하는 일로 귀착
(1) 공정이득 K의 계산
• 열린루프에서 크기 ∆𝑚인 계단입력을 공정 G(s)에 가하였다면 M s = ∆m/s이므로
𝐾∆𝑚𝑒 −𝜃𝑠
𝐶 𝑠 = 𝑀(𝑠)𝐺 𝑠 =
𝑠(𝜏𝑠 + 1)
• 역 라플라스 변환:
𝐶 𝑡 = 𝑐 𝑡 − 𝑐𝑠 = 𝐾∆𝑚 1 − 𝑒 −(𝑡−𝜃)/𝜏 𝑢(𝑡 − 𝜃)
• 응답곡선에서 새로운 정상상태에 도달하면 𝐶 ∞ = ∆𝑐𝑠
lim 𝐶(𝑡) = 𝐾∆𝑚이므로 ∆𝑐𝑠 = 𝐾∆𝑚 ⟹ 𝐾 =
𝑡→∞
∆𝑐𝑠
∆𝑚
• 공정의 gain 𝐾: 정상상태에서의 입력변수의 변화에 대한 출력변수 변화의 비
(2) 시간상수와 시간지연의 계산
• 계단입력을 가하여 얻은 공정 반응곡선으로부터 시간상수와 시간지연을 구하는 방법: 세 가지 방법을
사용
1) 방법 1: 접선의 이용
• 공정 반응곡선의 기울기가 최대인 시점에서 접선을 그어 그로부터 시간상수와 시간지연을 구하는 방법
• 기울기가 최대인 시점: 𝑡 = 𝜃일 때
• 𝑡 = 𝜃일 때의 기울기:
𝑑𝐶(𝑡)
𝑑𝑡 𝑡=𝜃
=
𝐾∆𝑚
𝜏
=
∆𝑐𝑠
𝜏
• 𝜃는 출력변수의 변화가 눈에 띄게 나타나는 시점이고 𝜏 는 𝑡 = 𝜃에서 그은 접선이 정상상태에서의
출력변수 값과 만나는 시점에서 𝜃를 뺀 값
• 1차공정 모델식의 계단응답과 접선:
• 모델식의 응답과 실제 반응곡선:
• 모델식의 응답과 실제의 공정응답과는 다소 차이: 접선을 긋는 방법에 따라 시간상수 값이 많이 변화
• 접선을 이용하는 방법은 간편하며 손쉽게 사용할 수 있으나 정확도를 기하기가 매우 어렵다.
2) 방법 2: 시간상수에서의 응답값을 이용
• 시간상수는 실제 공정의 응답값을 이용하여 규명
• 𝑡 = 𝜏에서 공정의 응답은 정상상태 값의 63.2%에 도달: 𝑡 = 𝜃 + 𝜏일 때 C 𝜃 + 𝜏 = 0.632𝐾∆𝑚 = 0.632∆𝑐𝑠
• 실제 공정의 반응곡선에서 응답이 정상상태 값의 0.632배에 도달하는 시점을 찾아 𝜃와 𝜏를 결정
3) 방법 3: 모델과 실제값의 일치관계를 이용
• 응답곡선의 변화가 심한 영역에서 임의의 두 시점을 선택
• 이 시점에서 1차 모델식의 값과 실제 응답값이 일치하는 것으로 간주한 다음 이 관계로부터 시간상수와
시간지연을 계산
• 두 시점으로 𝜃 + 𝜏/3과 𝜃 + 𝜏를 이용:
𝐶 𝑡 =𝐶 𝜃+
𝜏
3
= 𝐾∆𝑚 1 − 𝑒
1
3
−
= 0.283𝐾∆𝑚 = 0.283∆𝑐𝑠
𝐶 𝑡 = 𝐶 𝜃 + 𝜏 = 𝐾∆𝑚 1 − 𝑒 −1 = 0.632𝐾∆𝑚 = 0.632∆𝑐𝑠
• 실제 계단응답 곡선으로부터 응답이 정상상태 값 ∆𝑐𝑠 의 0.283배와 0.632배가 되는 시간 𝑡1 과 𝑡2 를 각각 규명
𝜏
3
1
• 𝑡1 = 𝜃 + 3 , 𝑡2 = 𝜃 + 𝜏이므로 𝜏 = 2 𝑡2 − 𝑡1 , 𝜃 = 2 3𝑡1 − 𝑡2
• 응답이 정상상태 값 ∆𝑐𝑠 의 0.353배와 0.853배가 되는
시간을 각각 𝑡1 과 𝑡2 로 두고 이로부터 𝜃와 𝜏를 결정하는
방법: 𝑡1 과 𝑡2 가 모두 𝜃보다 크다면
𝑡−𝜃
𝐶(𝑡)
− 𝜏
=1−𝑒
∆𝑐𝑠
• 𝑡1 과 𝑡2 에서 𝐶(𝑡)/∆𝑐𝑠 의 값이 각각 0.353과 0.853이라면
0.353 = 1 − 𝑒
𝑡 −𝜃
− 1𝜏
• 𝜃와 𝜏에 대하여 정리:
𝜏 = 0.675 𝑡2 − 𝑡1 ,
,
0.853 = 1 − 𝑒
𝑡 −𝜃
− 2𝜏
𝜃 = 1.294𝑡1 − 0.294𝑡2
보기 11-1
Feedback 제어구조:
1
40
0.02
𝐺𝑣 =
,𝐺 =
,𝐺 =
10𝑠 + 1 𝑝 20𝑠 + 1 𝑚 3𝑠 + 1
제어기와 제어밸브 사이를 차단하고 제어밸브로 도입되는 입력 M(s)에 크기 ∆𝑚 = 5 %인 계단변화를 가했을 때
얻어지는 공정의 반응곡선:
공정의 근사 모델식을 규명.
(풀이)
0.8
블럭선도로부터 G s = 𝐺𝑣 𝑠 𝐺𝑝 𝑠 𝐺𝑚 𝑠 = (10𝑠+1)(20𝑠+1)(3𝑠+1)
∆𝑐
4
공정의 gain K는 𝐾 = ∆𝑚𝑠 = 5 = 0.8.
i) 방법 1: 반응곡선으로부터 𝜃 = 8 𝑠𝑒𝑐. 반응곡선에 접선을 그으면 이 접선이 정상상태의 출력값 ∆𝑐𝑠 와
만나는 시점에서 t=47이므로 𝜏 = 𝑡 − 𝜃 = 47 − 8 = 39 𝑠𝑒𝑐. 따라서 모델식은
0.8𝑒 −8𝑠
G s =
39𝑠 + 1
ii) 방법 2: 𝜃 = 8 𝑠𝑒𝑐. 반응곡선으로부터 응답이 최종값 ∆𝑐𝑠 = 4의 0.632배, 즉 (4)(0.632)=2.53이 되는 시점은
t=37sec. 따라서 𝜏 = 𝑡 − 𝜃 = 37 − 8 = 29 𝑠𝑒𝑐 이고 모델식은
0.8𝑒 −8𝑠
G s =
29𝑠 + 1
iii) 방법 3: 반응곡선으로부터 응답이 최종값 ∆𝑐𝑠 = 4의 0.283배, 즉 (4)(0.283)=1.13이 되는 시점은 𝑡1 = 21 𝑠𝑒𝑐.
응답이 최종값의 0.632배가 되는 시점은 𝑡2 = 37 𝑠𝑒𝑐:
𝜏 = 1.5 37 − 21 = 24 𝑠𝑒𝑐,
𝜃 = 0.5 3 21 − 37 = 13 𝑠𝑒𝑐
따라서
0.8𝑒 −13𝑠
G s =
24𝑠 + 1
보기 11-2
2차 공정을 고려: 𝐺𝑝 s = (𝜏
𝐾𝑝
1 𝑠+1)(𝜏2 𝑠+1)
, 𝜏1 ≫ 𝜏2
이 공정의 응답을 근사적으로 나타낼 수 있는 1차 모델식 G s =
𝐾𝑒 −𝜃𝑠
을
𝜏𝑠+1
방법 3에 의하여 구하여라.
(풀이)
𝐾𝑝
단위계단 입력변화: C s = 𝐺𝑝 s 𝑀 𝑠 = 𝑠(𝜏
𝜏1
𝜏1 −𝜏2
역 라플라스 변환: C t = 𝐾𝑝 1 −
𝑒
=
𝑠+1)
1 𝑠+1)(𝜏2
𝑡
−𝜏
𝜏2
1
lim 𝐶(𝑡) = 𝐾𝑝 = ∆𝑐𝑠 이고 ∆𝑚 = 1이므로 𝐾 =
𝜏1 −𝜏2
𝐾𝑝
∆𝑐𝑠
=
∆𝑚
1
𝜏
t = 𝜃 + 𝜏/3: C 𝜃 + 3 = (1 − 𝑒 −1/3 )𝐾𝑝 = 𝐾𝑝 1 −
t = 𝜃 + 𝜏: C 𝜃 + 𝜏 = (1 −
이로부터
𝜏1 −𝜏2
𝜏1
𝑒 −1 )𝐾𝑝
𝑒 −1/3 = 𝑒
𝜏
𝜃+3
−𝜏
1
−
위의 두 식을 풀어서 𝜃와 𝜏를 계산.
𝜃+𝜏/3
x=
−
𝑒 𝜏1
𝜃+𝜏
,𝑦 =
−
𝑒 𝜏1
으로 두면
= 𝐾𝑝 1 −
𝜏2
𝜏1
𝜏1 −𝜏2
𝜏1
𝑒
𝜏
𝜃+3
−𝜏
2
,
𝑒 −1/3
1
𝜏1 −𝜏2
𝜏1
=𝑥−
𝑦
𝑒
−𝜏
1
𝜏1 −𝜏2 𝑠+1/𝜏1
+
𝐾𝑝 𝜏2
1
𝜏1 −𝜏2 𝑠+1/𝜏2
2
= 𝐾𝑝
𝜏1
𝜏1 −𝜏2
𝜏1
𝜏1 −𝜏2
𝑠
𝐾𝑝 𝜏1
−
𝑡
+
𝑡→∞
𝐾𝑝
𝑒
𝜏
𝜃+3
−𝜏
1
𝜃+𝜏
−
𝑒 𝜏1
+
𝑒 −1 =
𝜏2
𝜏1
이로부터 x와 y를 구하면 𝜃와 𝜏는 각각 𝜃 = 2 𝜏1 ln 𝑥 3 , 𝜏 =
𝜏1
𝜏2
𝜏2
𝜏1 −𝜏2
+
𝜏2
𝜏1 −𝜏2
𝜃+𝜏
−
𝑒 𝜏1
−
𝑒
𝜏
𝜃+3
−𝜏
2
𝜃+𝜏
−
𝑒 𝜏2
𝜏2
𝜏1
𝜃+𝜏
−
𝑒 𝜏2
𝜏
1
𝜏1 −𝜏2
𝜏2
−1
𝜏
𝑥 ,
𝑒 =𝑦− 𝜏 𝑦 2
𝜏1
1
3
𝑦
− 2 𝜏1 ln 𝑥 로부터 얻어진다.
11.1.3 2차 모델식을 이용한 공정의 표현
• 시간지연이 존재하는 2차 모델식을 이용: 𝐺 s =
𝐾𝑒 −𝜃𝑠
(𝜏1 𝑠+1)(𝜏2 𝑠+1)
혹은 𝐺 s =
𝐾𝑒 −𝜃𝑠
𝜏2 𝑠 2 +2𝜏𝜁𝑠+1
• 공정이득 𝐾와 시간지연 𝜃는 1차계에서와 같은 방법으로 규명
11.1.4 고차공정 전달함수의 근사
• 고차공정의 전달함수: 간단한 관계들을 이용하여 유사한 특성을 나타내는 형태로 근사
• 시간지연을 나타내는 전달함수 𝑒 −𝜃𝑠 의 근사: 𝑒 −𝜃𝑠 ≈
• 4차 공정을 고려: 𝐺𝑝 s = (𝜏
1
,
𝜃𝑠+1
𝑒 −𝜃𝑠 ≈ 1 − 𝜃𝑠
𝐾(𝜏0 𝑠+1)
1 𝑠+1)(𝜏2 𝑠+1)(𝜏3 𝑠+1)(𝜏4 𝑠+1)
• 분자항: 𝜏0 𝑠 + 1 ≈ 𝑒 𝜏0𝑠 로 근사
• 분모의 시간상수들 가운데 가장 큰 값을 𝜏로 설정: 𝜏 = max 𝜏𝑖
𝑖=1,2,3,4
•
1
을
𝜏𝑠+1
제외한 나머지 항들에 대하여
1
𝜏𝑖 𝑠+1
𝐺𝑝 s ≈
≈ 𝑒 −𝜏𝑖𝑠 의 관계를 적용:
𝐾𝑒 𝜏0𝑠
𝑖≠𝑖𝑚𝑎𝑥 𝑒
𝜏𝑠 + 1
−𝜏𝑖 𝑠
𝐾𝑒 −𝜃𝑠
=
𝜏𝑠 + 1
보기 11-3
전달함수가 𝐺 s =
4(0.2𝑠+1)
로
(4𝑠+1)(𝑠+1)(0.5𝑠+1)
주어지는 공정을 𝐺𝑚 s =
𝐾𝑒 −𝜃𝑠
의
𝜏𝑠+1
형태로 근사적으로 나타내어라.
(풀이)
분자의 경우 0.2𝑠 + 1 ≈ 𝑒 0.2𝑠 로 근사할 수 있다. 분모에서 가장 큰 시간상수는 4이므로
1
나머지 항들을 𝑒 −𝜃𝑠 의 형태로 근사: 𝑠+1 ≈ 𝑒 −𝑠 ,
따라서 𝐺𝑚 s ≈
4𝑒 0.2𝑠 𝑒 −𝑠 𝑒 −0.5𝑠
4𝑠+1
=
4𝑒 −1.3𝑠
4𝑠+1
1
0.5𝑠+1
≈ 𝑒 −0.5𝑠
1
을
4𝑠+1
제외한
2차공정의 근사
3
2차 공정의 전달함수가 𝐺𝑝 s = (𝑠+1)(2𝑠+1)와 같을 때 이 공정을 근사적으로 나타내는 시간지연이 존재하는
1차 모델식(FOPDT, First-Order Plus Dead Time) G s =
𝐾𝑒 −𝜃𝑠
을
𝜏𝑠+1
규명: 𝐾 = 𝐾𝑝 이므로 𝜃와 𝜏를 계산.
함수 sopapp: FOPDT 근사모델의 𝜃와 𝜏를 구하고 주어진 2차공정과 근사모델의 단위계단 응답을 그래프로
작성
function [td, tc] = sopapp(K,t1,t2)
% t1 = tau1, t2 = tau2, x(1) = theta(td), x(2) = tau(tc)
f = @(x) [exp(-(x(1)+x(2)/3)/t1) - (t2/t1)*exp(-(x(1)+x(2)/3)/t2) - ((t1-t2)/t1)*exp(-1/3);
exp(-(x(1)+x(2))/t1) - (t2/t1)*exp(-(x(1)+x(2))/t2) - ((t1-t2)/t1)*exp(-1)];
x0 = [1 1]';
x = fsolve(f,x0); td = x(1); tc = x(2);
Gp = tf(K,conv([t1 1],[t2 1]));
Ga = tf(K,[tc 1]); set(Ga,'iodelay',td);
[yp,tp] = step(Gp); [ya,ta] = step(Ga);
plot(tp,yp), hold on, plot(ta,ya,':'), grid, hold off
xlabel('t(sec)'), ylabel('y(t)')
legend('2nd-order process','FOPDT model','location','best')
end
>> [td,tc] = sopapp(3,1,2)
Equation solved.
td =
0.6955
tc =
2.4745
얻어지는 FOPDT 근사모델: G s =
3𝑒 −0.6955𝑠
2.4745𝑠+1
고차공정과 근사모델의 계단응답 비교
4(0.2𝑠+1)
단위계단 응답곡선을 이용하여 전달함수가 𝐺 s = (4𝑠+1)(𝑠+1)(0.5𝑠+1)로 주어지는 고차공정과 이를 시간지연이
존재하는 1차공정 모델(FOPDT, First-Order Plus Dead Time)로 근사적으로 나타낸 경우를 비교. 시간지연이
존재하는 1차공정 모델: 𝐺𝑚 s ≈
4𝑒 −1.3𝑠
4𝑠+1
>> Gd = tf(4, [4 1]); set(Gd,'iodelay',1.3);
>> Gn = tf(conv(4,[0.2 1]), conv([4 1], conv([1 1],[0.5 1])));
>> [yd td] = step(Gd); [yn tn] = step(Gn);
>> plot(td,yd,':'), hold on, plot(tn,yn), grid, xlabel('t(sec)'), ylabel('y(t)')
>> legend('FOPDT','Transfer fun.')
11.2 최소자승법을 이용한 공정의 표현
• 실험이나 실제 조업으로부터 얻은 자료를 가장 잘 표현할 수 있는 함수를 찾는 것은 매우 중요
• 대개 주어진 데이터를 계수들에 대하여 선형인 관계식으로 나타낼 수 있는 함수를 찾는 것이 일반적
• 최소자승법: 미리 정한 함수 𝑝(𝑥) 와 실제 데이터와의 차이가 최소가 되도록 계수들(𝑎0 , 𝑎1 , ⋯ , 𝑎𝑚 )을
결정하는 방법
• 𝑝(𝑥)의 형태: 𝑝 𝑥 = 𝑎0 𝜙0 𝑥 + 𝑎1 𝜙1 𝑥 + ⋯ + 𝑎𝑚 𝜙𝑚 𝑥 =
𝑚
𝑘=0 𝑎𝑘 𝜙𝑘
𝑥
• 여기서 𝜙0 , 𝜙1 , ⋯ , 𝜙𝑚 은 서로 다른 임의의 함수
• n개의 주어진 데이터 𝑥1 , 𝑓1 , 𝑥2 , 𝑓2 , 𝑥3 , 𝑓3 , ⋯ , 𝑥𝑛 , 𝑓𝑛 을 m개의 함수로 이루어진 함수 𝑝(𝑥)로 근사
• 최소자승법: 함수 Q의 값이 최소가 되는 선형함수의 계수들을 규명
𝑛
𝑄 𝑓, 𝑝 =
𝑓𝑖 − 𝑝(𝑥𝑖 )
2
𝑖=1
• 𝑓𝑖 − 𝑝(𝑥𝑖 )는 실제 데이터와 함수 값과의 차이 (즉 오차)
• 각 데이터 값에서 오차의 제곱의 합을 최소화함으로써 원하는 함수 𝑝 𝑥 의 계수들을 계산
• 최소에서는 𝑎𝑗 (𝑗 = 0,1, ⋯ , 𝑚)에 대한 편미분이 0:
f
𝜕
𝑄 𝑓, 𝑝 = −2
𝜕𝑎𝑗
𝑛
f ( x1)
𝑚
𝑓𝑖 −
𝑖=1
𝑎𝑘 𝜙𝑘 𝑥𝑖
𝜙𝑗 𝑥𝑖 = 0 (𝑗
f ( x3)
5
𝑘=0
= 0,1, ⋯ , 𝑚)
4
• 이들을 풀어쓰고 𝑖와 𝑘의 합 순서를 교환:
𝑚
𝑘=0
𝑛
𝑖=1 𝜙𝑘
𝑥𝑖 𝜙𝑗 𝑥𝑖 𝑎𝑘 =
𝑛
𝑖=1 𝜙𝑗
f ( x2)
p( x)
𝑥𝑖 𝑓𝑖 (𝑗 = 0,1, ⋯ , 𝑚)
• 벡터와 행렬을 이용한 표현:
x1
𝜙0 𝑥1
𝜙 𝑥
𝐴= 0 2
⋮
𝜙0 𝑥𝑛
𝜙1 𝑥1
𝜙1 𝑥2
⋮
𝜙1 𝑥𝑛
• 해: 𝑋 = 𝐴𝑇 𝐴
−1 𝐴𝑇 𝐹
𝑎0
⋯ 𝜙𝑚 𝑥1
𝑎1
⋯ 𝜙𝑚 𝑥2
, 𝑋= ⋮ ,
⋮
⋱
𝑎𝑚
⋯ 𝜙𝑚 𝑥𝑛
• 이 관계를 멱급수형태의 선형함수에 적용
x2
𝑓1
𝑓
𝐹 = 2 ⇒ 𝐴𝑇 𝐴 𝑋 = 𝐴𝑇 𝐹
⋮
𝑓𝑛
x3
x
• 𝜙0 = 1이고 𝜙1 , ⋯ , 𝜙𝑚 = 0이라면 𝑝 𝑥 = 𝑎0 𝜙0 = 𝑎0 이 되어 𝑓𝑖 들의 평균을 구하는 것을 의미:
𝑛
𝑛
(𝑓𝑖 2 − 2𝑓𝑖 𝑎0 + 𝑎0 2 ) = 𝑛𝑎0 2 − 2𝑎0
(𝑓𝑖 − 𝑎0 )2 =
𝑄 𝑓, 𝑝 =
𝑖=1
𝑛
𝑖=1
𝑛
𝑓𝑖 2
𝑓𝑖 +
𝑖=1
𝑖=1
• 위의 식은 𝑎0 에 대해서 2차이며 𝑎0 2 의 계수가 양이므로 최소값을 갖는 곡선
• Q가 최소일 때 Q의 미분값은 0:
𝑑
𝑄 𝑓, 𝑝 = 2𝑛𝑎0 − 2
𝑑𝑎0
𝑛
𝑖=1
1
𝑓𝑖 = 0 ⟹ 𝑎0 =
𝑛
𝑛
𝑓𝑖
𝑖=1
• 또는 벡터와 행렬을 사용한 식으로부터 𝜙0 𝑥𝑖 = 1이므로
𝐴𝑇 𝐴 = 1
• 따라서 𝑋 = 𝑎0 = 𝐴𝑇 𝐴
1
1 ⋯ 1 1 = 𝑛,
⋮
1
−1 𝐴𝑇 𝐹
1
=𝑛
𝑛
𝑖=1 𝑓𝑖
𝐴𝑇 𝐹 = 1
𝑓1
𝑓
1 ⋯ 1 2 =
⋮
𝑓𝑛
𝑛
𝑓𝑖
𝑖=1
• 데이터의 수(n)가 6일 때의 𝑝 𝑥 :
f,p
f4
f5
p( x) 
f1
f3
x2
6

i 1
fi
f6
f2
x1
1
6
x3
x4
x5
x6
• 𝜙0 𝑥 = 𝑥 이 고 𝜙1 = ⋯ = 𝜙𝑚 = 0 이 라 면 𝑝 𝑥 = 𝑎0 𝜙0 (𝑥) = 𝑎0 𝑥 이 므 로 원 점 을 통 과 하 는 직 선 으 로
데이터들을 표현
• 𝜙0 𝑥𝑖 = 𝑥𝑖 이므로
𝐴𝑇 𝐴 = 𝑥1
𝑥2
⋯ 𝑥𝑛
𝑥1
𝑥2
⋮ =
𝑥𝑛
𝑛
𝑥𝑖 2 ,
𝐴𝑇 𝐹 = 𝑥1
𝑥2
𝑖=1
• 따라서
𝑋 = 𝑎0 = 𝐴𝑇 𝐴
−1 𝐴𝑇 𝐹
=
𝑛
𝑖=1 𝑥𝑖 𝑓𝑖
𝑛
2
𝑖=1 𝑥𝑖
⋯
𝑥𝑛
𝑓1
𝑓2
=
⋮
𝑓𝑛
𝑛
𝑥𝑖 𝑓𝑖
𝑖=1
보기 11-5
1차계에 단위계단 입력이 들어올 때의 해는 𝑦 𝑡 = 𝐾(1 − 𝑒 −𝑡/𝜏 ). 𝜏를 최소자승법으로 구할 수 있겠는가?
최소자승법을 적용하려면 어떤 절차를 밟아야 하는가? 다음의 데이터에 적용하여 보라.
시간 t (min)
1
2
3
4
5
응답 𝑦/𝐾
0.632
0.865
0.950
0.982
0.993
(풀이)
이 문제는 지수항 속에 미지의 매개변수 𝜏가 들어있어 비선형 형태이므로 직접 최소자승법을 적용할
수는 없다. 위 식은 다음과 같이 변형시킬 수 있다: 1 −
양변에 자연로그를 취하면 ln 1 −
𝑓 = ln 1 −
𝑦 𝑡
𝐾
𝑦 𝑡
𝐾
= 𝑒 −𝑡/𝜏
1
= −𝜏𝑡
, 𝜙0 = 𝑡로 놓으면 A와 F를 구성:
1
= 𝐴𝑇 𝐴
𝜏
에서 시간상수 𝜏를 결정. 주어진 데이터로부터
𝑋 = 𝑎0 = −
즉 𝜏 = 1.
𝑦 𝑡
𝐾
−1 𝐴𝑇 𝐹
=
𝑡𝑖 ln(1 −
𝑡𝑖 2
𝑦𝑖
)
𝐾
1 1 ln 0.368 + 2 ln 0.135 + 3 ln 0.050 + 4 ln 0.018 + 5 ln 0.007
− =
= −0.998
𝜏
12 + 22 + 32 + 42 + 52
• 𝜙0 𝑥 = 1, 𝜙1 𝑥 = 𝑥 이 고
𝜙2 𝑥 = ⋯ = 𝜙𝑚 𝑥 = 0 이 라 면
𝑝 𝑥 = 𝑎0 𝜙0 + 𝑎1 𝜙1 = 𝑎0 + 𝑎1 𝑥
이므로 데이터들을 일차함수인 직선으로 나타냈을 때 절편과 기울기를 구하는 문제:
𝑛
𝑎0 𝑛 + 𝑎1
•
𝑛
𝑥𝑖 =
𝑖=1
이들로부터 𝑎0 와 𝑎1 을 구하면
𝑛
𝑖=1 𝑓𝑖
𝑛
𝑥𝑖 𝑓𝑖
𝑎0 = 𝑖=1
𝑛
𝑛
𝑖=1 𝑥𝑖
𝑛
𝑎1 =
𝑛
𝑓𝑖 ,
𝑎0
𝑖=1
𝑛
𝑖=1 𝑥𝑖
𝑛
2
𝑖=1 𝑥𝑖
=
𝑛
𝑥
𝑖=1 𝑖
𝑛
2
𝑖=1 𝑥𝑖
𝑛
𝑖=1 𝑓𝑖
𝑛
𝑛
𝑖=1 𝑥𝑖
𝑖=1 𝑥𝑖 𝑓𝑖
𝑛
𝑛
𝑖=1 𝑥𝑖
𝑛
𝑛
2
𝑖=1 𝑥𝑖
𝑖=1 𝑥𝑖
𝑛
𝑛
𝑖=1 𝑓𝑖
𝑛
𝑛
=
𝑛
𝑥𝑖 2 =
𝑥𝑖 + 𝑎1
𝑖=1
𝑛
𝑖=1
𝑥𝑖 𝑓𝑖
𝑖=1
𝑛
𝑛
𝑛
2
𝑖=1 𝑥𝑖 − 𝑖=1 𝑥𝑖 𝑖=1 𝑥𝑖 𝑓𝑖
𝑛
𝑛
𝑛
2
𝑖=1 𝑥𝑖 − 𝑖=1 𝑥𝑖 𝑖=1 𝑥𝑖
𝑛
𝑖=1 𝑥𝑖 𝑓𝑖 −
𝑛
2
𝑖=1 𝑥𝑖 −
𝑛
𝑖=1 𝑓𝑖
𝑛
𝑖=1 𝑥𝑖
𝑛
𝑖=1 𝑥𝑖
𝑛
𝑖=1 𝑥𝑖
보기 11-6
실험데이터가 다음과 같이 주어졌을 때 이를 가장 잘 나타낼 수 있는 1차함수(𝑚 = 1)를 최소자승법에 의하여
구하여라.
𝑖
𝑥𝑖
𝑓𝑖
1
2
3
4
0
1
2
3
0
2
1
2
(풀이)
주어진 데이터로부터 𝑛 = 4,
4
𝑖=1 𝑥𝑖
= 6,
4
2
𝑖=1 𝑥𝑖
= 14,
4
𝑖=1 𝑓𝑖
= 5,
4
𝑖=1 𝑥𝑖 𝑓𝑖
= 10
5 ∙ 14 − 6 ∙ 10 10
4 ∙ 10 − 6 ∙ 5 10
4𝑎0 + 6𝑎1 = 5
⟹ 𝑎0 =
=
,𝑎 =
=
6𝑎0 + 14𝑎1 = 10
4 ∙ 14 − 6 ∙ 6
20 1 4 ∙ 14 − 6 ∙ 6 20
1
1 1 1 1 1
또는 𝐴𝑇 𝐴 =
0 1 2 3 1
1
1
(𝐴𝑇 𝐴)−1 =
det(𝐴𝑇 𝐴)
따라서 𝑝 𝑥 = 0.5 + 0.5𝑥.
0
1
4
=
2
6
3
14
−6
0
1 1 1 1 2
6
5
, 𝐴𝑇 𝐹 =
=
0 1 2 3 1
14
10
2
1 14 −6 5
𝑎0
−6
0.5
,
𝑋 = 𝑎 = (𝐴𝑇 𝐴)−1 𝐴𝑇 𝐹 =
=
4
1
0.5
20 −6 4 10
𝑝 𝑥 와 데이터:
f,p
3
( 1, 2)
2
( 3, 2)
p( x)
1
( 2, 1)
( 0, 0)
1
2
3
x
보기 11-7
실험데이터가 다음과 같이 주어졌을 때 이를 가장 잘 나타낼 수 있는 2차함수(𝑚 = 2)를 최소자승법에 의하여
구하여라.
𝑖
𝑥𝑖
𝑓𝑖
1
2
3
4
5
-2
-1
0
1
2
0
1
2
1
0
(풀이)
이차함수는 𝑝 𝑥 = 𝑎0 + 𝑎1 𝑥 + 𝑎2 𝑥 2 이므로 𝜙0 𝑥 = 1, 𝜙1 𝑥 = 𝑥, 𝜙2 𝑥 = 𝑥 2 :
5
5
5
𝐴𝑇 𝐴
1
1 1 1
= −2 −1 0 1
4
1 0 1
1
1 1
2 1
4 1
1
−2
−1
0
1
2
4
5
1
0 = 0
1
10
4
0 10
10 0 =
0 34
𝑖=1
5
5
𝑖=1
5
𝑖=1
5
𝑥𝑖 2
𝑥𝑖
𝑖=1
5
𝑥𝑖 2
𝑖=1
𝑥𝑖 2
𝑥𝑖
𝑥𝑖 3
𝑖=1
5
𝑥𝑖 3
𝑖=1
𝑥𝑖 4
𝑖=1
5
𝑓𝑖
1
𝐴 𝐹 = −2
4
𝑇
1 1
−1 0
1 0
0
4
1 1 1
1 2 2 = 0 =
2
1 4 1
0
𝑖=1
5
𝑥𝑖 𝑓𝑖
𝑖=1
5
𝑥𝑖 2 𝑓𝑖
𝑖=1
𝑎0
10 ∙ 34 − 0 ∙ 0 −(0 ∙ 34 − 0 ∙ 10) 10 ∙ −10 − 0 ∙ 0 4
1
0 ∙ 34 − 0 ∙ 10
5 ∙ 34 − 10 ∙ 10
−(5 ∙ 0 − 0 ∙ 10) 0
𝑋 = 𝑎1 = (𝐴𝑇 𝐴)−1 𝐴𝑇 𝐹 =
𝑇 𝐴)
det(𝐴
𝑎2
2
0 ∙ 0 − 10 ∙ 10 −(5 ∙ 0 − 0 ∙ 10)
5 ∙ 10 − 0 ∙ 0
58/35
340
0 −100 4
1
0
=
0
70
0
0 =
10(5 ∙ 34 − 10 ∙ 10)
−3/7
−100 0
50
2
따라서 𝑝 𝑥 는
3
58
𝑝 𝑥 = − 𝑥2 +
7
35
𝑝 𝑥 와 데이터:
f
2
f3
p( x)
f2
1
f4
f5
f1
-2
-1
0
1
2
x
11.3 재귀 최소자승(Recursive Least-Squares, RLS) 방법
• 온도 𝑡(℃) 와 저항 𝑅(𝛺) 사이의 관계가 𝑐1 𝑡 + 𝑐2 = 𝑅과 같이 주어진다고 가정
• 시점 𝑖 = 1, ⋯ , 𝑘에서 확보한 측정 데이터 𝑡1 , 𝑅1 , 𝑡2 , 𝑅2 , ⋯ , 𝑡𝑘 , 𝑅𝑘 로부터 계수 𝑐1 , 𝑐2 를 추정:
overdetermined 문제
𝑅1
𝑡1 1
𝑐1,𝑘
𝑡 1
𝑅
• 𝐴𝑘 = ⋮2
, 𝑥𝑘 = 𝑐
, 𝑏𝑘 = 2 로 두면 식 𝐴𝑘 𝑥𝑘 ≈ 𝑏𝑘 를 푸는 문제 ⇒ 𝑥𝑘 = [𝐴𝑘 𝑇 𝐴𝑘 ]−1 𝐴𝑘 𝑇 𝑏𝑘
⋮
2,𝑘
⋮
𝑡𝑘 1
𝑅𝑘
• 새로운 실험 데이터 𝑡𝑘+1 , 𝑅𝑘+1 이 주어졌다고 가정
• 최소자승 방법에 의해 이전의 𝑥𝑘 를 버리고 새로운 𝑥𝑘+1 을 계산:
𝑥𝑘+1 = [𝐴𝑘+1 𝑇 𝐴𝑘+1 ]−1 𝐴𝑘+1 𝑇 𝑏𝑘+1
𝑅1
1
𝑅2
1
𝑐1,𝑘+1
• 위에서 𝐴𝑘+1 =
⋮
⋮ , 𝑥𝑘+1 = 𝑐2,𝑘+1 , 𝑏𝑘+1 =
𝑅𝑘
1
𝑡𝑘+1 1
𝑅𝑘+1
• 그러나 매번 새로운 실험데이터가 확보될 때마다 위와 같은 계산을 수행한다면 행렬 A의 크기가 점점
커지게 되어 궁극적으로는 계산불능을 초래
𝑡1
𝑡2
⋮
𝑡𝑘
• 재귀 최소자승(Recursive least-squares): 새로운 데이터가 추가될 때마다 이전의 추정치에 단순히
보정항만을 더해 줌으로써 새로운 추정치를 계산하는 방법
• 새로운 실험 데이터 𝑡𝑘+1 , 𝑅𝑘+1 이 주어졌다고 가정하고
𝑅1
𝑡1 1
𝐴𝑘
𝑡 1
𝑏𝑘
𝑅2
𝑡
𝐴𝑘 = ⋮2
, 𝑎𝑘+1 = 𝑘+1 , 𝐴𝑘+1 =
,
𝑏
=
,
𝑏
=
, 𝑃𝑘 = [𝐴𝑘 𝑇 𝐴𝑘 ]−1
𝑘
𝑘+1
𝑇
⋮
𝑅𝑘+1
1
𝑎𝑘+1
⋮
𝑡𝑘 1
𝑅𝑘
로 두면 새로운 측정 데이터 𝑡𝑘+1 , 𝑅𝑘+1 를 이용하여 다음과 같이 행렬 𝑃𝑘+1 을 update:
𝑃𝑘+1 = [𝐴𝑘+1 𝑇 𝐴𝑘+1 ]−1 = [𝐴𝑘 𝑇 𝑎𝑘+1 ]
•
•
•
•
𝐴𝑘
−1
= 𝐴𝑘 𝑇 𝐴𝑘 + 𝑎𝑘+1 𝑎𝑘+1 𝑇
−1
= 𝑃𝑘 −1 + 𝑎𝑘+1 𝑎𝑘+1 𝑇
𝑎𝑘+1 𝑇
행렬 전위 명제(matrix inversion lemma): 𝐴 + 𝐵𝐶𝐷 −1 = 𝐴−1 − 𝐴−1 𝐵 𝐶 −1 + 𝐷𝐴−1 𝐵 −1 𝐷𝐴−1
𝐴 = 𝑃𝑘 −1 , 𝐵 = 𝑎𝑘+1 , 𝐶 = 1, 𝐷 = 𝑎𝑘+1 𝑇 로 두면 𝑃𝑘+1 = 𝑃𝑘 − 𝑃𝑘 𝑎𝑘+1 1 + 𝑎𝑘+1 𝑇 𝑃𝑘 𝑎𝑘+1 −1 𝑎𝑘+1 𝑇 𝑃𝑘
위에서 1 + 𝑎𝑘+1 𝑇 𝑃𝑘 𝑎𝑘+1 −1 은 스칼라이므로 역행렬 계산이 불필요
계수벡터의 새로운 추정치:
𝑥𝑘+1 = [𝐴𝑘+1 𝑇 𝐴𝑘+1 ]−1 𝐴𝑘+1 𝑇 𝑏𝑘+1 = 𝑃𝑘+1 𝐴𝑘+1 𝑇 𝑏𝑘+1 = 𝑃𝑘+1 [𝐴𝑘 𝑇 𝑎𝑘+1 ]
= 𝑃𝑘+1 𝐴𝑘 𝑇 𝑏𝑘 + 𝑎𝑘+1 𝑅𝑘+1 = 𝑃𝑘+1 𝐴𝑘 𝑇 𝐴𝑘 𝑥𝑘 + 𝑎𝑘+1 𝑅𝑘+1
𝑏𝑘
𝑅𝑘+1
−1
• 그런데 𝐴𝑘+1 𝑇 𝐴𝑘+1 = 𝐴𝑘 𝑇 𝑎𝑘+1
• 아울러 𝑃𝑘+1
• 따라서
𝐴𝑘
= 𝐴𝑘 𝑇 𝐴𝑘 + 𝑎𝑘+1 𝑎𝑘+1 𝑇 인 관계로부터
𝑎𝑘+1 𝑇
𝐴𝑘 𝑇 𝐴𝑘 = 𝐴𝑘+1 𝑇 𝐴𝑘+1 − 𝑎𝑘+1 𝑎𝑘+1 𝑇
= [𝐴𝑘+1 𝑇 𝐴𝑘+1 ]−1 로부터 𝐴𝑘+1 𝑇 𝐴𝑘+1 = 𝑃𝑘+1 −1
𝑥𝑘+1 = 𝑃𝑘+1 [ 𝐴𝑘+1 𝑇 𝐴𝑘+1 − 𝑎𝑘+1 𝑎𝑘+1 𝑇 𝑥𝑘 + 𝑎𝑘+1 𝑅𝑘+1 ]
= 𝑃𝑘+1 𝑃𝑘+1 −1 𝑥𝑘 − 𝑎𝑘+1 𝑎𝑘+1 𝑇 𝑥𝑘 + 𝑎𝑘+1 𝑅𝑘+1 = 𝑥𝑘 + 𝑃𝑘+1 𝑎𝑘+1 (𝑅𝑘+1 − 𝑎𝑘+1 𝑇 𝑥𝑘 )
• 위에서 𝑃𝑘+1 𝑎𝑘+1 (𝑅𝑘+1 − 𝑎𝑘+1 𝑇 𝑥𝑘 ) 항은 현 추정치 벡터 𝑥𝑘 에 대한 보정항.
• 𝐾𝑘+1 = 𝑃𝑘+1 𝑎𝑘+1 (gain 행렬)로 두면
𝑥𝑘+1 = 𝑥𝑘 + 𝐾𝑘+1 (𝑅𝑘+1 − 𝑎𝑘+1 𝑇 𝑥𝑘 )
• 보정 관계식 𝑃𝑘+1 = 𝑃𝑘 − 𝑃𝑘 𝑎𝑘+1 1 + 𝑎𝑘+1 𝑇 𝑃𝑘 𝑎𝑘+1 −1 𝑎𝑘+1 𝑇 𝑃𝑘 를 이용:
𝐾𝑘+1 = 𝑃𝑘+1 𝑎𝑘+1 = 𝑃𝑘 − 𝑃𝑘 𝑎𝑘+1 1 + 𝑎𝑘+1 𝑇 𝑃𝑘 𝑎𝑘+1 −1 𝑎𝑘+1 𝑇 𝑃𝑘 𝑎𝑘+1
= 𝑃𝑘 𝑎𝑘+1 − 𝑃𝑘 𝑎𝑘+1 1 + 𝑎𝑘+1 𝑇 𝑃𝑘 𝑎𝑘+1 −1 𝑎𝑘+1 𝑇 𝑃𝑘 𝑎𝑘+1
= 𝑃𝑘 𝑎𝑘+1 𝐼 − 1 + 𝑎𝑘+1 𝑇 𝑃𝑘 𝑎𝑘+1 −1 𝑎𝑘+1 𝑇 𝑃𝑘 𝑎𝑘+1
= 𝑃𝑘 𝑎𝑘+1 𝑎𝑘+1 𝑇 𝑃𝑘 𝑎𝑘+1 + 1 −1 𝑎𝑘+1 𝑇 𝑃𝑘 𝑎𝑘+1 + 1 − 𝑎𝑘+1 𝑇 𝑃𝑘 𝑎𝑘+1
= 𝑃𝑘 𝑎𝑘+1 𝑎𝑘+1 𝑇 𝑃𝑘 𝑎𝑘+1 + 1 −1
• 이로부터
𝑃𝑘+1 = 𝑃𝑘 − 𝑃𝑘 𝑎𝑘+1 1 + 𝑎𝑘+1 𝑇 𝑃𝑘 𝑎𝑘+1
−1 𝑎
𝑘+1
𝑇𝑃
𝑘
= 𝑃𝑘 − 𝐾𝑘+1 𝑎𝑘+1 𝑇 𝑃𝑘
• 재귀 최소자승 방법의 요약:
𝐾𝑘+1 = 𝑃𝑘 𝑎𝑘+1 𝑎𝑘+1 𝑇 𝑃𝑘 𝑎𝑘+1 + 1 −1
𝑥𝑘+1 = 𝑥𝑘 + 𝐾𝑘+1 (𝑅𝑘+1 − 𝑎𝑘+1 𝑇 𝑥𝑘 )
𝑃𝑘+1 = 𝑃𝑘 − 𝐾𝑘+1 𝑎𝑘+1 𝑇 𝑃𝑘
• P의 초기값: 대개 대각행렬(보통 항등행렬(identity matrix)에 10, 100 등과 같은 적절한 스칼라를 곱한
형태)의 형태
• x의 초기값: zero 벡터나 임의의 상수벡터
멱급수 함수의 표현
멱급수 함수는 MATLAB의 polyval 함수를 이용하여 쉽게 나타낼 수 있다.
−2 ≤ x ≤ 4의 범위에서 멱급수 𝑝 𝑥 = 𝑥 3 − 3.6𝑥 2 + 6𝑥 − 9를 그래프로 작성.
x의 범위는 MATLAB 명령어 linspace를 이용하여 설정.
>> p = [1 -3.6 6 -9]; x = linspace(-2, 4); v = polyval(p, x);
>> plot(x, v), title(' 3차 함수의 그래프'), xlabel('x'), ylabel('p(x)'), grid
최소자승법을 이용한 데이터의 표현
최소자승법을 이용한 데이터의 표현: MATLAB 함수 polyfit을 이용
최소자승법으로부터 얻어지는 멱습수의 차수를 미리 정하여 polyfit의 입력변수로 입력
주어진 데이터를 가장 잘 나타내는 4차의 멱급수를 규명.
x
y
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
-0.447 1.978 3.28
6.16
7.08
7.34
7.66
9.56
9.48
9.30
11.2
원하는 차수 n은 polyfit의 입력변수로서 입력.
polyfit의 실행결과 p는 구한 멱급수의 계수벡터.
>> x = [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0];
>> y = [-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];
>> n = 4; xi = linspace(0, 1, 100); p = polyfit(x, y, n); yi = polyval(p, xi);
>> plot(x,y,'o', xi,yi,':'), xlabel('x'), ylabel('y = f(x)')
>> legend('데이터','4차 멱급수 표현','location','best'), title('최소자승법에 의한 데이터의 표현')
>> p
p=
22.0571 -28.0385 -6.3531 23.8103 -0.4516
얻어진 4차의 멱급수 함수는 앞의 polyval 함수를 이용하여
나타낼 수 있다.
얻은 결과로부터 데이터를 나타내는 4차 멱급수 함수:
𝑝 𝑥 = 22.0571𝑥 4 − 28.0385𝑥 3 − 6.3531𝑥 2 + 23.8103𝑥 − 0.4516
데이터의 다항식 표현
토지의 면적에 따른 가격이 다음과 같이 주어졌을 때 이를 적절한 다항식(4차의 다항식) 곡선으로 나타내어 보
자.
2
면적(100 𝑚 )
12
15
17.5
20
22.5
25
27.5
30
35
40
가격(백만원)
135
142
156
165
170
220
225
275
300
450
% polynom.m
>> A = [12 15 17.5 20 22.5 25 27.5 30 35 40]*100; % 면적
>> val = [135 142 156 165 170 220 225 275 300 450]; % 가격(백만원)
>> p = polyfit(A, val, 4); x = [1200:10:4000];
>> y = p(1)*x.^4 + p(2)*x.^3 + p(3)*x.^2 + p(4)*x + p(5);
>> plot(x,y, area,price,'o'), xlabel('면적'), ylabel('가격(백만원)')
>> title('토지면적에 따른 가격'), axis([1200 4000 135 450])
최소자승 풀이
MATLAB의 백슬래쉬 연산자(\)는 일반적인 최소자승 풀이를 수행.
MATLAB의 lscov 함수는 백슬래쉬와 같은 최소자승 풀이를 수행함은 물론 얻어진 해의 오차 와
표준편차까지도 계산.
어떤 실험결과로부터 두 입력변수 𝑥1 과 𝑥2 의 변화에 따른 출력변수 𝑦를 얻었다고 하자.
𝑥1
0.18
0.51
0.59
0.83
1.02
1.14
𝑥2
0.09
0.28
0.41
1.01
1.09
1.42
𝑦
0.16
0.27
0.28
0.22
0.26
0.35
lscov 함수를 이용하여 위의 데이터에 대한 입력변수와 출력변수 사이의 관계 𝑦 = 𝑎0 + 𝑎1 𝑥1 + 𝑎2 𝑥2를 구하여
𝑎0
보자. 이는 𝐶𝐴 = 𝑦의 해 A를 구하는 문제가 되며 𝐴 = 𝑎1 .
𝑎1
>> x1 = [0.18 0.51 0.59 0.83 1.02 1.14]';
>> x2 = [0.09 0.28 0.41 1.01 1.09 1.42]';
>> y = [0.16 0.27 0.28 0.22 0.26 0.35]';
>> C = [ones(size(x1)) x1 x2]; [A, seA, mse] = lscov(C,y)
A=
0.1081
0.3888
-0.1788
seA =
0.0678
0.2386
0.1603
mse =
0.0022
재귀 최소자승 방법
실제 시스템은 𝑦 = 2𝑥 + 1 = [𝑥 1]
2
2
이며 측정치는 𝑦 = 2𝑥 + 1 + 𝜖𝑘 = [𝑥 1]
+ 𝜖𝑘 로 주어진다고 가정(𝜖𝑘 :
1
1
시간 k에서의 측정잡음). 재귀 최소자승 방법을 이용하여 측정치를 나타내어 주는 계수벡터를 규명
𝑐1
𝑦 = 𝑐1 𝑥 + 𝑐2 = [𝑥 1] 𝑐 . 계수벡터의 초기값은
2
0
, P 행렬의 초기값은 대각원소가 모두 100인
0
대각행렬로 설정.
재귀 최소자승의 수행은 함수 rlsup를 이용: 스크립트 useRLS.m은 함수 rlsup를 이용하여 재귀 최소자승
방법을 수행.
function [x,K,P] = rlsup(ak1, bk1, x, P)
K = P*ak1'/(ak1*P*ak1' + 1);
x = x + K*(bk1 - ak1*x);
P = P - K*ak1*P;
end
function [x,K,P] = rlsup(ak1, bk1, x, P)
K = P*ak1'/(ak1*P*ak1' + 1);
x = x + K*(bk1 - ak1*x);
P = P - K*ak1*P;
end
% useRLS.m
x0 = [2 1]';
% 미지 계수벡터의 실제값
nx = length(x0);
x = zeros(nx,1);
% 계수벡터의 초기값
P = 100*eye(nx,nx); % P 행렬의 초기값
for k = 1:100
Ak = [k*0.01 1]; % A_k
bk = Ak*x0 + 0.3*rand; % 종속변수 측정값
[x,K,P] = rlsup(Ak,bk,x,P);
end
display('최종 파라미터 추정치: '), x % 최종 파라미터 추정치
display('실제 파라미터값: '), x0
스크립트 useRLS.m의 실행 결과:
>> useRLS
최종 파라미터 추정치:
x=
1.9653
1.1612
실제 파라미터값:
x0 =
2
1
Download