8 장스플라인과소구간별 보간법 8. 스플라인보간법의소개 8. 선형스플라인 8. 차스플라인 8.4 차스플라인 8.5 MATLAB 에서의소구간별보간법 8.6 다차원보간법
8. 스플라인보간법의소개 (/ 고차다항식보간법 반올림오차와진동현상으로인해틀린결과를초래한다. 해결하기위한방법 : 데이터점들의부분집합에서저차의다항식을소구간별로적용하는것 이런방법으로연결되는다항식을 " 스플라인함수 " 라고부른다. - 차스플라인 : 두개의데이터점을연결하는곡선이 차인경우 - 시각적으로매끄럽게처리 - 부분적으로급격한변화가있는구간에서우수한근사를제공
8. 스플라인보간법의소개 (/ 스플라인보간법이고차보간다항식보다우수한경우를나타내는시각적비교 : 그림 (a~ ( 의보간다항식에서는 =0 에서급격한변화가진동을발생하나, 그림 (d 의선형스플라인에서는직선으로연결되는우수성을보임
8. 스플라인보간법의소개 (/ 제도에서일련의점들을통과하는완만한곡선을그리기위해스플라인을사용
8. 선형스플라인 (/6 각구간 는고유한스플라인함수 s ( 를가진다. 선형스플라인에서의각함수는구간의양끝점인두점을연결하는직선으로다음과같다. 여기서는절편이고, 는기울기이다. Newto 의 차다항식과동일한결과를얻음 ( ( b a s a b ( ( s
8. 선형스플라인 (/6 스플라인을유도하는데 개의구간에서 개의데이터점들이사용됨
예제 8. ( 차스플라인 Q. 차스플라인으로주어진자료를접합하고, = 5 에서의함수값을추정하라. 4.0 4.5 7.0 9.0.5.0.5 0.5 풀이.5.0 s (.0 ( 4.5. 7.0 4.5 5
8. 선형스플라인 (/6 네점에대한스플라인접합 : (a 선형스플라인, (b 차스플라인 ( 차스플라인 + 차보간다항식
8. 선형스플라인 (4/6 차스플라인의단점은완만한곡선이아니며, 절점에서기울기가급격히변한다. 차도함수가불연속절점에서매끄럽게하기위해고차스플라인이요구된다.
8. 선형스플라인 (5/6 표보기 순차적탐색 uto y = TableLook(, y, = legt(; < ( > ( error('iterpolato outsde rage' ed % sequetal sear = ; wle( <= ( +, break, ed = + ; ed % lear terpolato y = y( + (y(+ y(/((+ (*( (;
8. 선형스플라인 (5/6 표보기 순차적탐색 uto y = TableLook(, y, = legt(; < ( > ( error('iterpolato outsde rage' ed % sequetal sear = ; wle( <= ( +, break, ed = + ; ed % lear terpolato 데이터가많이있는경우에순차적탐색은값을찾기위해 y = y( + (y(+ y(/((+ (*( (; 앞에있는모든점을탐색해야하므로비효율적이다.
8. 선형스플라인 (6/6 이진탐색 uto y = TableLookB(, y, = legt(; < ( > ( error('iterpolato outsde rage' ed % bary sear L = ; U = ; wle( U L <=, break, ed M = ((L + U / ;
8. 선형스플라인 (6/6 이진탐색 (L; (M < L = M; else U = M; ed ed % lear terpolato y = y(l + (y(l+ y(l/((l+ (L*( 이방법은방정식의근을구하는이분법과유사하다.
보충학습 ( 유리함수보간 (/ uto yy = rat_t(,y, % Gve k data row vetors ad y % Fd terpolated values yy at pots % Usg Bulrs-Stoer ratoal uto terpolato [k, k] = sze(; [kk, kk] = sze(; test = 0; or = :kk or = :k dd = (( - (; dd == 0 %( s data pot yy( = y(; test = ;
보충학습 ( 유리함수보간 (/ ed ed test == 0 %( s ot data pot R = zeros(k; R(:, = y(:; or = :k- D = R(+, - R(,; rr = (( - (/(( - (+; deom = rr*(-d/r(+, - ; R(, = R(+, + D/deom; ed
보충학습 ( 유리함수보간 (/ or j = :k or =:k-j+ D = R(+,j- - R(,j-; rr = (( - (/(( - (+j-; D == 0 R(,j = R(+,j-; else DD = R(+,j- - R(+,j-; deom = rr*(-d/dd-; R(,j = R(+,j- + D/deom; ed ed
보충학습 ( 유리함수보간 (/ ed yy( = R(,k; ed test = 0; ed
보충학습 ( 유리함수보간 (/ >> =:0; >> y=./(+ y = Colums troug 4 0.5000 0.6667 0.7500 0.8000 Colums 5 troug 8 0.8 0.857 0.8750 0.8889 Colums 9 troug 0 0.9000 0.909
보충학습 ( 유리함수보간 (/ >> =[0 4 6 8 0]; >> yy=[0 0.6667 0.8 0.857 0.8889 0.909]; >> =[ 5 7 9]; >> yt = rat_t(,yy, >> = lspae(-,,5; y =./(+5*.^; >> = lspae(-,; >> yy = rat_t(,y,; >> yr =./(+5*.^; >> plot(,y,'o',,yy,,yr,'--'
보충학습 ( 유리함수보간 (/ >> =[0 4 6 8 0]; >> yy=[0 0.6667 0.8 0.857 0.8889 0.909]; >> =[ 5 7 9]; >> yt = rat_t(,yy, yt = Colums troug 5 0.500 0.7500 0.8 0.8750 0.9000 >> ylag = Lagrage(,yy, ylag = Colums troug 5 0.4546 0.7576 0.897 0.8788 0.890
8. 차스플라인 (/4 차도함수가절점에서연속이되기위해서적어도 + 차스플라인이사용되어야한다. 차다항식 ( 또는 차스플라인 : 실제로가장보편적으로사용됨 - 차와 차도함수가연속 - 차이상의고차도함수는불연속 : 식별이거의불가능
8. 차스플라인 (/4 차다항식의유도 ( 또는 차스플라인 차다항식 - 실제적으로크게중요하지않음 - 고차스플라인을전개하는일반적인방법을제시하는데적합 s ( a b ( ( 개의데이터점에대한 개의구간 ( 개의미지상수
8. 차스플라인 (/4 연속조건 : 함수는모든점을지나야한다. ( 구간의시작점 ( 개의조건미지수의개수가 ( 로줄었음 인접하는다항식의함수값은절점에서같아야한다. 절점 ( + 에서라고정의하면 ( 개의조건더필요한조건의수는 ( ( = ( ( ( b a a ( ( ( b s ( ( ( ( b b b
8. 차스플라인 (4/4 내부절점에서 차도함수는같아야한다. s b ( ( 내부절점 ( + 에서 b b ( 개의조건 나머지필요한조건은 ( ( = 개. 첫번째점에서 차도함수를 0이라고가정한다. 0 이조건은최초의두점을직선으로연결한다는것을의미한다.
예제 8. ( 차스플라인 (/4 Q. 주어진자료를 차스플라인으로접합하고, = 5 에서의함수값을추정하라. 4.0 4.5 7.0 9.0.5.0.5 0.5
예제 8. ( 차스플라인 (/4 풀이 4 개의데이터점과 개의구간을갖는다. (4 = 9 조건이있어야함. 조건 ( 연속방정식 과 ( = 0 를적용하면 (4 + = 4 개의조건이만족함. = 에서 에대해조건 ( 절점에서의함수값 를적용하면 4 = 개의조건이만족함. b b b 4
예제 8. ( 차스플라인 (/4 조건 ( 내부절점에서의도함수값 = 개의조건이만족함. b b b b 필요한함수와구간폭의값은다음과같다. 4.5.0.5 0.5 4.5.0.5 7.0 4.5 9.0 7.0.5.0
예제 8. ( 차스플라인 (4/4 행렬로표시하면 그러므로 그림 8.4 (b 참조 0 0.5.5 0 5 0 0 0 0 4 0 0 0 0 0 6.5.5 0 0 0 0 0.5 b b b.6. 0.64 b b b 7.0.6( 7.0.(.5 ( 4.5 0.64( 4.5 (.0 ( (.5 ( s s s 0.66 4.5 0.64(5 4.5 (5.0 ( s
8.4 차스플라인 (/9 가장많이사용되는방법이다. 4차이상의고차스플라인은내재된불안정성으로사용되지않는다. 차다항식의유도 ( 또는 차스플라인 s ( a b ( ( d ( (* 개의데이터점에대한 개의구간 4( 개의미지계수
8.4 차스플라인 (/9 연속조건 : 함수는모든점을지나야한다. (8. 인접하는다항식의함수값은절점에서같아야한다. 절점 ( + 에대해 (8. 여기서 ( ( ( ( d b a a ( ( ( ( d b s d b
8.4 차스플라인 (/9 내부절점에서 차도함수는같아야한다. (8.4 내부절점 ( + 에대해 (8.5 내부절점에서 차도함수도같아야한다. (8.6 내부절점 ( + 에대해 (8.8 ( ( ( d b s b d b ( 6 ( d s d d
8.4 차스플라인 (4/9 식 (8.8 을식 (8. 에대입하면 (8.9 (8. 식 (8. 의지수에서 을빼면 (8. 식 (8.8 을식 (8.5 에대입하면이식의지수에서 을빼면 (8. 식 (8. 과 (8. 를식 (8. 에대입하면 (8.4 ( b ( b ( b ( b b ( b b (
8.4 차스플라인 (5/9 유한제차분을정의하면, 식 (8.4 은 (8.5 내부절점 =,,..., 에대하여사용한다. 개의미지계수 (,,..., - 를갖는 개의삼중대각방정식을구성한다. 추가의조건이필요하다. a 자연스플라인은두끝단에서 차도함수값을 0 으로놓는다. 첫번째절점 : = 0 마지막절점 : = 0( 관계없는변수 j j j ], [ ], [ ], [ ( ( ( 6 0 ( d s 6 0 ( d s 0 d
8.4 차스플라인 (6/9 최종적으로얻는식은다음과같다. 0 ], [ ], [ ( ], [ ], [ ( 0 ( (
보충학습 ( 차스플라인보간 (/ uto y = Sple(, yy, % Evaluate ub sple terpolato polyomal at = legt(; %ts uto requres >= 4 (:- = (: - (:-; T(:- = (yy(: - yy(:-./(:-; R(:- = *(T(:- - T(:-; R(=0; R(=0; % added (Natural U(:- = (:-; U(=0; U(=0; % added (Natural D(:- = *((:- + (:-; D( =; D(=; L(:- = (:-; L(=0; L(=0; % added (Natural
보충학습 ( 차스플라인보간 (/ = trdag(l, D, U, R; a(:- = yy(:-; b(:- = T(:- - (:-.*(*(:- + (:/; d(:- = ((:-(:-./(*(:-; %prt peewse uto ad plot t < ( > ( error('iterpolato outsde rage' ed % bary sear L = ; U = ;
보충학습 ( 차스플라인보간 (/ wle( U - L <=, break, ed M = ((L + U / ; (M < L = M; else U = M; ed ed prt('\resultg peewse uto:\\'; s = [sprt('(%+(%*(-(%+(%*(-(%^+(%*(- (%^', a(l, b(l, (L, (L,(L, d(l,(l] =; y = eval(s;
보충학습 ( 차스플라인보간 (/ uto [, yyy] = BSple(, yy % Evaluate ub sple terpolato polyomal at? = legt(; %ts uto requres >= 4 (:- = (: - (:-; T(:- = (yy(: - yy(:-./(:-; R(:- = *(T(:- - T(:-; R(=0; R(=0; U(:- = (:-; U(=0; U(=0; % added (Natural D(:- = *((:- + (:-; D( =; D(=; L(:- = (:-; L(=0; L(=0; % added (Natural
보충학습 ( 차스플라인보간 (/,T, R, U, D, L = trdag(l,d,u,r; a(:- = yy(:-; b(:- = T(:- - (:-.*(*(:- + (:/; d(:- = ((:-(:-./(*(:-; %prt peewse uto ad plot t prt('\resultg peewse uto:\\'; s = [sprt('(%+(%*(-(%+(%*(-(%.^', a(, b(, (, d(,(] = ( : ((-(/0 : (; y = eval(s; =; yyy=y;
보충학습 ( 차스플라인보간 (/ or = :- s = []; prt('\resultg peewse uto:\\'; s = [sprt('(%+(%*(-(%+(%*(-(%.^+(%*(- (%.^', a(, b(, (, (,(, d(,(] = ( : ((+-(/0 : (+; y = eval(s; = [ ]; yyy = [yyy y]; ed plot(, yyy; old o; plot(, yy, 'r*'; old o
보충학습 ( 차스플라인보간 (/ >> =[- - 0 ]; >> yy=[4-8]; >> BSple(,yy;
보충학습 ( 차스플라인보간 (/ >> =[- - 0 ]; >> y=[4-8]; >> BSple(,yy; = T = -5-7 R = 8-4 8...
예제 8. ( 자연 차스플라인 (/ Q. 예제 8. 에서다룬자료를 차스플라인으로접합하고, = 5 에서의함수값을추정하라. 풀이 0 ], [ ], [ ( ], [ ], [ ( 0 ( ( 4 4 0.5.0 7.0 9.0.5.5 4.5 7.0.0.5.0 4.5.5 4 0 4.8 4.8 0 9.5.5 8.5 4 0 0.7665994 0.895476 0 4
예제 8. ( 자연 차스플라인 (/ 식 (8. 과 (8.8 에의해, s ( s s ( b b b.497786 0.6045674 0.005 0.444487( 4.5 0.7756654( 7.0 d d d 0.895476 0.444487 0.7756654.5.497786( 0.895476( (.0 0.6045674( 4.5 0.895476( 4.5.5 0.005( 7.0 0.7665994( 7.0 s (.0 0.6045674(5 4.5 0.895476(5 4.5.088974 0.444487(5 4.5 그림 8.4 ( 참조
8.4 차스플라인 (7/9 끝단조건 고정끝단조건 첫번째와마지막절점에서의 차도함수값을지정하는경우 차도함수를 0으로지정하면스플라인의끝점에서거의수평을이룸 " 비절점 " 끝단조건 두번째와끝에서두번째절점에서 차도함수가연속되도록지정하는경우처음과마지막구간에서같은 차함수를적용하는것을의미
8.4 차스플라인 (8/9 < 차스플라인에일반적으로사용되는끝단조건을지정하는방정식 > 0 0 ], [ ], [ 0 ( 0 (, 조건첫번째와마지막방정식자연고정 ( 첫번째와마지막절점에서의 차도함수값이 ' 와 ' 로지정됨 비절점
8.4 차스플라인 (9/9 끝단조건에따른스플라인접합의비교 : 고정 ( 차도함수가 0, 비절점그리고자연스플라인
8.5 MATLAB 에서의소구간별보간법 (/ sple: 차스플라인보간을수행 pp: 소구간별 차 Hermte 보간을수행 terp: 스플라인, Hermte, 여러가지소구간별보간을수행 MATLAB 함수 : sple yy = sple(, y, 와 y = 보간하고자하는값을포함하는벡터 yy = 벡터로주어지는점에서계산되는스플라인결과를포함하는벡터
예제 8.4 (MATLAB 에서의스플라인 (/ Q. Ruge 함수는다항식으로잘접합이안되는 함수로알려져있다. ( 5 MATLAB을사용하여구간 [-, ] 에서이함수로부터구한 9개의등간격데이터점을접합시켜라. (a 비절점스플라인과 (b 끝점의기울기가 과 -4인고정스플라인을사용하라.
예제 8.4 (MATLAB 에서의스플라인 (/ (a >> = lspae(-,,9; >> y =./(+5*.^; >> = lspae(-,; >> yy = sple(,y,; >> yr =./(+5*.^; >> plot(,y,'o',,yy,,yr,'--' Ruge 함수 ( 점선 와 MATLAB 으로생성한비절점스플라인접합 ( 실선 의비교
예제 8.4 (MATLAB 에서의스플라인 (/ (b >> y = [ y -4]; >> yy = sple(,y,; >> plot(,y,'o',,yy,,yr,'--' Ruge 함수 ( 점선 과 MATLAB 으로생성된고정끝단스플라인접합 ( 실선 의비교
8.5 MATLAB 에서의소구간별보간법 (/ MATLAB 함수 : terp y = terp(, y,, 'metod' 와 y = 보간하고자하는값을포함하는벡터 y = 벡터로주어지는점에서계산되는보간결과를포함하는벡터 metod = 원하는방법 sple: 육안으로 차도함수의불연속성을구분할수있으므로더부드럽게보인다. 데이터가완만한함수의값이라면더정확하게보간할수있다. pp: 데이터가완만하지않더라도초과현상이없고진동이더작다.
예제 8.5 (terpl 을사용한득실 (/5 Q. 자동차를가속과정속을번갈아가며유지하는시험주행에서실험도중에는절대로감속하지않는다. 시간에따른속도의현장측정값이표와같이주어진다. t 0 0 40 56 68 80 84 96 04 0 v 0 0 0 8 80 80 00 00 5 5 MATLAB에서 terp 함수를사용하여다음방법으로접합하라. (a 선형보간법, (b 최근접보간법, ( 비절점끝단조건을이용한 차스플라인, (d 소구간별 차 Hermte 보간법.
예제 8.5 (terpl 을사용한득실 (/5 (a >> t = [0 0 40 56 68 80 84 96 04 0]; >> v = [0 0 0 8 80 80 00 00 5 5]; >> tt = lspae(0,0; >> vl = terp(t,v,tt; >> plot(t,v,'o',tt,vl 그림 8.8 a 에서와같이부드럽지는못하지만초과현상이보이지않는다.
예제 8.5 (terpl 을사용한득실 (/5 (b >> v = terp(t,v,tt,'earest'; >> plot(t,v,'o',tt,v 그림 8.8b 에서와같이고원모양이연속된것처럼보인다.
예제 8.5 (terpl 을사용한득실 (4/5 ( >> vs = terp(t,v,tt,'sple'; >> plot(t,v,'o',tt,vs 그림 8.8 에서와같이상당히부드럽지만곳곳에서심한초과현상이보인다.
예제 8.5 (terpl 을사용한득실 (5/5 (d >> v = terp(t,v,tt,'pp'; >> plot(t,v,'o',tt,v 그림 8.8 d 에서와같이물리적으로현실성이있다. 속도는단순하게증가되며감속은보이지않는다.
8.6 다차원보간 (/ 차원문제에대한보간법은다차원으로확장할수있다. 이중선형보간법 차원보간법은두변수의함수인 z=(,y 의중간값을결정하는방법을다룬다.
8.6 다차원보간 (/ 먼저 y 값을고정시키고 차원선형보간을 방향으로적용한다. (, y 에서의결과는 Lagrage 형태를사용하면다음과같다. (, y (, y (, y 식 8.9 (, y 에서, (, y (, y (, y 식 8.0 이들점을 y 방향으로선형보간하면, 식 (8.9 와 (8.0 을식 (8. 에대입하면다음과같은단일방정식을구할수있다 y y y y (, y (, y (, y y y y y 식 8. y y y y (, y (, y y y y y y y y y (, y (, y (, y y y y y 식 8.
예제 8.6 이중선형보간 Q. 직사각형모양의가열된평판의표면위의온도측정. T(,=60 T(9,=57.5 T(,6=55 T(9,6=70 이중선형보간법을이용하여 =5.5, y =4.8에서의온도를예측하라. 풀이 위값을식 (8. 에대입하면다음과같다. 5.5 9 4.8 6 5.5 4.8 6 (5.5, 4.8 60 57.5 9 6 9 6 5.5 9 4.8 5.5 4.8 55 70 6.4 9 6 9 6
8.6 다차원보간 (/ MATLAB 에서의다차원보간 terp: 차원보간을수행 terp: 차원보간을수행 z = terp(, y, z,, y, 'metod' >> = [ 9]; >> y = [ 6]; >> z = [60 57.5; 55 70]; >> terp(, y, z, 5.5, 4.8 as = 6.4