首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有输入变量的函数返回-nan和-inf

带有输入变量的函数返回-nan和-inf
EN

Stack Overflow用户
提问于 2018-02-12 20:59:33
回答 1查看 122关注 0票数 0

所以我需要很多不同的表文件,并决定尝试用C来创建它们。代码通常会做它应该做的事情,但我在2.和3. cloumns中得到了-nan和-inf (4-7行得很好)。

4.0000000000e-02 -nan -inf

4.2000000000e-02 -nan -inf

4.4000000000e-02 -nan -inf

这些列中的值来自具有输入变量的函数,因此我可能在定义它们时犯了错误。由于这是我用C语言做的第一件事,我确信我犯了一个非常愚蠢的错误,所以提前谢谢你。

以下是代码

代码语言:javascript
复制
#include <stdio.h>
#include <math.h>

main()
{

    FILE    *fout;
    double e,o,k,c,r;

    printf("Define the relative dielectric constant:\n");
    scanf("%d",&e);

    printf("Define the cutoff radius:\n");
    scanf("%d",&o);

    k = (78-e)/(pow(o,3)*(156+e));
    c = (1/o)+k*pow(o,2);

    fout = fopen("table_XX_XX.xvg", "w");
    fprintf(fout, "#\n# Tabulated Potential for AA-AA Interactions\n#\n");

    for (r=0; r<=3; r+=0.002) {

        double f = ((1/r)+k*pow(r,2)-c)/e;
        double fprime = (pow(r,-2)-2*k*r)/e;

        double g = -1/(pow(r,6));
        double gprime = -6/(pow(r,7));

        double h = 1/(pow(r,12));
        double hprime = 12/(pow(r,13));

        /* print output */
        if (r<0.04) {
            fprintf(fout, "%12.10e   %12.10e %12.10e   %12.10e %12.10e   %12.10e %12.10e\n", r,0.0,0.0,0.0,0.0,0.0,0.0);
        } else {
            fprintf(fout, "%12.10e   %12.10e %12.10e   %12.10e %12.10e   %12.10e %12.10e\n", r,f,fprime,g,gprime,h,hprime);
        }
    }

    fclose(fout);
    return(0);
}
EN

回答 1

Stack Overflow用户

发布于 2018-02-12 21:20:00

As 、、`+/-inf或nan是通过如下操作生成的:

1/0 =∞

log (0) = -∞

sqrt (-1) = NaN

在使用比率和/或指数运算时,应始终在代码中包含检查,以排除异常值,使其不被此类运算处理。

遍历代码中生成infnan值的部分,确定如何为比率或函数分配不正确的值,并解决它们。(例如,通过用非法值的测试包围这段代码,并设置一个条件,以便在出现这样的值时绕过操作。)

请记住接受和使用+/-∞NaN的值之间的区别。

在使用它们时,基本的操作和数学函数都接受NaN并产生合理的输出。但是,正如预期的那样,∞通过计算进行传播:例如,2 + ∞ = ∞;4/∞; = 0atan (∞) = pi;/2

另一方面,NaN会影响涉及到它的任何计算。除非无论用什么实值替换NaN,计算都会产生相同的结果,否则结果是NaN。(改编自上面的第二个链接)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48747113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档