numerical analysis spring semester 2011 homework (part 1)

98
Numerical Analysis Spring Semester 2011 Homework (part 1) 환환환환환 20071477 환환환

Upload: leo-murphy

Post on 03-Jan-2016

71 views

Category:

Documents


0 download

DESCRIPTION

Numerical Analysis Spring Semester 2011 Homework (part 1). 환경공학과 20071477 오호식. I.1 Taylor 급수를 유도하고 절단 오차를 설명하라. 절단오차. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Numerical Analysis Spring Semester 2011 Homework (part 1)

Numerical Analysis Spring Semester 2011Homework (part 1)

환경공학과20071477 오호식

Page 2: Numerical Analysis Spring Semester 2011 Homework (part 1)

I.1 Taylor 급수를 유도하고 절단 오차를 설명하라 .

Page 3: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 4: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 5: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 6: Numerical Analysis Spring Semester 2011 Homework (part 1)

절단오차

수학적으로 엄밀하게 주어지는 함수 f 의 값을 , 유한의 사칙 연산의 반복 계산 식 fa 로 근사하는 경우 , (fa-f) 의 오차가 생긴다 . 이것을 , 절단 오차 (truncation error) 라 한다 . 예를 들면 , 테일러급수를 이용하여 삼각함수를 계산할 때 , 무한급수의 계산을 유한 항까지의 계산으로 중단하기 위해서 , 절단오차가 발생한다 .

Page 7: Numerical Analysis Spring Semester 2011 Homework (part 1)

I.2 다음의 역행렬을 구하는 문제에 대하여

1) 알고리즘을 설명하고 프로그램을 작성 실행하라 .2) 책의 프로그램을 Visual Fortran, Visual C 등의 Compiler 를 이용하여 실행하고 알고리즘 및 계산 결과를 설명하라 . 3) 본 프로그램을 Visual Basic 프로그램으로 변환하라 .

Page 8: Numerical Analysis Spring Semester 2011 Homework (part 1)

(1) 알고리즘

• 알고리즘 : 알고리즘 : 어떠한 문제를 해결하기 위한 여러 동작들의 유한한 모임이다 .

• 입력 : 외부에서 제공되는 자료가 0 개 이상 존재한다 .• 출력 : 적어도 1 개 이상의 결과를 내어야 한다 .• 명확성 : 각 명령어들은 명확하고 모호하지 않아야 한

다 .• 유한성 : 알고리듬의 명령어들은 유한번의 수행후에

종료되어야 한다 . 이것 은 수행 시간의 현실적인 유한성을 의미한다 .

• 효과성 : 모든 명령어들은 원칙적으로 종이와 연필만으로 수행될 수 있는 기본적인 것이어야 한다 .

Page 9: Numerical Analysis Spring Semester 2011 Homework (part 1)

↑전처리선언부

/* < 주 프로그램 > */#include <stdio.h>#include <stdlib.h>

main(){

int i, j;double a[2][2];/* 2×2 입력행렬 */double b[2][2];/* 2×2 출력행렬 */

double d;/* A 의 행렬식 */

↑자료

입력부↓

/*** step 1 자료의 입력 ***/printf("2×2 행렬의 역행렬 계산 . \n");

for (i=0 ; i<2 ; i++){for (j=0 ; j<2 ; j++){

printf ("a%d%d=", i+1, j+1);scanf ("%lf", &a[i][j]);

}}

Page 10: Numerical Analysis Spring Semester 2011 Homework (part 1)

↑계산부↓

/*** step 2 행렬식의 계산 ***/d=a[0][0]*a[1][1]-a[0][1]*a[1][0];/*** step 3 에러 처리 ***/if(d==0.0){printf(" 행렬이 정칙이 아닙니다 \n");exit(1);}/*** step 4 역행렬 계산 ***/b[0][0] = a[1][1]/d;b[0][1] = -a[0][1]/d;b[1][0] = -a[1][0]/d;b[1][1] = a[0][0]/d;

↑자료출력부↓

/*** step 5 결과의 출력 ***/printf ("\n < 해 > \n");printf ("B \n");for (i=0 ; i<2 ; i++){for (j=0 ; j<2 ; j++){printf (" % lf", b[i][j]);}printf ("\n");}

Page 11: Numerical Analysis Spring Semester 2011 Homework (part 1)

2) 책의 프로그램을 Visual Fortran, Visual C 등의 Compiler를 이용하여 실행하고 알고리즘 및 계산 결과를 설명하라 .

<Visual Fortran>c < 주 프로그램 >implicit double precision (a-h, o-z)parameter (nmax=8)dimension a(nmax,nmax), wv(nmax),

