数値解析に関する質問です。
/*kadai8 Euler’s Method
for Ordinary Differential Equation
*/
#include <stdio.h>
void euler(double *, double *);
main ()
{
int i;
double v,t,tt,dt[5];
dt[0] = 2;
dt[1] = 1;
dt[2] = 0.1;
dt[3] = 0.01;
dt[4] = 0.001;
printf("Program of Euler`s Method 1\n");
printf("-----------------------------------------\n");
tt = 50.0/9.80665;
printf("Theoretical Solution : %lfs\n",tt);
for(i=0;i<=4;i++){
printf("--------------------------------\n");
printf("Step Size : %lf s\n",dt[i]);
v=50.0;
t=0.0;
while(v>0)
{
euler(&v,&dt[i]);
t=t+dt[i];
}
printf("Numerical Solution : %lf s\n",t);
printf("Error : %lf s\n",t-tt);
}
return(0);
}
/*--------------*/
void euler(double *v,double *dt)
{
*v=*v + (*dt )*(-9.80665);
}
以上のプログラムで関数eulerの引数にポインタがついているのはなぜか,またポインタを使用しない方法はないか?また、オイラー法より精度の高い解法はありますか?
よろしくお願いします。