我有一个代码,不是我制作的。在这个复杂的代码中,应用了许多规则来计算数量 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 计算为指针时做得对,还是应该将其声明为简单的双精度数?我想分段错误即将到来。
另一点,我是否正确使用了梯形规则?
任何帮助/提示,将不胜感激。
路易斯