オイラー法による近似解 | spin on the RITZ

オイラー法による近似解



くわしくはこちら、数値解析2第4回


もともとは、宿題片付けますスレのスルーされていた問題をやろうと思ってたんですが、ちょうどいい具合に上の資料がみつかったんでためしにプログラミングしてみる事に。
上のグラフは自分の結果で、リンク先の結果とまぁ、多分一緒なんじゃないかなぁ・・・・・と^^;
y'' + sin(x) = 0
って2階常微分方程式の数値解析みたいです

こういう数値解析的な勉強はしてないからなぁ~
多分もうすぐやらなくちゃいけないんだと思う。
メンドクサイなぁ・・・・・・・


あ、ソースおいておこ

以下ソース

//////////////////////////////////////////////////
//
// 連立微分方程式のオイラー法による近似解の導出
//
// d^2y/dx^2 + sin(x) = 0
//
//////////////////////////////////////////////////

#include <stdio.h>
#include <math.h>

int main(void)
{
double yk, zk, tmp;
double h;
int i;
FILE *o_file = fopen("output.csv","w");

yk = 0.0;
zk = 0.001;
h = 0.5;

for (i = 0;i < 36;i++) {
printf("y%-2d = %10.10f\tz%-2d = %10.10f\n", i, yk, i, zk);
fprintf(o_file ,"%d,%f,%f,%f\n", i, h*i, yk, zk);
tmp = yk;
yk = yk + h * zk;
zk = zk - h * sin(tmp);
}

fclose(o_file);

return 0;
}


output.csvに
k、h*k、yk、zkの順番にコンマで区切って出力します。