【整理】MATLAB之积分篇

来源:互联网 发布:日事清软件 编辑:程序博客网 时间:2024/05/14 15:30

我的图呢!!!!啊啊啊啊!!!!抓狂

————————————————————————————————————————————————————————————————————

1.梯形积分

z = trapz(x,y) x表示积分区间的离散化向量;y是与x同维的向量,表示被积函数;z返回积分近似值

原理:先将积分区间分解为几个小区间,用每个小区间上梯形面积之和作为积分近似值。

举个栗子:

clear;x = -1:0.05:1;y = exp(-x.^2);format long ;trapz(x,y);plot(x,y)

 答案:ans = 1.493341673879747

图:


2.高精度数值积分

z = quad ( Fun , a , b )自适应步长Simpson积分法求得函数Fun在区间[ a , b ]上的定积分z = quadl ( Fun , a , b )高精度Lobatto积分法,格式同quad
依是解上题:

z = quad ( inline (' exp(-x.^2) ' ) , -1 , 1 )
答案与之前相同

z = quadl ( @( x ) exp(-x.^2)  , -1 , 1 )
答案一样

3.矩形区域重积分

z = dblquad ( Fun , a , b , c , d )求得二元函数Fun ( x , y )的重积分,a,b为变量x的积分上下限;ed为变量y的积分上下限z = triplequad ( Fun , a , b , c , d , e , f )求得三元函数Fun ( x , y , z )的重积分,格式类似于dblquad
来做两题熟悉下吧~

(1)二重积分


fun = inline ( ' x .* exp(x .^ 2 + y .^ 2) ' , ' x ' ,' y ' );format short;dblquad( fun , 0 , 2 , -2 , 2 )
答案:ans =  881.8304


(2)三重积分

(题是书上的,画质略糊,请谅解吐舌头

fun = inline ( 'y .* sin( t ) + z .* cos( t )' , ' t ' , ' y ' ,' z ' );triplequad( fun , 0 , pi , 0 , 1 , -1 , 1 )
答案:ans = 2.0000

4.重积分

MATLAB重积分函数dblquad只能解决矩形区域积分问题,有很大局限性,怎么计算一般区域二重积分的梯形积分呢?

先将二重积分化为二次积分!再用dblquad2函数:

I = dblquad2( fun , a , b , clo , dhi , n )

其中fun为被积函数f(x,y);

        clo和dhi是y的下限和上限函数c(x),d(x);

        a,b分别为x的下限和上限;

        n为区间[ a , b ]的等分数(默认100)

构造dblquad2函数:

function s = dblquad2( fun , a , b , clo , dhi , n )if nargin < 6 , n = 100;endx = linspace( a , b , n + 1 );s = 0;for i = 1 : n    s = s + dblquad( fun , x( i ) , x( i+1) , feval( clo , ( x( i ) + x( i+1 ) ) / 2 ) , feval( dhi , ( x( i ) + x( i + 1 )  ) / 2 ) );end


某题:(为什么我的图片显示不出T T)

clear;fun = inline ( ' sqrt( 1 - x .^ 2 ) ' , ' x ' , ' y ' );  %被积函数clo = inline ( ' - sqrt( 1 - x ^ 2 ) ' );  %y的下限dhi = inline ( ' sqrt( 1 - x ^ 2 ) ' );    %y的上限dblquad2 ( fun , -1 , 1 , clo , dhi , 50 )
答案:2.6663


0 0
原创粉丝点击