24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2437  |  回复: 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的回帖

dbb627

荣誉版主 (著名写手)

【答案】应助回帖


感谢参与,应助指数 +1
jjdg: 金币+1, 感谢应助 2012-03-23 02:57:02
q =1.0e+009  *[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))/1e10),y,0.9,1.1);
F3=log(F2);
F4=vpa(F3)+1e10
Warning: Explicit integral could not be found.  

F4 =

9999999998.5398333654497435804148
The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
2楼2012-03-22 16:42:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ldoop

铁杆木虫 (著名写手)


【答案】应助回帖


感谢参与,应助指数 +1
jjdg: 金币+1, 感谢应助 2012-03-23 02:57:07
应该是值溢出了,建议稍微处理下表达式,比如分子都是 10^9乘以一个数,然后相加后除以10^10,那么直接10就可以了
3楼2012-03-22 17:16:39
已阅   回复此楼   关注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的回帖

dbb627

荣誉版主 (著名写手)

【答案】应助回帖


jjdg: 金币+1, 感谢应助 2012-03-23 02:57:21
引用回帖:
4楼: Originally posted by tianaylk at 2012-03-22 18:47:28:
你好,非常感谢你的回复。但是你的变形是不等价的,因此得出的结果是有问题的,请再帮我考虑一下,谢谢!

确实是有问题
下面变形应该等价
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))-1e8),y,0.9,1.1);
F3=log(F2);
F4=vpa(F3)+1e8
Warning: Explicit integral could not be found.  

F4 =

149272173.68701522388239715123227

>> q =1.0e+009  *[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))-1e8),y,0.9,1.1);
F3=log(F2);
F4=vpa(F3)+1e8
Warning: Explicit integral could not be found.  

F4 =

log(numeric::int(1/exp(152725000*y^4 - (5051340117333333*y^3)/8388608 + 890400000*y^2 - (4908174540800001*y)/8388608 - 1248575000), y = 9/10..11/10)) + 100000000

>> q =1.0e+009  *[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))-1e9),y,0.9,1.1);
F3=log(F2);
F4=vpa(F3)+1e9
Warning: Explicit integral could not be found.  

F4 =

1492721786.6977684879699111309597
The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
6楼2012-03-22 19:34:19
已阅   回复此楼   关注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的回帖

dbb627

荣誉版主 (著名写手)

【答案】应助回帖

★ ★ ★ ★
jjdg: 金币+1, 感谢应助 2012-03-23 02:57:31
余泽成: 金币+3, 谢谢应助,欢迎常来程序语言版! 2012-03-23 16:58:09
引用回帖:
7楼: Originally posted by tianaylk at 2012-03-22 20:28:48:
感谢版主解答!可是又发现问题了,如果把q的数值改变,例如把q(4)从-0.6109改为-5.6109,就又算不出结果了
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 ...

log(exp(100))

ans =

   100

>> log(exp(1000))

ans =

   Inf
这个是 你计算的数字实在很大,matlab没法表示,而你想通过减去一个数把它控制100左右,比较困难,我暂时还想不出较好的方法,也许你考虑将你的参数归一化,然后积分,或者考虑换个软件
The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
8楼2012-03-22 21:33:10
已阅   回复此楼   关注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的回帖

397341529

新虫 (初入文坛)

看不懂啊
10楼2012-03-23 19:30:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 tianaylk 的主题更新
信息提示
请填处理意见