用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画(求)没有原函数的不定积分图像(定积分值)_第1张图片
用matlab画(求)没有原函数的不定积分图像(定积分值)_第2张图片

结论

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

你可能感兴趣的:(小白试水)