数値解析のアルゴリズム Total《 - 》
数値解析の授業でオイラー法を知ったのでプログラミングしてみた!
<stdio.h>
<time.h>
<math.h>
#define
N 100000000 //分割数・・・配列決定のためマクロ!!
double x_value[N]; //x(t)用の配列
double end_value; //求めたいt
double h; //刻み幅
double con; //定数
clock_t start,end; //計測用
void calc_bibun(void);
void calc_shin(void);
int main(void){
//イニシャライズ
x_value[0]=0; //初期値
end_value=1; //計算するtの値
h=end_value/(int)N; //刻み幅計算
con=(x_value[0]+0.25); //定数計算
printf("刻み幅・・・・・・・%.20lf\n",h);
calc_shin();
calc_bibun();
printf("何かキーを押してください・・・\n");
getchar();
return 0;
}
void calc_bibun(void){
int i;
start=clock();//calc_start
for(i=1;i<=N-1;i++){
x_value[i]=x_value[i-1]+(-2*x_value[i-1]+(h*(i-1)))*h;
}
end=clock();//calc_end
printf("オイラー法・・・%.20lf\n",x_value[N-1]);
printf("処理時間:%d[ms]\n",end-start );
}
void calc_shin(void){
double x_shin;
x_shin=con*exp(-2*end_value)+(end_value-0.5)/2;
printf("理論値・・・・・・・%.20lf\n",x_shin);
}
最終更新:2010年08月07日 09:19