AiPE

[Python] 수치해석학에 대한 기초 이해 Understanding the Basics of Numerical Analysis 본문

[XiBBaL] Development Project/Etc.

[Python] 수치해석학에 대한 기초 이해 Understanding the Basics of Numerical Analysis

Oshimaker XiBBaL 2022. 12. 1. 15:47
반응형

2021년 말인지 2022년 초인지 고등학교 수학선생님께 권유받아서 작성해본 약간의 보고서 비슷한거다.

수치해석학이 무엇인지, 어떤 방식으로 실생활에 적용되는지, Python으로 구현할 수 있는 방식에는 어떤 종류가 있는지를 다룬다. 마지막에는 소개한 방법들로 실제 함수를 근사해보았다.

 

이것도 한글파일로 된 보고서에서 긁어온 거라 말이 재미없을 수 있다. 그래도 뭔가 설명하는 말투이긴 하니까 냅두자. 고치기는 귀찮다. 어차피 웃자고 쓴 글이 아니라서 상관없다.

 

 

 

 

 

. 수치해석학과 그 필요성

수치해석학(numerical analysis)이란 어떠한 함수나 방정식의 해를 컴퓨터를 이용해 수치적으로 근사해서 구하는 알고리즘에 대한 연구를 하는 학문이다. 여기에서의 알고리즘은 컴퓨터 알고리즘 뿐 아니라 이를 위한 수단적인 모든 방법을 의미한다.

 

일반적인 계산에서는 수식의 정리를 통해 완벽한 해를 계산하지만, 현대 수학에서는 복잡하며 컴퓨터를 사용해야만 풀 수 있는 문제를 푸는 경우가 대부분이기 때문에, 이를 수치적으로 접근하여 참값과 완전히 같지는 않지만 참값에 근접한 값을 도출하는 방법론을 사용하게 된다. 이것이 바로 수치해석학의 근간이다.

 

수치해석학에서 다루는 세부 주제는 다음과 같다.

 

회귀 분석, 수치적 적분, 일반 방정식과 미분방정식의 수치해 계산,
행렬의 수치적 계산(수치 선형대수학)

 

수치해석학은 미분방정식과 선형대수의 일정 수준까지의 지식이 필요하다. 수치해석학의 상당 부분이 미분방정식을 푸는 데에 집중되어 있을 뿐 아니라 많은 수치해석 알고리즘이 마지막에 선형대수를 사용하기 때문이다. 높은 수준의 수치해석학에서는 푸리에변환과 해석학을 사용하는 경우 또한 많다고 한다. 테일러급수 또한 비슷한 결을 따르는데, 이는 분리하여 <테일러 정리에 대한 기초 이해> 문서에서 따로 다루었다.

 

수치해석을 통한 근사를 사용하는 문제의 예시를 한 번 들어 보자. 대부분의 미분방정식의 경우 사람의 손으로 푸는 것이 불가능하다. 예를 들어보자.

 

텅 빈 공간에 불규칙적이고 복잡한 전도체가 있고 거기에 의 전압을 걸었다고 하자. 그러면 그 전도체의 안팎에서 어떤 특정한 미분방정식을 따르는 전자기장이 형성된다. 이 미분방정식에 적절한 경계 조건이 주어진다면 해가 존재하는데, 경계 조건의 복잡성 때문에 정확한 해를 손으로 구하는 것은 불가능하다. 설령 가능하다 하더라도 엄청난 시간이 소요되기 때문에 사실상 불가능으로 취급해야 한다.

 

위와 같은 경우, 우리는 수치해석을 통해 컴퓨터로 빠르게 근을 찾는다.

 

 

 

 

 

. 방정식의 단순화와 오차 판별

수치해석에서는 방정식의 형태에 따라 연산하는데 걸리는 시간이 상당히 차이 날 수 있기 때문에, 더욱 빠르고 합리적인 계산을 위해 문제를 풀기 쉽게 바꾸는 것이 중요해진다. 수치해석에서 자주 쓰이는 유한요소법(Finite Element Method)은 이러한 기법 중 하나이다.

 

유한효소해석이란?
편미분방장식을 푸는 근사 해법의 한 종류이다. Test Function(편미분 방정식을 약형식으로 만들기 위해 사용)Trial Function(편미분 방정식을 실제로 근사하는 역할)을 사용해 적분형 범함수를 구성한 뒤, 범함수가 극값을 갖게 만드는 Trial Function의 계수를 찾아 근사해를 찾는다.
이 과정에서, 연속적인 공간을 유한개의 요소로 나누게 되고, 최종적으로 편미분방정식을 여러 개의 연립방정식으로 하여 각 요소에 대한 근사해를 찾게 된다.

 

공간을 조각조각 나눔으로써 상황을 단순화 시키고 그 단순화된 상황을 분석해서 근사적인 방정식의 해를 얻을 수 있다.

 

수치해석은 거의 정확하지만 완벽하지는 않기 때문에 수치해석으로 나온 결과물이 얼마나 정확한지 파악하는 것이 매우 중요하다.

이때, 컴퓨터에서 수를 표현하는 방법 자체의 문제가 점점 쌓여 큰 오차로 증가할 수도 있기 때문에 이를 잘 통제해야 한다.

 
 

 

 
 