lsw(nmax)c *** 단계 1 자료 입력 ***write(6,*) 'LU 분해에 따른 역행렬의 계산 'write(6,*) 'LU 분해의 계산 'write(6,*) ' 행렬의 크기 n ='read(5,*) nwrite(6,*) ' 행렬 요소의 입력 'call s_inmg(a,n,n,'a')

Visual Fortran

Page 12: Numerical Analysis Spring Semester 2011 Homework (part 1)

c *** 단계 2 X=A^-1 의 계산 ***call s_invm(a,wv,n,lsw,ierr)c *** 단계 3 계산 결과의 표시 ***if(ierr.eq.1) thenwrite(6,*) ' 행렬이 정칙이 아님 'elsewrite(6,*) ' 계산 결과 'call s_outm(a,n,n,'x')end ifstopendc < LU 분해에 따른 역행렬 계산의 subroutine >subroutine s_invm(a,wv,n,lsw,ierr)c a : n*n 입력 행렬 /계산 결과 (in/out)c wv : n 워크 벡터 (work)c n : 스칼라 행렬의 크기 (in)c lsw : n*1 행의 교환 정보 (work)c ierr : 스칼라 에러 코드 0: 정상 1: 비 정상 (out)implicit double precision (a-h, o-z)dimension a(n,n), wv(n), lsw(n)

Page 13: Numerical Analysis Spring Semester 2011 Homework (part 1)

c *** 단계 1 Doolittle 법에 따른 LU 분해 ***call s_dot(a,n,lsw,ierr)if(ierr.eq.1) thenreturnend ifc *** 단계 2 y 의 반복 계산 ***do i=1,ndo j=i+1,nsum=0.0do k=i+1,j-1sum=sum+a(j,k)*a(k,i)enddoa(j,i)=-a(j,i)-sumenddoenddo

Page 14: Numerical Analysis Spring Semester 2011 Homework (part 1)

c *** 단계 3 x 의 반복 계산 ***do j=n,1,-1do k=j,nwv(k)=a(j,k)enddodo i=1,nsum=0.0do k=j+1,nsum=sum+wv(k)*a(k,i)enddoif(j.lt.i) a(j,i)=-sum/wv(j)if(j.eq.i) a(j,i)=(1.0-sum)/wv(j)if(j.gt.i) a(j,i)=(a(j,i)-sum)/wv(j)enddoenddoc *** 단계 4 pivot 교환에 따른 열의 교환 ***do i=1,ndo j=1,nwv(j)=a(i,j)enddodo k=1,na(i,lsw(k))=wv(k)enddoenddoierr=0returnend

Page 15: Numerical Analysis Spring Semester 2011 Homework (part 1)

<Visual C>/* < 주 프로그램 > */#include "smp.h"main(){int i,N,*LSW;double *a, *wv;/*** 단계 1 자료 입력 ***/printf("LU 분해에 따른 역행열의 계산 \n";printf(" 행렬 A 의 크기 N = ");scanf("%d", &N);a=calloc(N*N, sizeof (double));wv=calloc(N, sizeof (double));LSW=calloc(N, sizeof (int));if(a==NULL || wv==NULL || LSW==NULL){printf("\n 메모리가 확보되지 않았음 ");exit(1);}printf(" 행렬 A 의 요소의 입력 \n");S_INMG(a,N,N,"a");

Page 16: Numerical Analysis Spring Semester 2011 Homework (part 1)

/*** 단계 2 X=A^-1 의 계산 ***/i=S_INVM(a,wv,N,LSW);/*** 단계 3 계산 결과의 표시 ***/if(i){printf(" 행렬이 정칙이 아님 ")}else{printf(" 계산 결과 \n");S_OUTM(a,N,N,"x")}}/* < LU 분해에 따른 역행열 계산의 함수 > */int S_INVM(double *a, double *wv, int N, int *LSW)/* 반환값 : 에러 코드 0: 정상 1: 이상a : N*N 입력 행렬 /역행 열 (In/Out)wv : N*1 작업 용 (Work)N : 스칼라 행렬의 크기 (In)LSW : N*1 행의 교환 정보 (Work) */{int i, j, k, ks;double sum;

Page 17: Numerical Analysis Spring Semester 2011 Homework (part 1)

/*** 단계 1 Doolittle 법에 따른 LU 분해 ***/i=S_DOT(a,N,LSW)if(i==1) return 1;/*** 단계 2 Y 의 반복 계산 ***/for(i=0;i<N;i++){for(j=i+1;j<N;j++){sum=0.0;for(k=i+1;k<j;k++) sum=sum+a[N*j+k]*a[N*k+i];a[N*j+i]=-a[N*j+i]-sum;}}/*** 단계 3 X 의 반복 계산 ***/for(j=N-1;j>=0;j--){for(k=j;k<N;k++) wv[k]=a[N*j+k];for(i=0;i<N;i++){sum=0;for(k=j+1;k<N;k++) sum=sum+wv[k]*a[N*k+i];if(j<i) a[N*j+i]=-sum/wv[j];if(j==i) a[N*j+i]=(1.0-sum)/wv[j];if(j>i) a[N*j+i]=(a[N*j+i]-sum)/wv[j];}}

Page 18: Numerical Analysis Spring Semester 2011 Homework (part 1)

•/*** 단계 4 Pivot 교환에 따른 열의 교환 ***/• for(i=0;i<N;i++){•for(j=0;j<N;j++) wv[j]=a[N*i+j];• for(k=0;k<N;k++) a[N*i+LSW[k]]=wv[k];•}•return 0;•}

