ルンゲクッタのプロクラム実行できません
プログラムの実行ができません。
どこを直したらよいのか教えて下さい。
よろしくお願いします。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double *dvector(long i,long j);
void free_dvector(double *a,long i);
double func(double x,double y);
double *rk4(double y0,double a,double b, int n,double(*f)());
int main(void)
{
double *y,h,a=0.0, b=1.0, y0=1.0;
int i,n;
printf("分割数を入力して下さい------->");
scanf("%d",&n);
y=dvector(0,n);
y=rk4(y0,a,b,n,func);
h=(b-a)/n;
for(i=0;i<=n;i++)
{
printf("x=%f \t y=%f \n",a+i*h,y[i]);
}
return 0;
}
double *rk4(double y0,double a, double b,int n,double (*f)())
{
double k1,k2,k3,k4,h,*y,x;
int i;
y=dvector(0,n);
h=(b-a)/n;
y[0]=y0;
x=a;
for(i=0;i<n;i++)
{
k1=f(x,y[i]);
k2=f(x+h/2.0,y[i]+h*k1/2.0);
k3=f(x+h/2.0,y[i]+h*k2/2.0);
k4=f(x+h,y[i]+h*k3);
y[i+1]=y[i]+h/6.0*(k1+2.0*k2+2.0*k3+k4);
x +=h;
}
return y;
free_dvector(y,0);
}