24小时热门版块排行榜    

查看: 1217  |  回复: 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

铁杆木虫 (正式写手)

木头虫子

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
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的回帖

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的回帖
相关版块跳转 我要订阅楼主 herozhu 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 2019年青年基金涵评意见,大家看看几个A,几个B? +8 Tide man 2026-08-11 8/400 2026-08-12 17:30 by Vivilian
[基金申请] 不应该看fileCode +5 且听虎啸 2026-08-12 6/300 2026-08-12 16:26 by Tide man
[基金申请] FileCode能看出啥? +8 要乐观耀哥 2026-08-10 21/1050 2026-08-12 16:08 by 云上清扬
[基金申请] 长年满屏的广告,版主太不责任了。基金也等的急 +4 gltch 2026-08-12 4/200 2026-08-12 16:08 by eulota
[基金申请] 综述论文作为代表作会不会影响评审专家的印象分? +11 yufeiwaner 2026-08-09 13/650 2026-08-12 08:17 by yufeiwaner
[基金申请] 帮忙看看fileCode +7 wwncly 2026-08-10 13/650 2026-08-11 19:36 by 冰心玉壶晴
[基金申请] 什么时候出结果,有咨询渠道??? +3 Tide man 2026-08-11 3/150 2026-08-11 17:54 by kudofaye
[基金申请] 分享一下我之前已中青C的计划书的filecode +3 布布和一二 2026-08-11 4/200 2026-08-11 15:20 by aasahr
[基金申请] 确定了,国自然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
[基金申请] 静等基金结果 +5 gjjjzhong 2026-08-10 16/800 2026-08-10 17:19 by Tide man
[基金申请] 国自然结果 +4 Vierhys 2026-08-10 8/400 2026-08-10 15:06 by Vierhys
[基金申请] 据悉今年马上要出结果了 +7 瞬息宇宙 2026-08-10 8/400 2026-08-10 12:42 by Vivilian
[基金申请] 2026国自然放榜时间 +9 布布和一二 2026-08-08 9/450 2026-08-10 11:22 by xxxx2020
[基金申请] 面上项目filecode邪修 +5 西山十月 2026-08-09 7/350 2026-08-10 07:32 by 仁砚薪传
[基金申请] filecode与中标关系的预测 +5 布布和一二 2026-08-07 5/250 2026-08-09 16:15 by 袁向阳007
[基金申请] 关于豆爷回答的JTJC与%2F数量 +5 yang182083 2026-08-06 7/350 2026-08-08 18:29 by zhanghaozhu
[基金申请] 化学口download_prp&fileCode的固定段好像这几天一直没变,有变的大神么? +3 Tide man 2026-08-07 4/200 2026-08-07 22:39 by Tide man
[基金申请] 大家散了吧,后缀研究没有意义,别浪费时间了,过好目前的每一天,不要焦虑 +5 Tide man 2026-08-06 7/350 2026-08-07 13:11 by 医学老男孩
[基金申请] filecode +14 等待解的谜 2026-08-06 19/950 2026-08-07 12:20 by wlwhappy
信息提示
请填处理意见