오일러법 입문
오일러법이란?
오일러법은 컴퓨터에서 상미분 방정식을 푸는 방법입니다.
그렇다면 구체적으로 어떤 식으로 상미분 방정식을 풀 수 있습니까? 먼저 $\frac{dy}{dx} = f(x, y)$ 의 형태로 합니다. 먼저 초기값 $(x_0, y_0)$를 설정합니다. 다음의 점화식을 사용해 순차적으로 $ (x_n, y_n) $를 구해 갑니다.
\left\{
\begin{array}{l}
x_{n+1} = x_n + dx \\
y_{n+1} = y_n + f(x_n, y_n) dx
\end{array}
\right.
이것이 오일러 방법입니다.
소스 코드 및 실행 결과
소스 코드
$\frac{dy}{dx} = 2 x $의 해를 구하는 프로그램입니다. 출력 결과를 CSV로 저장할 수 있습니다.
euler.c#include <stdio.h>
#include <math.h>
#define EPS (__builtin_pow(2.0, __builtin_floor(__builtin_log2(1.0e-6))))
#define f(x,y) (2*( x))
int main(){
double x = 0, y = 0;
while(x < 2){
printf("%f, %f \n", x, y);
y += f(x, y) * EPS;
x += EPS;
}
}
실행 결과
이 프로그램의 실행 결과는 $y=x^2$에 가까운 값을 가져야 합니다. 이 프로그램의 실행 결과를 CSV로 그래프로 해 보았습니다.
Reference
이 문제에 관하여(오일러법 입문), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/stmtk/items/242aab16d7b037d7281e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
\left\{
\begin{array}{l}
x_{n+1} = x_n + dx \\
y_{n+1} = y_n + f(x_n, y_n) dx
\end{array}
\right.
소스 코드
$\frac{dy}{dx} = 2 x $의 해를 구하는 프로그램입니다. 출력 결과를 CSV로 저장할 수 있습니다.
euler.c
#include <stdio.h>
#include <math.h>
#define EPS (__builtin_pow(2.0, __builtin_floor(__builtin_log2(1.0e-6))))
#define f(x,y) (2*( x))
int main(){
double x = 0, y = 0;
while(x < 2){
printf("%f, %f \n", x, y);
y += f(x, y) * EPS;
x += EPS;
}
}
실행 결과
이 프로그램의 실행 결과는 $y=x^2$에 가까운 값을 가져야 합니다. 이 프로그램의 실행 결과를 CSV로 그래프로 해 보았습니다.
Reference
이 문제에 관하여(오일러법 입문), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/stmtk/items/242aab16d7b037d7281e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)