24小时热门版块排行榜    

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

as23p

木虫 (小有名气)

[求助] 关于Matlab算符号积分

请问大家,用Matlab算积分是不是要有什么技巧才能保证正确性啊?

工作中需要计算这个积分的解析表达:int('(a*cos(x)-b)^28'),其中我对于a和b的选取是可以保证括号里的量小于1的。但用Matlab算了后,代入数值发现结果相当大。然后我干脆用Matlab执行命令:int('(6*sqrt(10)*cos(x)-18)^28',0,acos(3/sqrt(10))),结果高达10^26,明显错误,因为被积函数是小于1的,因此积分值按说是不应大于acos(3/sqrt(10))。

有同学知道是什么原因导致这种结果以及如何纠正么?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

as23p

木虫 (小有名气)


jjdg(金币+1): 感谢参与 2012-02-09 09:57:15
引用回帖:
: Originally posted by snoopyzhao at 2012-01-24 09:22:44:
可否给出你的解决方案?

我用 maxima 算的结果也异常大……

Matlab给出的解析结果是正确的,但数值结果不对,应该是因为各项的系数过大,代入数值的话变成了很大的数乘以很小的数,造成了很大的数值误差?最后在我的程序中改用高斯积分公式了。
6楼2012-02-09 06:53:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 7 个回答

zhfzh

木虫 (正式写手)

【答案】应助回帖


感谢参与,应助指数 +1
jjdg(金币+1): 感谢参与 2012-01-15 10:04:01
as23p(金币+10): 有帮助 是不老靠谱的:( 2012-02-09 07:13:38
matlab的默认精度是10的-16
你直接算误差是很大的
建议自己编程计算比较靠普
2楼2012-01-14 12:04:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

as23p

木虫 (小有名气)

jjdg: 你贴个数学形式的公式出来可能更方便大家帮你看看 2012-01-16 10:11:28
我觉得不是你说的原因。我手动算了一下,结果和Matlab给出的解析表达式是一致的,但代入积分限后就不对 我也自己编程算了,用四精度一样是错误。由于这个积分只是我整个计算的一小环,所以如果需要专门计算它从总计算量上来讲是无法忍受的。
3楼2012-01-16 06:06:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

as23p

木虫 (小有名气)

没人理也无所谓了,我已经自己解决了
4楼2012-01-20 07:33:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见