Matlab求分段函数的积分

心已入冬 提交于 2019-11-30 10:07:40

(一)前言

本文介绍一个使用Matlab进行求分段函数积分值的方法。

首先介绍如何使用int()对连续函数进行积分的求解,然后介绍一个对分段函数进行求积分的例子。

(二)使用Matlab求定积分

Matlab中求积分的函数为int(),调用形式为int(func, 'x', a, b),其中func为被积函数,x为积分变量,[a, b]为被积区间。

如int(x^2, 'x', 1, 2)为求函数y=x^2在区间[1, 2]的积分值,结果为7/3。

注意:在使用int()进行积分时,需要将积分变量定义为系统变量(我使用具体的值的时候经常出现问题)。并且许多系统自带的函数不能用int()进行积分,实际上自己写的函数(即函数文件名)也不能写在func参数上,而直接将x^2写入就没问题。这个部分如果以后知道了原因或者具体的细节再进行补充。

(三)分段函数的数值积分

对于分段函数,我们不能直接把整个函数直接写入func参数中(毕竟表达式都不一样,但是如果函数文件可以的话或许可以解决),我这里写一个参数可变的积分函数进行分段函数积分的求解,函数如下:

%myint.m
function  [ out ]  = myint(t, F1, L1, R1, F2, L2, R2, F3, L3, R3, F4, L4, R4)
% MYINT 分段函数积分
%        最多支持4段
%        第一个参数为积分变量
%        后面的参数格式为:函数func 区间左端点L 区间又端点R
if(nargin>=1)                   %一段
    out=int(F1,t,L1,R1);
end
if(nargin>=5)                   %两段
    out=out+int(F2,t,L2,R2);
end
if(nargin>=8)                   %三段
    out=out+int(F3,t,L3,R3);
end
if(nargin>=11)                  %四段
    out=out+int(F4,t,L4,R4);
end
end

这样的话就可以一次性把分段函数的多段传入进行求解,比如一个函数fx=2x+1,(x<0), fx=-2x+1 (x>0),则fx在区间[-0.5,0.5]的积分可以表达为: f1=2*x+1; f2=-2*x+1; myint('x', f1, -0.5, 0, f2, 0, 0.5); 计算结果为1/2。

看到这里你可能会感到有些失望--这不就是把几个函数写一块了嘛?!的确是这样的(利用Matlab的多目表达式甚至可以一行就写完)。如果大家有更好的方法,烦请告知,欢迎留言。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!