24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1502  |  回复: 10

握瑜怀瑾

木虫 (小有名气)

[求助] 一个简单的式子,却算不正确

各位高手大家好!

目前我遇到一个问题,就是附件文档中所示的式子,当K比较大时,MATLAB中的nchoosek函数就会报错;因此我采用了mathematica来计算

在mathematica中,当K=50时,基本能算正确;当K=100时就悲剧了,算出了一个很大的值,是显然错误的

求教:当K比较大时,比如说100,200,甚至更大时,有什么办法能算出这个式子的准确值?

[ Last edited by jjdg on 2011-9-29 at 12:44 ]
回复此楼

» 收录本帖的淘帖专辑推荐

通信人生

» 猜你喜欢

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

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

握瑜怀瑾

木虫 (小有名气)

自己顶一下
2楼2011-09-29 09:05:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

握瑜怀瑾

木虫 (小有名气)

哦,貌似标题错了,应该是“却不能算正确”
3楼2011-09-29 09:06:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gsview

木虫 (小有名气)

【答案】应助回帖


握瑜怀瑾(金币+2): 谢谢您! 2011-10-05 10:48:13
xzhdty(金币+1): 欢迎常来程序语言看看 2011-10-05 18:48:05
1,      0.5963473623231725
10,    3.33204505399828
50,    5.383752988862083
100,  6.225487226306522
200,  7.048564754038644
直接做的数值积分,不知道结果对吗?
4楼2011-09-29 15:05:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

握瑜怀瑾

木虫 (小有名气)

引用回帖:
4楼: Originally posted by gsview at 2011-09-29 15:05:06:
1,      0.5963473623231725
10,    3.33204505399828
50,    5.383752988862083
100,  6.225487226306522
200,  7.048564754038644
直接做的数值积分,不知道结果对吗?

您所说的“直接做的数值积分”,是怎么个计算法啊?在MATLAB还是Mathematica里面算的呢?能说得详细点吗?是不是未采用推导出来的求和公式计算?
5楼2011-10-05 10:49:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gsview

木虫 (小有名气)

对,直接做的数值积分,你能推出下面的公式?是不是有什么近似条件!
6楼2011-10-05 13:46:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

握瑜怀瑾

木虫 (小有名气)

引用回帖:
6楼: Originally posted by gsview at 2011-10-05 13:46:07:
对,直接做的数值积分,你能推出下面的公式?是不是有什么近似条件!

没有近似条件。用了二项式展开公式后,可以直接推导出。

只是推导出来的公式,在K比较大时,就算不准确了,可能是因为MATLAB的精度问题。

这个公式是一个比较简单的公式,用以举例。实际上我遇到的是一个比这个复杂的式子,想要验证推导出来的式子的准确性,所以必须要直接算推导出来的式子,而非用数值积分。

您能有办法对列举的例子直接计算下面的公式吗?例如当K=100时?
7楼2011-10-05 19:22:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gsview

木虫 (小有名气)

我简单的验证了一下你的公式,在K比较小的时候是成立的,但是当K比较大的时候没有办法验证的原因是: (K-1)!/k!/(K-1-k)!这个是一个非常大的数,可能会到10几十次方,但是你后面算的那个E1[x]算的精度没有那么高,这样的话会带来非常大的误差!

» 本帖已获得的红花(最新10朵)

8楼2011-10-05 22:20:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

握瑜怀瑾

木虫 (小有名气)

送鲜花一朵
引用回帖:
8楼: Originally posted by gsview at 2011-10-05 22:20:10:
我简单的验证了一下你的公式,在K比较小的时候是成立的,但是当K比较大的时候没有办法验证的原因是: (K-1)!/k!/(K-1-k)!这个是一个非常大的数,可能会到10几十次方,但是你后面算的那个E1[x]算的精度没有那么高, ...

哦,原来是这样啊,明白了,多谢多谢
9楼2011-10-07 09:40:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

inhaul

新虫 (正式写手)

【答案】应助回帖

握瑜怀瑾(金币+2): 呵呵,我也发现了,K=10时,是正确的 2011-10-10 08:18:47
引用回帖:
4楼: Originally posted by gsview at 2011-09-29 15:05:06:
1,      0.5963473623231725
10,    3.33204505399828
50,    5.383752988862083
100,  6.225487226306522
200,  7.048564754038644
直接做的数值积分,不知道结果对吗?

算了一下,你的结果好像不对,除了K=10是正确的
代码
K=50;
A=10;
f=NIntegrate[Log[1+A*x]*(1-Exp[-x])^(K-1)*Exp[-x],{x,0,Infinity}]*K

K   f
1,2.01464
10,3.33205
50,3.79314
100,3.94101
200,4.06953
10楼2011-10-10 00:16:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 握瑜怀瑾 的主题更新
信息提示
请填处理意见