4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

stmtkAdvent Calendar 2017

Day 5

オイラー法入門

Last updated at Posted at 2018-01-01

オイラー法とは

オイラー法はコンピューター上でで常微分方程式を解くための手法です。
では、具体的にどういう風に常微分方程式を解くのでしょうか?まず、$ \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.

a.png

これが、オイラー法です。

ソースコードと実行結果

ソースコード

$ \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にしてグラフにしてみました

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?