Page 19: Numerical Analysis Spring Semester 2011 Homework (part 1)

III.1 3 원 연립방정식에 대하여 행렬식(Determinant) 을 이용하여 역행렬을 구하는 방법과 연립방정식을 푸는 방법을 설명하라 ( 수학책 참조 ).

Page 20: Numerical Analysis Spring Semester 2011 Homework (part 1)

행렬식

•정방 행렬 A 의 LU 분해가 A=LU 인 경우 , 그 행렬식 |A| 는 |A|=|L| |U|

•로 표현할 수 있다 . Doolittle 법에 따라 LU 분해에서는 , L 의 대각 요소는 모두 1 이고 , 삼각 행렬의 행렬식은 그 대각 요소의 적 ( 積 ) 이기 때문에

•가 된다 . 따라서 , |A| 은 U 의 모든 대각 요소의 적으로서 구해진다 . 단 ,LU 분해에 있어서 Pivot 의 선택이 있는 경우는 , Pivot 을 교환할 때마다 행렬식의 부호를 바꾸어주기 위해 , 교환 회수가 m 인 경우

Page 21: Numerical Analysis Spring Semester 2011 Homework (part 1)

•가 된다 . 따라서 , |A| 은 U 의 모든 대각 요소의 적으로서 구해진다 . 단 ,LU 분해에 있어서 Pivot 의 선택이 있는 경우는 , Pivot 을 교환할 때마다 행렬식의 부호를 바꾸어주기 위해 , 교환 회수가 m 인 경우

•가 된다 .•Doolittle 법에 따른 LU 분해의 결과 , 구해진 U

와 Gauss 의 소거법에 있어서 전진 소거가 끝난 단계에서의 식 (4.14) 의 계수 행렬이 같은 것은 앞서 서술하였다 . 이것으로부터 , Gauss 소거법에 있어서도 모든 Pivot 의 적

Page 22: Numerical Analysis Spring Semester 2011 Homework (part 1)

•에 따라 행렬식을 구하는 것이 가능하다 . 행렬식만 구하는 경우는 , Gauss 의 단순 소거법에 있어서 우변의 계산과 후진 대입의 계산을 생략하고 , 전진 소거를 하여 , 모든 Pivot 의 적을 구하면 된다 . 따라서 , 행렬식의 계산 순서는 다음과 같다 .

Page 23: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 24: Numerical Analysis Spring Semester 2011 Homework (part 1)

역행렬

•행렬 A 의 역행렬 이란 , 다음의 관계를 만족시키는 행렬이다 .

•여기에서 ,I 는 단위 행렬이다 . 역행렬의 계산은 , 식 (4.4) 로부터 구하는 것보다 , 소거법 등을 이용하는 편이 계산 횟수가 적게 든다 . 여기에서는 ,LU 분해에 따른 계산 방법을 서술한다 .

Page 25: Numerical Analysis Spring Semester 2011 Homework (part 1)

• 은 미지이므로 X 라고 치환하면 , 식 (5.5)로부터 AX=I

•(5.6) 으로 나타내진다 . Doolittle 법의 LU 분해에 따라 A=LU 를 구하여 LY=I

•의 관계로부터 행렬 를 계산하고 , 계속해서 UX=Y

Page 26: Numerical Analysis Spring Semester 2011 Homework (part 1)

•의 관계로부터 행렬 X 를 계산할 수 있다 . 여기에서 , 는 LY=I 의 관계로부터 대각 요소가 모두 1 인 하삼각행렬이 되고 ,

의 순서로 , 그리고 j 를 1 부터 n 까지라고 하면

Page 27: Numerical Analysis Spring Semester 2011 Homework (part 1)

•으로 구해진다 . 또 , 는 의 순서로 , 그리고 j 를 n 부터 1 까지라고 하면

