Numerical Analysis Spring Semester 2011 Homework (part 1)

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

description

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

Transcript of Numerical Analysis Spring Semester 2011 Homework (part 1)

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