用quadl算积分时的积分限的取值
被积函数为:besselh(0,k*l*x)积分区间是:(0,inf),我近似取inf=20;
可是由于被积函数随自变量的增大而迅速衰减,因此本来inf不用取太大,且取大和取小的差异应该很小,但是计算结果取显示当inf=40是inf=20时的10000倍,不知道是怎么回事?请教各位高手。
计算过程中出现以下warning:
Warning: Maximum function count exceeded; singularity likely.。 积分奇异,对besselh积分的时候刨去零点
回复 2楼 的帖子
是刚用matlab编程的,有很多不懂,谢谢指导。再请教一下:用quad和quadl算同一个积分时,为什么结果有不同?
另外:交换quadl的积分上下限为什么结果不是互为相反数?而是两种结果相差很多。(结果为复数)
谢谢
回复 3楼 的帖子
quadl精度应该更高点另外,被积函数奇异了,结果当然不准,后面的那些问题也就不是问题了
你可以用简单的被积函数,验证你那2个问题
回复 4楼 的帖子
我试了一下:我的被积函数是:
function y=myfun(x)
rr =0.40000000000000;
k =1.84799567858223;
hr=besselh(0,-k*rr*cosh(x));
y=hr.*(-cosh(x));
分别有quad和quadl计算得到的结果为:
>> a=quadl('myfun',0,10)
Warning: Maximum function count exceeded; singularity likely.
> In quadl at 98
a =
-89.3828 +33.0058i
>> a=quad('myfun',0,10)
Warning: Maximum function count exceeded; singularity likely.
> In quad at 92
a =
91.7643 + 9.4596i
既然差不多,只是一个比一个精度差点,为什么结果会相差这么多呢?
如果没有办法让warning不出现,那么哪个计算结果更可信一点呢?谢谢各位高手了。 原帖由 happy 于 2008-6-12 21:10 发表 http://www.chinavib.com/forum/images/common/back.gif
积分奇异,对besselh积分的时候刨去零点
赞成,关于特殊函数的运算(求值,积分),不是交给matlab就能自动得到准确结果的. 既然差不多,只是一个比一个精度差点,为什么结果会相差这么多呢?
那是因为被积函数奇异了
参考2楼的做法
回复 7楼 的帖子
>> a=quadl('myfun',0.001,10)Warning: Maximum function count exceeded; singularity likely.
> In quadl at 98
因为besselh在综量等于零时是无穷大,综量为零是奇点故挖去‘0’改为‘0.001’可是结果还是有问题,再次请教各位。
附计算结果:
a =
-81.3031 +45.3588i
>> a=quad('myfun',0.001,10)
Warning: Maximum function count exceeded; singularity likely.
> In quad at 92
a =
91.0831 -16.0628i 那试用quadgk函数什么样? 原帖由 happy 于 2008-6-12 21:10 发表 http://www.chinavib.com/forum/images/common/back.gif
积分奇异,对besselh积分的时候刨去零点
这个具体怎么操作啊?
回复 8楼 Caroli 的帖子
官网是这样说的http://www.mathworks.com/support/solutions/en/data/1-2ZAPLB/?solution=1-2ZAPLB
页:
[1]