•으로 구해진다 . 또한 , Y 는 하삼각행렬이기 때문에 L 의 배열에 중복되며 , X 도 U 의 영역에 중복되어 , 이에 따라 배열 영역을 절약할 수 있다 . 나아가 , LU 분해의 결과를 A 에 중복시키면 , X 의 계산 결과도 A 에 중복시키는 것이 가능하다 . 단 , LU 분해에 있어서 Pivot 을 교환하는 경우는 , 그것에 대응하는 X 의 열교환이 필요하게 된다 . Pivot 교환이 있는 경우의 계산 순서를 서술하였다 .

Page 28: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 29: Numerical Analysis Spring Semester 2011 Homework (part 1)

III.2 3 원 연립방정식을 이용하여 Gauss 소거법의 알고리즘을 유도하라 .

Page 30: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 31: Numerical Analysis Spring Semester 2011 Homework (part 1)

III.3 다음의 3 원 연립방정식의 해를 Gauss 의 단순 소거법 및 Pivot 선택법을 이용하여 구하라 .

(1)

(2)

(3)

Page 32: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 33: Numerical Analysis Spring Semester 2011 Homework (part 1)

III.4 위의 3 원 연립방정식의 해를 교과서에서 제시된 C 및 Fortran 프로그램을 운영하여 구하라 .

Page 34: Numerical Analysis Spring Semester 2011 Homework (part 1)

<Fortran 프로그램 >c < 주 프로그램 >implicit double precision (a-h, o-z)integer ierrparameter (max=8)dimension x(max), a(max, max), b(max)c *** 단계 1 자료 입력 ***write(6,*) 'Gauss 의 소거법에 따른 ax=b (a:n*n, x, b:n*1) 의 계산‘write(6,*) 'n='read(5,*) ncall s_inmg(a,n,n,'a')call s_inmg(b,n,1,'b')c *** 단계 2 Gauss 소거법의 계산 ***call s_gaus(x,a,b,n,ierr)c *** 단계 3 계산 결과의 표시 ***if(ierr.eq.1) thenwrite(6,*) ' 부정확 또는 불능 'stopend ifcall s_outm(x,n,1,'x')stopend

Page 35: Numerical Analysis Spring Semester 2011 Homework (part 1)

c < Gauss 소거법의 subroutine >subroutine s_gaus(x,a,b,n,ierr)cc x : n * 1 방정식의 해 (out)c a : n * n 입력 행렬 (in/work)c b : n * 1 입력 벡터 (in/work)c n : scalar 방정식의 원래 해 (in)c ierr : scalar 에러 코드 0 : 정상 1 : 이상

(out)cimplicit double precision (a-h, o-z)dimension x(n), a(n,n), b(n)parameter (e_eps=1.0e-14)

Page 36: Numerical Analysis Spring Semester 2011 Homework (part 1)

• c *** 단계 1 전진 소거 ***• do k=1,n-1• call s_pivo(a,lc,n,k,ierr)• if(ierr.eq.1) then• return• else if(lc.ne.k) then• tmp = b(k)• b(k) = b(lc)• b(lc) = tmp• end if• do i=k+1,n• p=a(i,k)/a(k,k)• do j=k+1,n• a(i,j)=a(i,j)-p*a(k,j)• enddo• b(i)=b(i)-p*b(k)• enddo• enddo

• c *** 단계 2 후진 대입 ***• do k=n,1,-1• if(abs(a(k,k)).le.e_eps)

then• ierr=1• return• end if• s=0.0• do j=k+1,n• s=s+a(k,j)*x(j)• enddo• x(k)=(b(k)-s)/a(k,k)• enddo• ierr=0• return• end

Page 37: Numerical Analysis Spring Semester 2011 Homework (part 1)

• c < pivot 선택 ( 행의 교환 ) 의 subroutine >• subroutine s_pivo(a,m,n,k,ierr)• c a : n * n pivot 교환을 하는 행렬 (out/in)• c m : 스칼라 교체된 번호 (out)• c n : 스칼라 행렬의 크기 (in)• c k : 스칼라 pivot 의 선택의 열의 위치 (in)• c ierr : 스칼라 에러 코드 0 : 정상 1 : 이상 (out)• implicit double precision (a-h, o-z)• dimension a(n,n)• parameter (e_eps=1.0e-14)• c *** 단계 1 초기 설정 ***• m = k• d = abs(a(k,k))• c *** 단계 2 최대 pivot 의 탐색 ***• do i=k+1,n• if(abs(a(i,k)).gt.d) then• m = i• d = abs(a(i,k))• end if• enddo

Page 38: Numerical Analysis Spring Semester 2011 Homework (part 1)

