用matlab画(求)没有原函数的不定积分图像(定积分值)

用matlab画(求)没有原函数的不定积分图像(定积分值)

问题描述

一般情况,用matlab的int函数可以很方便求解一个不定积分或者定积分值,并且通过plot画出其图像,但是对于某些没有原函数的被积函数,此法无效。下面给出一种解决办法。
ps:该方法目前可确定用于定义域在 [ 0 , + ∞ ] [0,+\infty ] [0,+]的情况,高阶玩法还未探索。

求定积分值

这个方法来源于网上,不过其实也不难。定积分值无非就是某一个积分区间内的图像面积,那么可以从定积分最初的定义考虑,即取尽量小的自变量步长 △ x \triangle x x,使得其 △ y \triangle y y可看作平坦的,即 △ y \triangle y y变为定值 y i y_i yi,此时变成一个细长的矩形,其面积为: △ S = △ x ∗ y i \triangle S=\triangle x*y_i S=xyi。所以整个定积分值即可离散化为: ∫ x 1 x 2 f ( x ) d x = ∑ △ x ∗ y i \int_{x_1}^{x_2}f(x)dx=\sum\triangle x*y_i x1x2f(x)dx=xyi,可通过matlab中的sum函数快速计算出定积分值,当然 △ x \triangle x x取的越小,结果越精确。

画原函数图像

既然定积分值可求了,那么原函数的求法可看作将积分下限取为0,而上限为自变量 x x x的定积分,说白了就是 x x x取定义域范围内各个值所对应的被积函数面积值。此时可通过matlab中的cumsum函数对被积函数值做后向累积,求出其原函数值,虽然没有显示表达式,但可通过函数值画出其原函数图像。

具体实例

下面给出一个我最近正在做的黑体辐射出射度积分例子,此积分式为 ∫ λ 1 λ 2 c 1 λ 1 e 1 λ T − 1 d λ \int_{\lambda_1}^{\lambda_2}\frac{c_1}{\lambda}\frac{1}{e^{\frac{1}{\lambda T}}-1}d\lambda λ1λ2λc1eλT111dλ,此积分的具体物理含义就不介绍了,可自行百度。此被积函数没有原函数,直接用matlab的int函数无法求得其定积分值或者画出原函数图像,下面给出上述方法的具体代码和运行结果。

c1 = 3.7415e8;%第一辐射常数,单位:Wum^4/m^-2
c2 = 1.4388e4;%第二辐射常数,单位umK
Sigma = 5.67e-12;%斯蒂芬常数
T = 273+727;%目标温度,K
Step = 1e-4;

Lambda = 0+Step:Step:15;%波长范围,单位um
M = c1./(Lambda.^5)./(exp(c2./(Lambda.*T))-1);%黑体辐出度,单位Wum^-1m^-2
M = 1e-4*M;%单位,Wum^-1cm^-2
y = M/Sigma/T^4;
figure,plot(Lambda*T,y)
xlabel('(\lambda,T)/(\mum*K)'),ylabel('黑体辐出度函数'),grid on
IntY = cumsum(y)/1e4;
figure,plot(Lambda*T,IntY)
ylabel 相对光谱辐出度,xlabel('(\lambda,T)/(\mum*K)'),grid on

被积函数
原函数

结论

用matlab的sum函数计算了没有原函数的定积分值,用cumsum画出原函数图像,仿真结果验证了方法的有效性。以上画图方法在百度中并未找到代码,自己研究后贡献出来,感谢这两年让自己少造轮子的CSDN。
小白一枚,可能还有较多错误,欢迎同行批评指正!

  • 7
    点赞
  • 30
    收藏
  • 打赏
    打赏
  • 15
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 15

打赏作者

sigpro_zz

你是第一个打赏我的人!谢谢!

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值