| 한 학기동안의 수치해석 코딩 모음 |
Tech - https://ohyung.net/484 (YMD: 07/12/19 03:17)
Applied Numerical Methods with MATLAB for Engineers and Scientists ( Chapra / Mc Graw Hill )

분명히 매틀랩으로 하는과목이었으나.... C로 코딩을 주구장창 했던 과목.....
제출은 하였으나... 교수님의 의도와는 다르게 코딩된 ( 답만 덜렁 나오는 등의 ;;; ) 것도 있고...뭐...

6번인가 7번 부터는 변태적인 주석과 변수명이 다수 사용되어 보는 이의 심경이 매우 불편할 수도 있으니 블럭설정후 Ctrl + h 혹은 R을 눌러 바꾸기 기능으로 i,j,k,l 등의 변수명으로 바꿔 보는게 좋음...

또한 리눅스에서 작성되었기 때문에 cywin과 Visual C 같은거에서 돌릴생각은 버리길 -.ㅡ;
컴파일러는 GCC 4.1.3 버젼을 사용함.

/**
Copyright (c) 2007 : Ohyung ( ohyung@ohyung.com )

Base : linux (ubuntu 7.10 - Gutsy Gilbbon, kernel 2.6.22-12-generic)
Compiler : gcc (GCC) 4.1.3
Tool : Code::Blocks svn4737

Make : $ gcc -o P01 P01.c
Run : $ ./P01
*/

NA_HW01_SN2002711158.tar.gz (6.3 KB)
HW01_..._P01
pp.109: Problems 4.3 (M-file을 C로 작성할 것)

HW01_..._P02
pp.105: Example 4.5를 C언어로 결과를 얻을 것

NA_HW02_SN2002711158.tar.gz (18.1 KB)
아래의 문제를 지시된 방법에 따라 코딩하여 제출하세요.

Problems (pp.137)
5.16
NA_HW02_P01: Incremental Search Method
NA_HW02_P02: Bisection Method
NA_HW02_P03: False Position Method

5.17
NA_HW02_P04: Incremental Search Method
NA_HW02_P05: Bisection Method
NA_HW02_P06: False Position Method

NA_HW03_SN2002711158.tar.gz (1.6 KB)
아래의 문제를 지시된 방법에 따라 코딩하여 제출하세요.

Problems (pp.137)
5.16
NA_HW03_P01: Simple Fixed Point Method
NA_HW03_P02: Newton-Raphson Method

5.17
NA_HW03_P03: Simple Fixed Point Method
NA_HW03_P04: Newton-Raphson Method

NA_HW04_SN2002711158.tar.gz (1.4 KB)
아래의 문제를 지시된 방법에 따라 코딩하여 제출하세요.

Problems (pp.137)
5.16
NA_HW04_P01: Secant Method
NA_HW04_P02: Modified Secant Method

5.17
NA_HW04_P03: Secant Method
NA_HW04_P04: Modified Secant Method

NA_HW05_SN2002711158.tar.gz (2.3 KB)
아래의 문제를 지시된 방법에 따라 코딩하여 제출하세요.

하나의 main()함수를 사용하고, 실해후 입력 요청에 따라
입력한 값에 따라 프로그램 내부에서 방법을 선택하게 코딩하세요.
(힌트: scanf() 등을 활용)

즉, 제출해야 하는 프로그램 전체에서 main()함수는 열개가 있는 것이
아니라 오직 하나만 있어야 합니다.


Problems (pp.183)
7.3
NA_HW05_P01: Incremental Search after Differentiation
NA_HW05_P02: Bisection after Differentiation
NA_HW05_P03: False Positioning after Differentiation
NA_HW05_P04: Successive Substitution after Differentiation
NA_HW05_P05: Newton-Raphson after Differentiation
NA_HW05_P06: Secant after Differentiation
NA_HW05_P07: Modified Secant after Differentiation
NA_HW05_P08: Trisection (강의시간에 언급한 삼분법)
NA_HW05_P09: Golden-section Search
NA_HW05_P10: Parabolic Interpolation

NA_HW06_SN2002711158.tar.gz (2.0 KB)
임의의 nxn 행렬 A에 대한 역행렬를 구하는 프로그램을 제출하세요.

1. n을 입력받는다.
2. A의 원소 nxn개를 받아들인다.
3. |A|를 계산한다.
4. |A|=0이면 A의 역행렬이 없음을 출력
|A|=\=0이면 A의 역행렬을 계산
5. A의 역행렬을 출력
6. AA^(-1)를 출력

NA_HW07_SN2002711158.tar.gz (2.1 KB)
임의의 nxn 행렬 A에 대한 역행렬를
가우스 소거법(Gauss Elimination)으로
구하는 프로그램을 제출하세요.

1. n을 입력받는다.
2. A의 원소 nxn개를 받아들인다.
3. |A|를 계산한다.
4. |A|=0이면 A의 역행렬이 없음을 출력
|A|=\=0이면 A의 역행렬을 계산
5. A의 역행렬을 출력
6. AA^(-1)를 출력

반드시 피벗(Pivoting)하세요.

NA_HW08_SN2002711158.tar.gz (2.2 KB)
임의의 nxn 행렬 A에 대한 LU Decomposition을 수행