• c *** 단계 3 이상 처리 ***• if(abs(d).le.e_eps) then• ierr=1• return• else if(m.eq.k) then• ierr=0• return• end if• c *** 단계 4 pivot 의 교환 ***• do i=k,n• tmp = a(k,i)• a(k,i) = a(m,i)• a(m,i) = tmp• enddo• ierr=0• return• end

Page 39: Numerical Analysis Spring Semester 2011 Homework (part 1)

• c < 행렬의 key 입력 subroutine >• subroutine s_inmg(a,n,m,name)• c a : n * m key 입력을 하는 행렬 (out)• c n : 스칼라 행의 크기 (in)• c m : 스칼라 열의 크기 (in)• c name : 1 문자 행렬의 이름 (in)• implicit double precision (a-h, o-z)• character name*1• dimension a(n,m)• write(6,*)• do i=1,n• if(m.eq.1) then• write(6,30) name, i• 30 format(a,'(',i2,') 의 입력 ')• else• write(6,10) name, i, name, i, m• 10 format(a,'(',i2,', 1)~',a,'(',i2,',',i2,') 의 입력 ')• end if• read(5,*)(a(i,j),j=1,m)• enddo• return• end

Page 40: Numerical Analysis Spring Semester 2011 Homework (part 1)

• c < 행렬의 화면 표시 subroutine >• subroutine s_outm(a,n,m,name)• c a : n * m 화면 표시를 하는 행렬 (out)• c n : 스칼라 행의 크기 (in)• c m : 스칼라 열의 크기 (in)• c name : 1 문자 행렬의 이름 (in)• implicit double precision (a-h, o-z)• character*1 name• dimension a(n,m)• write(6,10) name• 10 format(1h,a,'=')• do i=1,n• write(6,20)(a(i,j),j=1,m)• 20 format(8f15.6)• enddo• return• end

Page 41: Numerical Analysis Spring Semester 2011 Homework (part 1)

• <C 프로그램 >• #include<stdio.h>• #include<conio.h>• void main()• {• int i,j,k,h;• float l,m,n,o,p,q,r;• clrscr();• float A[3][4]={0, };• for(i=0;i<3;i++)• {• for(j=0;j<4;j++)• {• printf("Input number A[%d][%d]=",i,j);• scanf("%f",&A[i][j]);• }• }

Page 42: Numerical Analysis Spring Semester 2011 Homework (part 1)

• for(j=3;j>=0;j--)• {• A[0][j]=A[0][j]/A[0][0];• }• l=A[1][0]/A[0][0];• m=A[2][0]/A[0][0];• for(k=1;k<2;k++)• {• for(j=0;j<4;j++)• {• A[k][j]=A[k][j]-A[0][j]*l;• A[k+1][j]=A[k+1][j]-A[0][j]*m;• }• }• for(j=3;j>0;j--)• {• A[1][j]=A[1][j]/A[1][1];• }• o=A[0][1]/A[1][1];• p=A[2][1]/A[1][1];• for(k=0;k<1;k++)

Page 43: Numerical Analysis Spring Semester 2011 Homework (part 1)

• {• for(j=1;j<4;j++)• {• A[k][j]=A[k][j]-(A[1][j]*o);• A[k+2][j]=A[k+2][j]-(A[1][j]*p);• }• }• for(j=3;j>1;j--)• {• A[2][j]=A[2][j]/A[2][2];• }• q=A[0][2]/A[2][2];• r=A[1][2]/A[2][2];• for(k=0;k<1;k++)• {• for(j=2;j<4;j++)• {• A[k][j]=A[k][j]-(A[2][j]*q);• A[k+1][j]=A[k+1][j]-(A[2][j]*r);• }• }• for(i=0;i<3;i++)• {• for(j=0;j<4;j++)• {• printf(" %5.1f",A[i][j]);• }• printf("\n");• }• }

Page 44: Numerical Analysis Spring Semester 2011 Homework (part 1)

  III.6 4 원 연립방정식을 이용하여 LU 분해법의 알고리즘을 Doolittle 방법 및 Crout 방법에 대하여 유도하라 .

Page 45: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 46: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 47: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 48: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 49: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 50: Numerical Analysis Spring Semester 2011 Homework (part 1)

III.7 위의 3 원 연립방정식의 해를 LU 분해법으로 계산기와 Excel 을 이용하여 구하라 .

Page 51: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 52: Numerical Analysis Spring Semester 2011 Homework (part 1)

III.8 다음의 연립 1 차 방정식을 초기값 로서 Jacobi 법 , Gauss Seidel 법 , SOR 법으로 계산기 , Excel, 프로그램을 이용하여 구하라 .

Page 53: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 54: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 55: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 56: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 57: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 58: Numerical Analysis Spring Semester 2011 Homework (part 1)

