Matlab求分段函数的积分[通俗易懂]

2022-06-27 10:33:33 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

(一)前言

本文介绍一个使用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参数中(毕竟表达式都不一样,但是如果函数文件可以的话或许可以解决),我这里写一个参数可变的积分函数进行分段函数积分的求解,函数如下:

代码语言:javascript复制
%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的多目表达式甚至可以一行就写完)。如果大家有更好的方法,烦请告知,欢迎留言。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/133337.html原文链接:https://javaforall.cn

0 人点赞