私が作成したものではないコードがあります。この複雑なコードでは、量 d(x) を計算するために多くのルールが適用されています。コードでは、それを計算するためにポインターが使用されています。
次のような積分を計算したい: W= Int_0 ^L d(x) dx ?
私はこれをやっています:
#define DX 0.003
void WORK(double *d, double *W)
{
double INTE5=0.0;
int N_X_POINTS=333;
double h=((d[N_X_POINTS]-d[0])/N_X_POINTS);
W[0]=W[0]+((h/2)*(d[1]+2.0*d[0]+d[N_X_POINTS-1])); /*BC*/
for (i=1;i<N_X_POINTS-1;i++)
{
W[i]=W[i]+((h/2)*(d[0]+2*d[i]+d[N_X_POINTS]))*DX;
INTE5+=W[i];
}
W[N_X_POINTS-1]=W[N_X_POINTS-1]+((h/2)*(d[0]+2.0*d[N_X_POINTS-1]+d[N_X_POINTS-2])); /*BC*/
}
そして、「セグメンテーション違反」が発生しています。私はWをポインタとして計算するのが正しいのか、それとも単純なdoubleとして宣言すべきなのか知りたいと思っていましたか?これにはセグメンテーション違反が発生していると思います。
他の点、台形則を正しく使用していますか?
どんな助け/ヒントも、とても感謝します。
ルイス