24小时热门版块排行榜    

查看: 1218  |  回复: 3
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

herozhu

木虫 (正式写手)

[求助] 用symsum计算发散级数和无法转换为数值型

如题,需要计算一个发散级数的有限项和,级数喂,n取值范围为[1,1e18]。采用symsum计算。当n取值范围较小时,计算结果直接可用double转换为数值型带入后续计算,但当n取值范围很大时,此时的计算结果无法转换为数值型。
>> syms n x
>> ff=n^2*exp(-10*(1-1/n^2))

ff =

n^2*exp(10/n^2 - 10)

>> symsum(ff,n,1,1e18)

ans =

sum(n^2*exp(10/n^2 - 10), n == 1..1000000000000000000)

用double(ans),出现错误提示:
Error using mupadmex
Error in MuPAD command: DOUBLE cannot convert the input expression
into a double array.
If the input expression contains a symbolic variable, use the VPA
function instead.

Error in sym/double (line 827)
        Xstr = mupadmex('symobj::double', S.s, 0);


尝试用vpa转换,
>> vpa(ans)

ans =

numeric::sum(n^2*exp(10.0/n^2 - 10.0), n == 1..1000000000000000000)
得到的结果尝试进行后续数值计算,比如ans/1e5:

>> ans/1e5

ans =

numeric::sum(n^2*exp(10.0/n^2 - 10.0), n == 1..1000000000000000000)/100000


想求教是否有方法将发散级数大区间的求和结果用数值型表示?并且能够保留合适精度,带入后续计算过程?
不胜感谢!
回复此楼
最怕的即是让爱自己的人失望
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hytao2012

铁杆木虫 (正式写手)

木头虫子

引用回帖:
3楼: Originally posted by herozhu at 2014-08-25 14:44:04
多谢回复!

思路挺好的,大于1e5时vpa即不显示数值,单用兄台的方法可以循环计算出1e7对应的数值。正如你所述,循环太多也是个问题,1e7即耗时132s,我的1e18量级不知道得算到啥时去啊。

萨哈方程中的这个pa ...

嗯,不知道为什么循环过多或大于1e5就不行,是Matlab内存设置问题之类的吗?还是vpa函数自身限制,可以通过修改vpa这个函数解决吗?
也可以试试用其他办法解出来。
实在不行,把循环也分成若干次。。。就是略麻烦
4楼2014-08-25 15:56:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 4 个回答

hytao2012

铁杆木虫 (正式写手)

木头虫子

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
herozhu(nono2009代发): 金币+10 2015-09-09 06:04:44
貌似循环次数太多,建议分开算,分开也够多的。下面是我的想法
clear; clc;

uplim=1e6;
lowlim=1;

cycltime=uplim/1e5;
syms n
result=0;
for i=1:cycltime
    temp1=symsum(n^2*exp(10/n^2)/exp(10),n,(i-1)*1e5+1,i*1e5);
    temp2=vpa(temp1);
    result=result+temp2;
end
disp(result)
2楼2014-08-25 11:33:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

herozhu

木虫 (正式写手)

引用回帖:
2楼: Originally posted by hytao2012 at 2014-08-25 11:33:47
貌似循环次数太多,建议分开算,分开也够多的。下面是我的想法
clear; clc;

uplim=1e6;
lowlim=1;

cycltime=uplim/1e5;
syms n
result=0;
for i=1:cycltime
    temp1=symsum(n^2*exp(10/n^2)/exp(10), ...

多谢回复!

思路挺好的,大于1e5时vpa即不显示数值,单用兄台的方法可以循环计算出1e7对应的数值。正如你所述,循环太多也是个问题,1e7即耗时132s,我的1e18量级不知道得算到啥时去啊。

萨哈方程中的这个partition function肯定得有办法求的啊,再想想再想想
最怕的即是让爱自己的人失望
3楼2014-08-25 14:44:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 2019年青年基金涵评意见,大家看看几个A,几个B? +10 Tide man 2026-08-11 10/500 2026-08-12 20:59 by 陈晨晨陈啊
[基金申请] 不应该看fileCode +5 且听虎啸 2026-08-12 6/300 2026-08-12 16:26 by Tide man
[基金申请] 好奇怪的filecode +5 布布和一二 2026-08-08 6/300 2026-08-12 16:11 by 云上清扬
[基金申请] 长年满屏的广告,版主太不责任了。基金也等的急 +4 gltch 2026-08-12 4/200 2026-08-12 16:08 by eulota
[基金申请] filecode +13 documentary 2026-08-10 15/750 2026-08-12 15:56 by 云上清扬
[基金申请] 奇怪,两个人的filecode固定段从头到尾一模一样 +7 布布和一二 2026-08-10 10/500 2026-08-12 09:12 by 布布和一二
[基金申请] 帮忙看看fileCode +7 wwncly 2026-08-10 13/650 2026-08-11 19:36 by 冰心玉壶晴
[基金申请] 为什么网上很多人说本周 12号出结果 +6 瞬息宇宙 2026-08-10 7/350 2026-08-11 19:25 by Tide man
[硕博家园] 读博的好处 +3 lnee 2026-08-11 3/150 2026-08-11 18:10 by 希望我好好的
[基金申请] 分享一下我之前已中青C的计划书的filecode +3 布布和一二 2026-08-11 4/200 2026-08-11 15:20 by aasahr
[基金申请] 基金中了 +15 laoda193707 2026-08-06 15/750 2026-08-11 00:11 by jiafei2190
[基金申请] 确定了,国自然21号放榜 +6 布布和一二 2026-08-10 7/350 2026-08-10 19:15 by 2000zf36392
[基金申请] 关于代码变化问题,想知道的进来 +17 且听虎啸 2026-08-07 24/1200 2026-08-10 18:35 by zhangduo2008
[基金申请] 国自然结果 +4 Vierhys 2026-08-10 8/400 2026-08-10 15:06 by Vierhys
[基金申请] 2026国自然放榜时间 +9 布布和一二 2026-08-08 9/450 2026-08-10 11:22 by xxxx2020
[基金申请] 关于filecode,很负责任的告诉大家 +6 爱看书的可乐 2026-08-08 7/350 2026-08-08 22:13 by a_niu
[基金申请] 国基金的申报应该改成非等额制,评价高的钱多评价低的钱少,但是增加资助率 +7 a089 2026-08-07 7/350 2026-08-08 18:05 by gltch
[基金申请] 关于filecode +4 布布和一二 2026-08-07 7/350 2026-08-07 22:55 by zhanghaozhu
[基金申请] filecode +14 等待解的谜 2026-08-06 19/950 2026-08-07 12:20 by wlwhappy
[基金申请] filecode +8 布布和一二 2026-08-06 11/550 2026-08-06 20:41 by tangpu318
信息提示
请填处理意见