24小时热门版块排行榜    

查看: 1172  |  回复: 4

射天狼yjx

新虫 (初入文坛)

[求助] 关于erfinv函数调用错误的问题

在 for 语句中调用erfinv函数,程序如下:

N=0; X_sum=0.0; Y_sum=0.0; X2_sum=0.0; XY_sum=0.0;
       for d=0.001:dp_step:dp_max1+0.001;
              N=N+1; dx=log10(d);
              X_sum=X_sum+dx; X2_sum=X2_sum+dx*dx;
              y_erf=2*Derf_2(N)-1;
                     if abs(abs(y_erf)-1)<=0.00001;
                         y_erf=y_erf/abs(y_erf)*0.99999;
                     end
             dy=erfinv(y_erf);
             Y_sum=Y_sum+dy;
             XY_sum=XY_sum+dx*dy;
       end

运行过程中出错提示如下

??? Error using ==> erfinv
Y must be real.

Error in ==> LC3 at 118
dy=erfinv(y_erf);

需要说明的两个情况:
1. 我所编写的程序是根据一个参考程序改写的。整体程序结构与参考程序相同,只是更换了部分函数的表达式。参考程序中也包含上述调用erfinv函数的程序,赋相同初值的情况下,参考程序运行无误,改写程序出现上述错误。
2. 我验算过y_erf的取值区间,当y_erf=-0.99999时,程序报错,但-0.99999这个数值之前已经出现了四次,都计算成功了,在第五次计算时报错。

希望论坛中的各位高人给予指点。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

信彼南山

木虫 (著名写手)

Derf_2是什么东西?
2楼2011-11-05 10:28:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

射天狼yjx

新虫 (初入文坛)


臭水沟(金币+1): 请使用“引用回复”,否则对方看不到你的回复~ 2011-11-05 21:59:59
Derf_2是之前一段程序定义的变量。也是d循环迭代的结果。
同样地程序我用MATLAB2010b计算了一下,错误提示如下:

??? Error using ==> erfinv
Input must be real and full.

请问这是什么意思?
3楼2011-11-05 21:57:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

信彼南山

木虫 (著名写手)

哦,原来函数保密
4楼2011-11-07 21:05:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

射天狼yjx

新虫 (初入文坛)

请问楼上如何解决这个函数无法调用的问题?
5楼2011-11-08 17:08:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 射天狼yjx 的主题更新
信息提示
请填处理意见