• ベストアンサー

ルンゲクッタのプロクラム実行できません

プログラムの実行ができません。 どこを直したらよいのか教えて下さい。 よろしくお願いします。 #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); }

質問者が選んだベストアンサー

  • ベストアンサー
  • FAY
  • ベストアンサー率49% (95/193)
回答No.3

ネット上で見つけたー。 double *dvector(long i, long j) /* a[i]~a[i+j]の領域を確保 */ { double *a; if ( (a=(double *)malloc( ((j-i+1)*sizeof(double))) ) == NULL ) { printf("メモリが確保できません(from dvector) \n"); exit(1); } return(a-i); } double func(double x, double y) { return( x + y ); } を追加すれば動くんじゃない? http://www.ma.is.saga-u.ac.jp/minamoto/book/book8/program/chap2/program29.c http://www.ma.is.saga-u.ac.jp/minamoto/book/book8/program/chap8/program84.c

nickname61
質問者

お礼

ありがとうございます。動きました

その他の回答 (2)

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.2

がると申します。 とりあえず単純なコンパイルエラーが出ますので、そこを直してからではないでしょうか? # それ以外にも問題点山積みなコードですが…… もし「どうやってコンパイルエラーを取ったらいいのかわからない」のであれば、せめても、コンパイルして、エラーメッセージ貼り付けて、自分なりの考察を書いて、くらいはしておいたほうがよいと思います。

  • ddnp009
  • ベストアンサー率25% (15/58)
回答No.1

>プログラムの実行ができません。 なぜ?コンパイルエラー?リンクエラー? そもそもコンパイラはあるの? >どこを直したらよいのか教えて下さい。 まず質問の要領を改めてください。 次に、このような質問を無視しない親切な回答者に感謝してください。 どこが悪かったのかを知る機会は滅多にない。 もし環境面の問題ではないとすると、 原因はおそらく定義がないことによるリンクエラー。 提示されたプログラムに文法の誤りはない。 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)()); 定義って何?というレベルなら入門書を読んでください。

関連するQ&A