Matlab 之中的积分方法及相关函数总结:
有两类解的形式,一类解析解,适用于被积函数可以求出原函数的情况; 另一类为数值解,即被积函数不可求出原函数时,利用梯形法,矩阵法或辛普森法等等将积分区间分成若干块,累计求出近似解。
积分之前用syms 定义参数, vpa用来把解析解得形式变成具体数值,vpa(f,15),保留15位小数;
subs(f,x,y)用y 来替代符号x;
simple()对函数进行简化;
解析解积分最常用函数为int,形式 int(f(x),'x',min,max), f(x)=ax^2+b,允许带符号积分,而且可以计算不定积分。多重积分形式 int(int(int(4*x*z*exp(-x^2),x,0,2),y,0,pi),z,p,pi),亦可一层层分开积。
数值积分方法,只能求定积分,而且里面不可包含未知的符号:
需要建立函数,内建函数方法 Fun=@(x,y) ax+b 或者Fun=inline(‘x.^2’,'x')
trapz(x,y)梯形法,x1=[0:pi/30:pi]; y=sin(x1),自己可以控制步长
quad(Fun,a,b,seta) 辛普森二次样条插值法,a,b 为上下限, seta 为制定误差限, 默认为10e(-6).
quadl(Fun,a,b,seta),Lobbato算法, 调用方法和上着类似,但是精度和计算速度都优于quad.
双重积分为dblquad(Fun,xm,xM,ym,yM,seta)
工具箱NIT Numerical Integration Toolbox 可以求解范围带有参数的积分 quad2dggen,发现在新版matlab中已经自带函数quad2d了,用法 quad2d(@(x,y) x^2+y^2, 1,5,2, ymax), ymax=@(x) x^2可以带参数
fsolve 可以用来解方程
求数值解的效率高于解析解
譬如
Fun1=quadl(@(phi)2.*pi.*sp_R^2.*cos(phi).*sin(phi-angle_a3),angle_sp1,angle_a3);
的效率明显优于下者
Fun1=vpa(int(2*pi*sp_R^2.*cos(phi)*sin(phi-angle_a3),'phi',angle_sp1,angle_a3));
相关例子
一、Z = trapz(X,Y,dim)
梯形数值积分,通过已知参数x,y按dim维使用梯形公式进行积分