IV.1 Derive the all the algorithms using graphs for the case of Bisection, Secant, and Newton Methods.

Page 59: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 60: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 61: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 62: Numerical Analysis Spring Semester 2011 Homework (part 1)

IV.2 Compile and run the given programs by using Visual Fortran, Visual Basic and Visual C Compilers.

Page 63: Numerical Analysis Spring Semester 2011 Homework (part 1)

IV.3 Solve the example problems by hands, using Excel program, and by the given programs.

의 실근을 2분법 , 선형역보간법 , Newton 법으로 계산기 , Excel, 프로그램 (Fortran, Basic, C) 을 이용하여 구하라 . 단 , , , 으로 해라 . ( 실제값은 1 이다 )

Page 64: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 65: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 66: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 67: Numerical Analysis Spring Semester 2011 Homework (part 1)

  IV.4 연립비선형방정식을 구하기 위한 Newton 법의 알고리즘을 Newton-Raphson 법의 알고리즘과 비교하여 유도하라 .

Page 68: Numerical Analysis Spring Semester 2011 Homework (part 1)

• 6.2 Newton-Raphson 법 • ❖근을 구하는 공식들 중 가장 넓게 사용됨• (1) 초기 가정값이 라면• (2) 점 에 접하는 접선을 구할 수 있고• (3) 이 접선이 축과 교차하는 점 개선된 근• ❖그림 6.5: 1 차도함수의 기울기

• (6.5)• • (6.6) • • Newton-Raphson 공식

ix )](,[ ii xfx

x

1

0)()(

ii

i

i

xx

xfxf

)(

)(1

i

i

ii

xf

xfxx

Page 69: Numerical Analysis Spring Semester 2011 Homework (part 1)

• 6.2.2 Newton-Raphson 법의 문제점 .

• Newton-Raphson 법은 매우 효율적이지만 제대로

수행되지 못하는 경우도 있다 .

• ( 예 6.5)Newton-Raphson 법의 사용시 느리게 수렴하는 함수의 예 .

• Newton-Raphson 법을 사용해서 의 양의

• 근을 구하라 . 초기가정은 한다 .

• (Sol.)

• ❖근의 참값 1 에 수렴은 하지만 수렴속도가• 매우 느림

910)( xxf 910

110

1

i

i

ii

x

xxx

1)( 10 xxf

5.0x

Page 70: Numerical Analysis Spring Semester 2011 Homework (part 1)

• ❖Newton-Raphson 법이 수렴하지 않는 네 가지 경우

• ❖Newton-Raphson 법에 대한 일반적인• 수렴 판정의 기준은 존재 (X)

• ❖수렴 = 함수의 성질 & 초기가정의 • 정확도에 의존함 .

• ❖유일한 해결책 = • 근에 ‘’충분히’’가까운 • 초기 가정을 사용하는 것 .

• ❖훌륭한 초기가정 얻기• (i) 문제에 대한 물리적 이해• (ii) 해의 형태에 대한 정보를• 제공하는 그래프 사용 .

Page 71: Numerical Analysis Spring Semester 2011 Homework (part 1)

IV.5 다음의 2원 연립 비선형 방정식의 해를 Newton 법에 이용하여 구하라 . 초기값은 , 이다 .

Page 72: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 73: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 74: Numerical Analysis Spring Semester 2011 Homework (part 1)

VII.1 최소자승법을 이용하여 선형회귀분석을 수행하는 알고리즘을 BOD 분해능 계수를 추정하는 문제와 시계열 모형중 ARMA 모형의 선형 1 차모형 문제에 대하여 설명하라 ( 그림 포함 ). 선형회귀함수의 계수를 유도하라 .

Page 75: Numerical Analysis Spring Semester 2011 Homework (part 1)

1) 물질이동식 및 해하천에서의 오염현상은 총체적인 개념으로 BOD 농도를 사용하여

해석하며 , 이러한 BOD 농도에 대한 물질이동식으로 해석한다 . 물질이동식은 유속에 의한 이류유송과 생화학적 분해 반응을 고려하면 다음의 편미분방정식으로 표현된다 .

여기서 , 평균 하천 유 속 (u) 은 유량을 단면적으로 나눈 값 (Q/A)이다 .

위의 식을 정상 상태의 상미분 방정식으로 표현하면 다음과 같다 .변수분리법으로 위의 상미분 방정식을 다음과 같이 풀 수 있다 . 위의 적분은 x=0 일 때의 Co 에서부터 하류 거리 x 일 때 농도 C

까지 설정되었다 . 적분하면 다음과 같은 식을 얻을 수 있다 . (1)양변에 지수를 취하면 , 다음과 같다 .여기서 , Co 는 원점 X=0 에서의 초기 농도이다 .

VII.1 최소자승법을 이용하여 선형회귀분석을 수행하는 알고리즘을 BOD 분해능 계수를 추정하는 문제와 시계열 모형중 ARMA 모형의 선형 1 차모형 문제에 대하여 설명하라 ( 그림포함 ). 선형회귀함수의 계수를 유도하라 .

Page 76: Numerical Analysis Spring Semester 2011 Homework (part 1)

2) 반응계수 추정을 위한 선형회귀분석방법의 적용

