gpt4 book ai didi

C中的累积和正在爆炸到无穷大

转载 作者:太空宇宙 更新时间:2023-11-04 05:48:12 24 4
gpt4 key购买 nike

我通常是 R 用户,但我正在尝试使用 C 来进行一些较低级别的累积和和乘法运算。

我正在尝试生成 eta 的累加和并将结果存储在 tmp0 中。但是,当我输出 tmp0 时,它会给我 Inf、NaN 或一些任意大的数字。我在 R 中仔细检查了相同的累积和,它工作正常;我不确定为什么 C 不处理它。下面是我正在使用的代码:

   int i,j;
const int p = ncov, n = nin;
double accNum0[n]; //accumulate first part of likelihood sum eta_i
double accNum1[n]; //accumulate the backwards numerator
double accNum2[n]; //acumulate the forward numerator (weighted)
double tmp0 = 0;

double eta[n]; //calculate linear predictor in this step (X %*% beta)
for(i = 0; i < n; i++) {
for (j = 0; j < p; j++)
eta[i] += b[j] * x[n * j + i];
}

for (i = 0; i < n; ++i) {
tmp0 += eta[i];
}

return (tmp0);

同样,我对 C 语言还很陌生,所以我可能会犯一些新手错误,非常感谢任何(和所有)建议!

最佳答案

您初始化 bx 的方式可能有误。但是,一个明确的错误是 eta 未初始化就被使用。这意味着 eta[i] 可能以某个任意值开头,而不是您可能期望的 0

在累加之前添加一个初始化。

  for(i = 0; i < n; i++) {
eta[i] = 0;
for (j = 0; j < p; j++)
eta[i] += b[j] * x[n * j + i];
}

关于C中的累积和正在爆炸到无穷大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53843568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com