C中高斯方程分段故障的未知原因



我目前正在制作一个近似Schroedinger方程的程序,对于我的初始条件,我的教授说从高斯开始。我使用的公式是这样的(抱歉,我不知道如何在降价中计算方程(:

p(x(=(1/sqrt(2*PI((*e^(-1/2*(x-u(^2/o(

为了简化起见,我从u=0和o=1开始,所以我在程序中使用它的方式是这样的:

double gaussian(double x) {
return (1/sqrt(2*M_PI)) * exp((-.5) * pow(x, 2));
}
void initial_conditions(int m, complex *values[], double dx) {
for (size_t i = 0; i < m; i++)
{
values[i]->real = gaussian(i * dx);
}
}

编译单位:gcc project1.c-lm-o project1

但每次我运行它时,它都会产生一个segfault。据我所知,它应该会起作用,但我对C有点新手。我已经确定,正是这个等式通过使用printf语句来缩小错误的位置,从而产生了错误,它总是到达特定的整个公式和return语句,然后就死了。

如有任何建议或帮助,我们将不胜感激。

complex *values[]是怪异和不自然的。我看不到调用,但我已经说服自己,这真的应该是complex values[]

complex太简单了,不想在堆上单独分配每个;几乎总是在对CCD_ 5的单个调用中分配CCD_。

从名称开始,我可以非常自信地预测,调用代码没有在values中分配每个单独的complex,而是只分配了values,因此崩溃的原因是values[i]->realvalues[i]处的->取消引用未初始化。这就像你想要(结转单个阵列(values[i].real = ... ; values[i].imag = 0;

相关内容

  • 没有找到相关文章

最新更新