www.gusucode.com > 高等数学问题求解源码程序 > CH08/GraphicArea.m

    function S=GraphicArea(varargin)
%GRAPHICAREA   使用定积分求平面图形的面积
% S=GRAPHICAREA(F,G,A,B,'dicarl')  计算直角坐标系下曲线F和G与直线X=A、X=B所围图形
%                                         的面积,适用于函数F和G只包含一个符号变量的情形
% S=GRAPHICAREA(F,G,X,A,B,'dicarl')  计算直角坐标系下曲线F和G与直线X=A、X=B所围
%                                           图形的面积,并指定符号自变量为X
% S=GRAPHICAREA(R,ALPHA,BETA,'polar')  计算极坐标系下曲线R与T=ALPHA、T=BETA所围图形
%                                              的面积,其中R只包含一个符号变量T
% S=GRAPHICAREA(R,T,ALPHA,BETA,'polar')  计算极坐标系下曲线R与T=ALPHA、T=BETA所围
%                                                图形的面积,并指定符号自变量为T
%
% 输入参数:
%     ---F,G:直角坐标系下曲线的函数描述
%     ---R:极坐标系下曲线的函数描述
%     ---A,B:直角坐标系下的积分下限与上限
%     ---ALPHA,BETA:极坐标系下的积分下限与上限
%     ---TYPE:坐标系类型,有'dicarl'和'polar'两种取值
% 输出参数:
%     ---S:返回的图形的面积
%
% See also int

args=varargin;
type=args{end};
switch lower(type)
    case 'dicarl'
        f1=args{1};
        f2=args{2};
        s=unique([symvar(f1),symvar(f2)]);
        if length(s)>1 || nargin==6
            x=args{3};
            a=args{4};
            b=args{5};
        else
            if nargin==5
                x=s;
                a=args{3};
                b=args{4};
            end
        end
        S=simple(int(f1-f2,x,a,b));
    case 'polar'
        r=args{1};
        s=symvar(r);
        if length(s)>1 || nargin==5
            t=args{2};
            alpha=args{3};
            beta=args{4};
        else
            if nargin==4
                t=s;
                alpha=args{2};
                beta=args{3};
            end
        end
        S=simple(1/2*int(r^2,t,alpha,beta));
    otherwise
        error('Illegal options.')
end
S=abs(S);
web -broswer http://www.ilovematlab.cn/forum-221-1.html