24小时热门版块排行榜    

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

tianaylk

新虫 (初入文坛)

[求助] matlab 积分计算 算不出结果,求帮助!!!

q =1.0e+008  *[2.3916; -3.6135; 1.8065; -0.6109];
syms y ;
F2=int(exp(q(1)*y+1/2*q(2)*(y.^2-1)+1/3*q(3)*(y.^3-3*y)+1/4*q(4)*(y.^4-6*y.^2+3)),y,0.9,1.1);
F3=log(F2);
F4=vpa(F3)
可以计算出F4 = 149272173.68701522388239715123227,但是当q =1.0e+009  *[2.3916; -3.6135; 1.8065; -0.6109] 时,运算不出结果,其实结果大概为149272173*10,怀疑是不是因为F2数值太大,matlab处理不了?q的取值为1.0e+008数量级时F2=2*10^64828081,q的取值为1.0e+009数量级时F2就计算不出来了,提示 numeric::int(1/exp(152725000*y^4 - (5051340117333333*y^3)/8388608 + 890400000*y^2 - (4908174540800001*y)/8388608 - 1348575000), y = 9/10..11/10) 但其实取对数以后得到的F3并不大,请各位大侠帮忙解决一下~~~非常感激~~~
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tianaylk

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by dbb627 at 2012-03-22 16:42:16:
q =1.0e+009  *;
syms y ;
F2=int(exp((q(1)*y+1/2*q(2)*(y.^2-1)+1/3*q(3)*(y.^3-3*y)+1/4*q(4)*(y.^4-6*y.^2+3))/1e10),y,0.9,1.1);
F3=log(F2);
F4=vpa(F3)+1e10
Warning: Explicit integral could not b ...

你好,非常感谢你的回复。但是你的变形是不等价的,因此得出的结果是有问题的,请再帮我考虑一下,谢谢!
4楼2012-03-22 18:47:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tianaylk

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by ldoop at 2012-03-22 17:16:39:
应该是值溢出了,建议稍微处理下表达式,比如分子都是 10^9乘以一个数,然后相加后除以10^10,那么直接10就可以了

你好,非常感谢你的回复。你看到的可能是一楼作过变形后的表达式,但是那个变形和我的表达式是不等价的,原函数的形式请看主贴,貌似不太好处理...请再帮我考虑一下,谢谢!
5楼2012-03-22 18:50:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tianaylk

新虫 (初入文坛)

引用回帖:
6楼: Originally posted by dbb627 at 2012-03-22 19:34:19:
确实是有问题
下面变形应该等价
q =1.0e+008  *;
syms y ;
F2=int(exp((q(1)*y+1/2*q(2)*(y.^2-1)+1/3*q(3)*(y.^3-3*y)+1/4*q(4)*(y.^4-6*y.^2+3))-1e8),y,0.9,1.1);
F3=log(F2);
F4=vpa(F3)+1e8
Warnin ...

感谢版主解答!可是又发现问题了,如果把q的数值改变,例如把q(4)从-0.6109改为-5.6109,就又算不出结果了
q =1.0e+009  *[2.3916; -3.6135; 1.8065; -5.6109];
syms y ;
F2=int(exp((q(1)*y+1/2*q(2)*(y.^2-1)+1/3*q(3)*(y.^3-3*y)+1/4*q(4)*(y.^4-6*y.^2+3))-1e9),y,0.9,1.1);
F3=log(F2);
F4=vpa(F3)+1e9
Warning: Explicit integral could not be found.
> In sym.int at 64

F4 =

log(numeric::int(1/exp(1402725000*y^4 - (5051340117333333*y^3)/8388608 - 6609600000*y^2 - (4908174540800001*y)/8388608 + 3401425000), y = 9/10..11/10)) + 1000000000

q =1.0e+009  *[2.3916; -3.6135; 1.8065; -5.6109];
syms y ;
F2=int(exp((q(1)*y+1/2*q(2)*(y.^2-1)+1/3*q(3)*(y.^3-3*y)+1/4*q(4)*(y.^4-6*y.^2+3))-1e10),y,0.9,1.1);
F3=log(F2);
F4=vpa(F3)+1e10
Warning: Explicit integral could not be found.
> In sym.int at 64
??? Error using ==> mupadfeval at 28
Error: Singularity [ln];
during evaluation of 'mlfloat'

Error in ==> sym.vpa at 42
       r = mupadfeval('mlfloat',s);

也就是说随着q的变化,指数中应该减去10的多少次方不是固定的,应该怎么办呢?还请版主再帮忙解答一下,谢谢!
7楼2012-03-22 20:28:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tianaylk

新虫 (初入文坛)

引用回帖:
8楼: Originally posted by dbb627 at 2012-03-22 21:33:10:
log(exp(100))

ans =

   100

>> log(exp(1000))

ans =

   Inf
这个是 你计算的数字实在很大,matlab没法表示,而你想通过减去一个数把它控制100左右,比较困难,我暂时还想不出较好的方法 ...

是啊,计算的确有点大,但其实取对数以后并不大,不知道该如何解决这个问题,已经采用符号积分,但还是只能计算到q为1e8数量级,希望版主有空再帮忙考虑一下,非常感谢~
9楼2012-03-22 22:11:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tianaylk

新虫 (初入文坛)

问题还没完全解决,还请高人指点!
11楼2012-03-23 22:50:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 tianaylk 的主题更新
信息提示
请填处理意见