논리/엑셀 프로그래밍

2차원 보간법 (유동 참조)

섬그늘 2008. 11. 14. 12:32

 

B

C

D

E

F

G

H

I

J

K

L

2

40

3

 

 

30

2

0.944

 

d/tn

t/tn

fr

3

40

2

0.9845

 

30

5

0.316

 

 

 

 

4

40

5

0.325

 

50

2

1.025

 

10

0

1.708

5

40

3

0.7647

 

50

5

0.334

 

10

1

1.314

6

 

 

 

 

 

 

 

 

10

2

0.846

7

 

 

 

 

 

 

 

 

10

5

0.395

8

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

30

0

1.698

10

 

 

 

 

 

 

 

 

30

1

1.388

11

 

 

 

 

 

 

 

 

30

2

0.944

12

 

 

 

 

 

 

 

 

30

5

0.316

13

 

 

 

 

 

 

 

 

30

10

0.127

14

 

 

 

 

 

 

 

 

 

 

 

15

 

 

 

 

 

 

 

 

50

0

1.696

16

 

 

 

 

 

 

 

 

50

1

1.503

17

 

 

 

 

 

 

 

 

50

2

1.025

18

 

 

 

 

 

 

 

 

50

5

0.334

19

 

 

 

 

 

 

 

 

50

10

0.114

20

 

 

 

 

 

 

 

 

 

 

 

21

 

 

 

 

 

 

 

 

100

0

1.701

22

 

 

 

 

 

 

 

 

100

1

1.528

23

 

 

 

 

 

 

 

 

100

2

1.133

24

 

 

 

 

 

 

 

 

100

5

0.348

25

 

 

 

 

 

 

 

 

100

10

0.1

 

원본 데이타가 J2:L25에 있고 임의의 d/tn, t/tn을 B2:C2에 입력했을 때,

 

F2 =IF(B2=MIN(J3:J25),B2,LARGE((B2,J3:J25),RANK(B2,(B2,J3:J25))+1))  , F3 =F2

F4 =IF(B2=MAX(J3:J25),B2,LARGE((B2,J3:J25),RANK(B2,(B2,J3:J25))-1)) , F5 =F4

G2 =MAX(IF((J$3:J$25=F2)*(K$3:K$25<=C$2),K$3:K$25))

G3 =MIN(IF((J$3:J$25=F3)*(K$3:K$25>=C$2),K$3:K$25)) ; G2:G3 잡아 G4:G5에 복사

H2 =SUMPRODUCT((J$3:J$25=F2)*(K$3:K$25=G2)*L$3:L$25) ; H2 잡아 아래로 H5까지 복사

B3 =B2 , C3 =G2 , C5 =C2

D3 =IF(F2=F4,H2,((H4-H2)/(F4-F2))*(B3-F2)+H2)

D4 =IF(F3=F5,H3,((H5-H3)/(F5-F3))*(B4-F3)+H3)

D5 =IF(C3=C4,D3,((D4-D3)/(C4-C3))*(C5-C3)+D3) ; 구하는 답

 

수식 중 G2:G3는 입력 후 CTRL+SHIFT+ENTER (배열수식) 해야 합니다. 위 수식으로 범위 안에 드는 임의의 값은 모두 처리 가능합니다. 다만 범위 밖으로 나간 값 (예: (5, -1) 또는 (110, 12))은 에러가 나는 바, 보다 고도의 기법이 요구될 듯...당분간 숙제로 남깁니다.