(1)식을 농도와 이동 거리에 대한 식으로 정리하면 다음과 같다 .

이동 거리에 따라 측정된 BOD 농도 /초기농도에 ln 를 취하여 y축으로 이동거리 /유속을 x 축으로 설정하여 측정된 자료를 도시한다 . 이 도시된 그래프의 기울기는 이다 . 따라서 , 기울기가 BOD 분해능 계수이다 . 다음에 이러한 판정 기법의 예를 나타내었다 .

실험오차나 기타 오차에 의하여 측정된 값이 그래프에 정확히 일치하지 않는 경우에는 선형회귀분석 기법을 이용하여 그래프에 가장 일치하는 경우의 기울기를 구하면 된다 . Excel 의 메뉴에 있는 Regression( 상관분석 ) 을 사용하여 이러한 분석을 수행한 후 그래프를 도시하여 실측값과 계산치와의 비교 분석을 수행한다 .(r결과클릭 )

Page 77: Numerical Analysis Spring Semester 2011 Homework (part 1)

VIII.1 막대공식 , 사다리꼴공식 , Sympson 공식의 수치적분법을 그림을 이용하여 설명하라 .

막대공식 : 를 구하는 것이 곤란한 경우가 있다 . 이러한 경우에는 , 수치

해석에 따라 근사값을 구하면 된다 . (클릭하면 그림 )

정적분은 X=a, X=b, y=f(x) 및 축으로 둘러싸인 면적을 의미한다 . 이것으로부터 , 구간 [a,b] 를 n 개의 등간격 의 소구간 으로 나누면 , 정적분은

로 정의할 수 있다 . 여기에서 , , 이다 . 이 정의로부터 , n 을 충분히 큰 유한의 정수라 하면 , 그림 8.1 에 보여지는 정적분의 근사값은

,

Page 78: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 79: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 80: Numerical Analysis Spring Semester 2011 Homework (part 1)

VIII. 2 을 막대공식 , 사다리꼴 공식과 Sympson 공식으로 계산하고 ( 계산기 , Excel, Program 을 이용( 유체역학 교과서 부록에 있음 ), 실제값과 비교하라 . 단 , 세분 폭은 h=0.1 이라고 한다 .

Page 81: Numerical Analysis Spring Semester 2011 Homework (part 1)

VIII. 2 을 막대공식 , 사다리꼴 공식과 Sympson 공식으로 계산하고 ( 계산기 , Excel, Program 을 이용 ( 유체역학 교과서 부록에 있음 ), 실제값과 비교하라 . 단 , 세분 폭은 이라고 한다 . ( 해 ) 의 값은

이다 . 사다리꼴 공식으로는Sympson 의 공식으로는가 된다 . 실제값은 이다 . 따라서 , 사다리꼴

공식의 오차는 , Sympson 공식의 오차는 이다 .

Page 82: Numerical Analysis Spring Semester 2011 Homework (part 1)

VII.1 선형함수에 대하여 최소자승법을 이용하는 선형회귀분석 알고리즘을 유도 혹은 설명하라 .

Page 83: Numerical Analysis Spring Semester 2011 Homework (part 1)

파라미터 이 함수 에 선형으로 나타나는 경우로

(7.15)

으로 표현할 수 있다 . 여기에서 , 는 X의

다항식 이거나 , 직교 다항식이다

VII.2 선형함수에 대하여 최소자승법을 이용하는 선형회귀분석 알고리즘을 유도 혹은 설명하라 .

Page 84: Numerical Analysis Spring Semester 2011 Homework (part 1)

VII.2 ARMA 모형에서의 최소자승법을 설명하라 .

Page 85: Numerical Analysis Spring Semester 2011 Homework (part 1)

VII.3 ARMA 모형에서의 최소자승법을 설명하라 .

Page 86: Numerical Analysis Spring Semester 2011 Homework (part 1)

VIV.1 상미분방정식에 대한 다음의 해를 구하라 .

1) 다음의 상미분 방정식을 세분 폭 h=0.1 으로 x=0.5 까지 Euler 법 , 수정된 오일러법 , Runge-Kuttan 법으로 구하라 ( 계산기 , Excel, 프로그램 ).y'(x)=y y(0)=1.02) 위의 방정식을 3 단의 Adams-Bashforth 법 및 Adams-Moulton법으로 구하라 . 단 , 수정자 공식의 최대 반복 회수를 Nmax=4, 수렴 판정 정수를 ε=10^-7 이라고 한다 ( 계산기 , Excel, 프로그램 ).

Page 87: Numerical Analysis Spring Semester 2011 Homework (part 1)

VIV.1 상미분방정식에 대한 다음의 해를 구하라 . 1) 다음의 상미분 방정식을 세분 폭 h=0.1 으로 x=0.5 까지 Euler 법 , 수정된 오일러법 , Runge-Kuttan 법으로 구하라 ( 계산기 , Excel, 프로그램 ).

