Matlab中关于数值积分及符号积分的讨论

一、integral系列函数进行数值积分

代码如下:

​
R=1;Ba=0;a=1;x=a;
fun3=@(r,theta)(1-theta.*cot(theta))./sqrt(1-sin(theta).*(r./R).^2);
thetamin=@(r)asin(a./r);
Nx3=integral2(fun3,x,1,thetamin,pi/2);

结果如下:

警告: 非有限结果。积分未成功。可能具有奇异性。 
> In integral2Calc>integral2t (line 121)
  In integral2Calc (line 9)
  In integral2 (line 106)
  In Untitled112 (line 4) 

可以发现此时函数积分未果,Nx3的结果为NaN,而小编本次对二元函数fun3进行积分时,积分变量r和theta的积分区间长度均为0,也就是说x=1,thetamin=pi/2,那么相应的积分结果应该也是零,可是函数返回值为NaN,这显然是不对的,那么下面使用符号积分进行尝试。

二、int符号积分函数

代码如下:

R=1;a=1;
syms r theta
fun3=(1-theta.*cot(theta))./sqrt(1-sin(theta).*(r).^2);
thetamin=asin(1./r);
Nx3=int(int(fun3,r,[1 1]),theta,[thetamin pi/2]);

此时,可以得到正确的结果0,说明integral数值积分函数中的数值误差的存在导致了积分结果出错。

三、总结

integral在一般精度要求不是特别高的情况下可以使用,且运行速度较快;当积分要求数值精度较高时,建议采用符号积分的方式,配合vpa函数使用。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你可真搞笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值