1. n을 입력받는다.
2. A의 원소 nxn개를 받아들인다.
3. |A|를 계산한다.
4. |A|=0이면 A의 역행렬이 없음을 출력
|A|=\=0이면 A의 역행렬을 계산
5. A = LU를 만족하는 행렬 L과 행렬 U를 출력

NA_HW09_SN2002711158.tar.gz (2.1 KB)
임의의 n원 1차 연립방정식(Ax=b)을 Gauss-Seidel Method로
근(x)을 구하라.

1. n을 입력받는다.
2. A의 원소 nxn개를 받아들인다.
3. A가 diagonal dominant인지 판단하여 아니면 2로, 맞으면 3으로
4. b의 원소 n개를 받아들인다.
5. Relaxation: lambda=0.5, 1, 1.5, 2
6. Gauss Seidel 방법으로 근을 구하여 출력한다.

Gauss-Seidel 방법의 각 반복 단계별 추정근과 상대 오차를
출력하게 한다.

NA_HW10_SN2002711158.tar.gz (972 Byte)

입력값 lowerLimit, upperLimit, nSegment을
입력받아서 [lowerLimit, upperLimit] 구간을
nSegment 등분하여 분할된 구간에서 Trapezoidal
Rule에 기반한 C 프로그램을 작성하여 제출하세요.

함수명: TrapezoidalIntegration(lowerLimit, upperLimit, nSegment)

교재에서 a가 lowerLimit, b가 upperLimit에 해당함.

GivenFunction(x)는 임의의 함수에 대해 성립하도록 프로그램하되
아래의 코드를 임시로 사용하기 바람.
조교가 임의로 함수 변경해도 결과가 제대로 나와야 함.

double
GivenFunction(double x)
{
return (exp(-x*x/2.0));
}

기말고사의 Pseudo-Code 참조하세요.

NA_HW11_SN2002711158.tar.gz (1.4 KB)

입력값 lowerLimit, upperLimit, maxIteration, stoppingCriterion을 입력받아서
[lowerLimit, upperLimit] 구간에서의 적분값을
최대 maxIteration 내에서 stoppingCriterion이하의
오차가 나오면 결과를 출력하고 중지하는 C 프로그램을
작성하여 제출하세요.

함수명: RombergIntegration(lowerLimit, upperLimit, maxIteration, stoppingCriterion)

교재에서 a가 lowerLimit, b가 upperLimit에 해당함.
maxIteration은 자연수이고, stoppingCriterion은
백분율이 아니라 소수로 값을 받아 들임. (예, 0.001)

GivenFunction(x)는 임의의 함수에 대해 성립하도록 프로그램하되
아래의 코드를 임시로 사용하기 바람.
조교가 임의로 함수 변경해도 결과가 제대로 나와야 함.

double
GivenFunction(double x)
{
return (exp(-x*x/2.0));
}

기말고사의 Pseudo-Code 참조하세요.

NA_HW12_SN2002711158.tar.gz (1.1 KB)

입력값 lowerLimit, upperLimit, nSegment을
입력받아서 [lowerLimit, upperLimit] 구간을
nSegment 등분하여 분할된 구간에서 Simpson's 1/3 rule과
Simpson's 3/8 rule에 기반한 C 프로그램을 작성하여 제출하세요.

함수명: SimpsonIntegration(lowerLimit, upperLimit, nSegment)

교재에서 a가 lowerLimit, b가 upperLimit에 해당함.

GivenFunction(x)는 임의의 함수에 대해 성립하도록 프로그램하되
아래의 코드를 임시로 사용하기 바람.
조교가 임의로 함수 변경해도 결과가 제대로 나와야 함.

double
GivenFunction(double x)
{
return (exp(-x*x/2.0));
}

기말고사의 Pseudo-Code 참조하세요.
nSegment가 홀수 또는 짝수임에 따라 Simpson's 3/8 rule을
사용할 지 여부를 결정하고, 적분값을 계산하세요.

NA_HW13_SN2002711158.tar.gz (2.7 KB)

임의의 함수 GivenFunction(x)가 주어질 경우에
입력값 lowerLimit, upperLimit, nPoint을
입력받아서 [lowerLimit, upperLimit] 구간을
적분값을 Gauss-Legendre Quadrature에 기반하여 구하는
C 프로그램을 작성하여 제출하세요.

함수명: GaussQuadrature(lowerLimit, upperLimit, nPoint)

교재에서 a가 lowerLimit, b가 upperLimit에 해당함.
nPoint는 공지사항에 있는 참고자료의 n과 동일하며
입력값의 범위는 2, 3, 4, ..., 16까지이다.

GivenFunction(x)는 임의의 함수에 대해 성립하도록 프로그램하되
아래의 코드를 임시로 사용하기 바람.
조교가 임의로 함수 변경해도 결과가 제대로 나와야 함.

double
GivenFunction(double x)
{
return (exp(-x*x/2.0));
}


모든 과제 제출이 끝나서 오픈!!!
나 열심히 한거 같은데 성적은 왜 이렇게 안좋지;;; -.ㅡ;
| 이 포스트에 대한 이용규약 |
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 라이센스 에 따라 이용하실 수 있습니다.
This work is licensed under a Creative Commons Attribution 2.0 Korea LicenseLink in a new window.

| 이 글과 태그로 연관된 글 |

| 트랙백 |
트랙백 주소 :: https://www.ohyung.net/rserver.php?mode=tb&sl=484