Euler 법 :( 풀이 ) Euler 법으로 계산하면

이것으로부터 , 근사 값으로서 1.61051 을 얻는다 . 이 상미분 방정식의 해석 해는 이다 . 에서의 절대치 오차는가 된다 .

Page 88: Numerical Analysis Spring Semester 2011 Homework (part 1)

수정된 오일러법 :( 풀이 ) 수정된 Euler 법으로 계산하면

이 상미분 방정식의 해석 해는 이다 . 에서의 절대 값 오차는 이다 . Euler 법보다 정밀도가 좋은 것을 알 수 있다 .

Page 89: Numerical Analysis Spring Semester 2011 Homework (part 1)

Runge-Kuttan 법 :( 풀이 ) Runge-Kutta 법으로 계산하면 , 으로부터

가 된다 . 이후 을 초기 값으로 하여 이 계산을 반복하면

가 된다 . 이 상미분 방정식의 해석 해는 이므로 , 에서의 절대 값 오차는

이다 . 수정된 Euler 법보다 정밀도가 좋은 것을 알 수 있다 .

Page 90: Numerical Analysis Spring Semester 2011 Homework (part 1)

2) 위의 방정식을 3 단의 Adams-Bashforth 법 및 Adams-Moulton 법으로 구하라 . 단 , 수정자 공식의 최대 반복 회수를 Nmax=4, 수렴 판정 정수를 ε=10^-7 이라고 한다 ( 계산기 , Excel, 프로그램 ).( 풀이 ) 계산 결과를 표에 보여 준다 . 계산 값은

이고 , 실제 값과 비교하면 오차는 이다 .

1

2

3

3

3

3

3

4

4

4

4

5

5

5

5

0.0000000

0.1000000

0.2000000

0.3000000

0.4000000

0.5000000

1

2

3

1

2

3

1

2

3

1.0000000

1.1051708

1.2214026

1.3498153

1.3498620

1.3498639

1.3498640

1.4917830

1.4918342

1.4918363

1.4918364

1.6486816

1.6487384

1.6487407

1.6487408

1.0000000

1.1051708

1.2214026

1.3498153

1.3498620

1.3498639

1.4917830

1.4918342

1.4918363

1.6486816

1.6487384

1.6487407

Page 91: Numerical Analysis Spring Semester 2011 Homework (part 1)

VIV.2 수정된 Euler 법을 2 차의 Taylor 전개식으로부터 유도하라 .

Page 92: Numerical Analysis Spring Semester 2011 Homework (part 1)

VIV.2 수정된 Euler 법을 2 차의 Taylor 전개식으로부터 유도하라 .

Page 93: Numerical Analysis Spring Semester 2011 Homework (part 1)

VIV.3 외삽법과 내삽법의 알고리즘을 이용하여 다단법중 Adams-Basforth법과 Adams-Moulton 법의 알고리즘을 유도하라 .

Page 94: Numerical Analysis Spring Semester 2011 Homework (part 1)

VIV.3 외삽법과 내삽법의 알고리즘을 이용하여 다단법중 Adams-Basforth 법과 Adams-Moulton 법의 알고리즘을 유도하라 .

Page 95: Numerical Analysis Spring Semester 2011 Homework (part 1)

국소절단오차

2 3/2 -1/2

3 23/12 -16/12 5/12

4 55/24 -59/24 37/24 -9/24

5 1901/720 -2774/720 2616/720 -1274/720 251/720

Page 96: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 97: Numerical Analysis Spring Semester 2011 Homework (part 1)
Page 98: Numerical Analysis Spring Semester 2011 Homework (part 1)

Adams-Moulton 법의 계수

국소 절단 오차

2 1/2 1/2

3 5/12 8/12 -1/12

4 9/24 19/24 -5/24 1/24

5251/7

20

646/7

20

-

264/720

106/70

6

-

19/720