(1)
において座標点を考え、におけるを求めたいとします。hは微小な値とします。そこでテイラー展開
(2)
を用いて式(1)と(2)からhの1次までの項を考えるとすると
(3)
という形の式が導けます。この式を利用して数値計算を行っていきますが、テイラー展開の1次までしかとってないので誤差が大きく精度が低いです。#include <stdio.h> double f1(double t,double x,double v); double f2(double t,double x,double v); int main() { double x,v,t,dt,tmax; double k0[2]; FILE *output; output=fopen("output.data","w"); /*初期値*/ x=1.0; v=0.0; dt=0.01; tmax=100; for(t=0.0;t<=tmax;t+=dt) { k0[0]=dt*f1(t,x,v); k0[1]=dt*f2(t,x,v); x=x+k0[0]; v=v+k0[1]; fprintf(output,"%f %f %f\n",t,x,v); } fclose(output); return 0; } double f1(double t,double x,double v) { return v; } double f2(double t,double x,double v) { return (-x); }