プログラム8.2
#include <stdio.h>
/* 関数の定義 */
double func(double x, double y);
/* ホイン法 */
void heun(double x, double y, double a, double b, int n,
double (*f)(double, double) );
int main(void)
{
int n;
printf("分割数を入力してください--->");
scanf("%d",&n);
heun( 0.0, 1.0, 0.0, 1.0, n, func );
return 0;
}
/* ホイン法 */
void heun(double x, double y, double a, double b, int n,
double (*f)(double, double) )
{
double k1, k2, h;
int i;
h = (b-a)/n;
for ( i = 0 ; i < n ; i++)
{
k1 = f(x,y); k2 = f(x+h, y+h*k1);
y = y + h/2.0 * ( k1 + k2 );
x += h;
printf("x=%f \t y=%f \n", x, y );
}
}
/* 関数の定義 */
double func(double x, double y)
{
return( x + y );
}