声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1319|回复: 4

[编程技巧] [讨论]branch请进

[复制链接]
发表于 2006-6-4 23:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
对这个公式我编了个程序:
a=input('a=');
m=input('m=');
p=1;s=1;
for i=1:m
t=a^i;
p=p*i;
s1=t/p;
s=s+s1;
end
y=s1/s;
fprintf('y=%.8f\n',y);
我发现,当输入的m和a较小时,最后的y值可以计算出来,但当输入的值较大,比如m=120,a=30时就无法计算出结果,这是怎么回事?计算量超出了?
1.bmp
回复
分享到:

使用道具 举报

发表于 2006-6-5 01:43 | 显示全部楼层
n = realmax
浮点double数据类型的最大值约为:1.7977e+308
大了的确玄乎。
发表于 2006-6-5 02:17 | 显示全部楼层
楼上的讲得很有道理,数值太大的时候应该考虑消去某部分或者做一下除法
同时提醒您,如果找我的话,直接发短消息就可以的。不要点名发帖子,这样会错过一些能帮你解决问题的朋友!!
 楼主| 发表于 2006-6-5 10:16 | 显示全部楼层
呵呵。谢谢了。那我编的那个程序有什么问题没?
发表于 2006-6-5 12:54 | 显示全部楼层
a m数值较小时是没问题的,如果大了的话a^m就会很大超出精度范围,也就是得出inf这样的东东。
从式子分析,它趋近0.5吧(大概)!你看能不能把分子除下来!!!
这样分子分母的话都在精度范围内
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-14 08:25 , Processed in 0.076799 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表