제 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