. 수학과에서의 수치해석학

수학과의 기초를 형성하는 논리적이고 추상적인 수학의 범주에서는 해는 존재한다라는 존재성과 유일성이 중요했다면, 수치해석은 알겠고 그 값이 얼마인가?’라는 관점에서 접근한다는 것에서 차이가 있다. , 애초에 과목 자체가 다른 여타 수학과의 과목과는 다르다고 할 수 있다.

 

하지만 수학과에서의 수치해석학은 공과대학의 수치해석학과는 차이가 존재한다. 수학과에서의 수치해석학은 말 그대로 수치를 해석하는 원리와 수학적인 알고리즘에 대해 탐구한다. 이러한 과정에서, 수학과 연구원들은 공과대학에서 코드를 작성하는 데에 근간이 되는 원리그 자체를 연구하고 개발한다. 이러한 수학과에서의 수치해석학은 수치에 중점을 두는 경우와 해석에 중점을 두는 경우 두 가지 경우로 분류할 수 있다.

 

수치에 중점을 두는 경우 타 수학과목에서 추상적으로 다뤄온 이론을 실제적으로 가져오는 수단을 다룬다. 행렬 등의 계산을 빠르게 하고 근사값을 계산해내는 것을 목표로 한다.
해석에 중점을 두는 경우 해석학적으로 알고리즘을 분석해본다는 의미. 예를 들어 뉴턴-랩슨 방법에서는 근사적인 해를 계속 구하여 수열을 만들어내는데, 이 수열이 방정식의 해로 수렴하면 알고리즘이 극한에서 방정식의 해를 구하는 올바른 방법이 된다고 할 수 있다.


해석에 중점을 두는 수치해석학 알고리즘은 다음과 같은 질문에 대한 답을 구한다.



 

 

 

 

 

. 공과대학에서의 수치해석학

공과대학에서는 수학의 원리에 따른 추상성을 증명하기보다는 현실적인 해를 찾는 것이 더 중요하다. , 실질적인 방정식과 함수의 실질적인 활용을 위해 값을 찾아내는 것에 목표를 두는 것이다. 공과대학에서는 수학과에서 연구해놓은 원리에 따라 컴퓨터가 가장 계산하기에 적합한 알고리즘을 구성해 실제 코드를 작성한다.

수치 해석은 공학도들이 계속 다루게 될 여러 소프트웨어의 바탕이 되기 때문에 대학 수업에서도 MATLAB을 이용한 수치해석 프로그래밍을 접하게 된다. MATLAB을 사용할 수 없는 경우, 공학용 계산기에라도 프로그래밍을 해서라도 사용한다고 한다.

 

공과대학에서 가장 자주 쓰이는 수치해석 방법은 미분방정식을 풀 때 사용하는 4차 룽게-쿠타(Runge-Kutta) 방법(줄여서 RK4)일 것이다. 룽게-쿠타 방법에는 다음과 같은 종류가 있다.

 

방식명 특징
오일러 방법
(=1차 룽게-쿠타 (RK1))
수치해석의 가장 기본을 이루는 방법. 나머지 방법들은 기본적으로 이 방법에서 파생된 것이다. 하지만 오일러 방법 자체는 정확도가 낮아 잘 쓰이지 않는다.
개조 오일러 방법
(=2차 룽게-쿠타 (RK2))
RK4에 비해 정확도가 낮지만 빠른 속도를 보장한다.
4차 룽게-쿠타 (RK4) 가장 많은 분야에서 폭넓게 사용된다. 비교적 정확도가 높고, 단순진동하는 삼각함수등에도 무한대로 발산할 염려가 적다. 일반적인 노트북의 계산 능력으로 어느 정도 사용할 수 있다.
8차 룽게-쿠타 (RK8) 항공/우주분야에서 사용한다고 알려져 있지만, 실제로는 거의 사용하지 않는다. 항공/우주분야에서도 대부분은 RK4를 사용한다.
9차 룽게-쿠타 (RK9)

*오일러 방법과 개조 오일러 방법에 RK1, RK2라는 별칭이 주어진 것은 RK4가 고안되고 나서이다. RK44차로 기울기를 구한 알고리즘이니, 1, 2번 구한 방법들은 각각 RK1, RK2라고 부르겠다는 것. 따라서 각 방법들의 정확한 이름은 오일러 방법과 개조 오일러 방법이다.

 

이제 룽게-쿠타 방법들에 대해 자세히 살펴보도록 하겠다. 룽게-쿠타 방법들은 미분방정식을 풀 때 사용되는 대표적인 수치해석 방법들로, 오릴러 방법 (Euler’s method), 개조 오일러 방법 (modified Euler’s method), RK4 등이 있다. 초기 조건이 주어졌다면, 작은 시간 구간 \(h\)를 사용해서 \((t _{n+1} =t _{n} +h)\)의 값을 '어림'하는데에 중점을 둔다.

 초기조건이  \(y(t _{0} )=y _{0}\)인 어떤 함수 \(y(t)\)에 대해 \(y prime  =f(t,y)\)꼴의 미분방정식을 예로 들어 몇 가지 예시를 설명하고자 한다. 

 

 

1. 오일러 방법

 

2023-02-02 작성중 ...

 

 

반응형