24小时热门版块排行榜    

CyRhmU.jpeg
查看: 521  |  回复: 8
当前主题已经存档。

cll3380

木虫 (著名写手)

[交流] 【求助】请教,C语言中pow(x,y)函数对幂指数的类型有限制吗?

如题,最近算个程序,当调用pow()函数时,当幂指数取0.0时输出正常,但是当幂指数取0.6时输出全是0,不知道为什么?
请问会不会是与C语言中pow()函数原代码中幂指数的类型有限制呢?
希望大家指点迷津,或者是因为别的问题,谢谢!!!

[ Last edited by cadick on 2009-12-11 at 02:49 ]
回复此楼
事在人为
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wgpig

木虫 (小有名气)

★ ★
mingdong(金币+1,VIP+0):感谢交流! 10-10 11:01
cll3380(金币+1,VIP+0):谢谢,不过我就是找不到代码哦! 10-12 10:41
无。贴代码看看。
2楼2009-10-09 22:32:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cll3380

木虫 (著名写手)

我附上了我的程序,见附件。
程序中a值表示指数,我试了一下,当a取0.6,1.0或者1.5时,输出都一样的。感觉很奇怪,应该不会是这样的,但是不知道问题在哪。会的话帮我看看,不会没关系,再次谢谢!!!!
事在人为
3楼2009-10-12 10:48:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wgpig

木虫 (小有名气)

★ ★
cll3380(金币+1,VIP+0):谢谢!! 10-12 22:08
mingdong(金币+1,VIP+0):感谢交流! 10-13 13:17
改为显式浮点数输出。
4楼2009-10-12 16:18:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cll3380

木虫 (著名写手)

不知道是我理解错误还是什么原因,算的虽然一样。
你能按你的意思把程序改掉再发给我吗?谢谢!!
不对也没有关系,交流交流!!
事在人为
5楼2009-10-12 22:10:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

scuccc

金虫 (正式写手)

★ ★ ★
mingdong(金币+1,VIP+0):感谢交流! 10-13 13:17
cll3380(金币+2,VIP+0):问题解决,非常非常感谢!!! 10-14 09:32
开始时是如何定义数据类型的,看是不是不符
6楼2009-10-13 12:10:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wgpig

木虫 (小有名气)

★ ★ ★ ★
mingdong(金币+2,VIP+0):感谢交流! 10-13 17:31
cll3380(金币+2,VIP+0):问题解决,非常非常感谢!!! 10-14 09:32
$ cat test.cpp
#include
#include
#include
#include
#include
#include "fstream.h"
//变量及函数的预定义--------------------------------------------------------------------------
const int m=500,n=70000;
const double pi=3.1415926;
double xx,x[n+2],noise1[n+2];
double stren1=0.1,tau1=1.0;
double a=0.6,h=0.001;

double g1(double xx)
{
        return pow(fabs(xx),a);
}

//产生0-1均匀分布的随机数---------------------------------------------------------------------
static double r[98];
static int iff,ix1,ix2,ix3;
double ran(int &idum)
{
        const int ia=16807,im=2147483647,iq=127773,ir=2836,ntab=32;
        const int ndiv=(1+(im-1)/ntab);
        const double eps=3.0e-16,am=1.0/im,rnmx=(1.0-eps);
        static int iy=0;
        static int iv[ntab];
        int j,k;
        double temp;
        if (idum<=0||!iy)
        {
                if (-idum<1) idum=1;
                else idum=-idum;
                for(j=ntab+7;j>=0;j--)
                {
                        k=idum/iq;
                        idum=ia*(idum-k*iq)-ir*k;
                        if(idum<0) idum+=im;
                        if(j                 }
                iy=iv[0];
        }
        k=idum/iq;
        idum=ia*(idum-k*iq)-ir*k;
        if(idum<0) idum+=im;
        j=iy/ndiv;
        iy=iv[j];
        iv[j]=idum;
        if ((temp=am*iy)>rnmx) return rnmx;
        else return temp;
}
//主程序--------------------------------------------------------------------------------------
ofstream xzuob("x1.txt",yzuob("y1.txt";
int main()
{
        double gw_noise1,gw_noisea,cum[n+2];
        int i,j;
        int idum=-13;
        for(i=1;i<=n;i++)  
        {
                cum=0.0;
        }
    for(j=1;j<=m;j++)
   
        {        x[1]=0.1,noise1[1]=0.0;
                        for(i=1;i<=n;i++)
                        {
                                double y1,y2;
                                y1=ran(idum);
                                y2=ran(idum);
                            gw_noise1=sqrt(-4.0*log(y1))*cos(2.0*pi*y2);
                                gw_noisea=sqrt(stren1*h)*gw_noise1;
                    x[i+1]=x+g1(x)*noise1*h;
                                noise1[i+1]=noise1-noise1/tau1*h+gw_noisea/tau1;
              
                                cum=cum+x*x/m;
                               
                        }
        }
                       
        for(i=1;i<=n;i++)
         {            
        xzuob<         yzuob<<          }
return 0;
}
7楼2009-10-13 13:50:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wgpig

木虫 (小有名气)

★ ★
cll3380(金币+2,VIP+0):问题解决,非常非常感谢!!! 10-14 09:33
这个全局变量定义的....
8楼2009-10-13 13:53:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wgpig

木虫 (小有名气)

★ ★ ★ ★
mingdong(金币+2,VIP+0):感谢交流! 10-13 17:32
cll3380(金币+2,VIP+0):问题解决,非常非常感谢!!! 10-14 09:32
粗略看是隐式输出的问题。其实真正的问题在这里。

pow(abs(xx),a); ====>  pow(fabs(xx),a);
9楼2009-10-13 13:55:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 cll3380 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见