资源描述
一.相关函数:%符号积分int(f,v)int(f,v,a,b)%数值积分trapz(x,y)%梯形法沿列方向求函数Y关于自变量X的积分cumtrapz(x,y)%梯形法沿列方向求函数Y关于自变量X的累计积分quad(fun,a,b,tol)%采用递推自适应Simpson法计算积分quad1(fun,a,b,tol)%采用递推自适应Lobatto法求数值积分dbquad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol)%二重(闭型)数值积分指令triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol)%三重(闭型)数值积分指令二.示例:例1:计算f(t)=exp(-t2)在0,1上的定积分本例演示:计算定积分常用方法symsxint(exp(-x2),0,1)ans=1/2*erf(1)*pi(1/2)%erf为误差函数vpa(int(exp(-x2),0,1)ans=.7468241328124270d=0.001;x=0:d:1;d*trapz(exp(-x.2)ans=0.7468quad(exp(-x.2),0,1,1e-8)ans=0.7468例2:计算f(t)=1/log(t)在0,x,0x1-处为负无穷本例演示:用特殊函数表示的积分结果,如何用mfun指令(1)symstxft=1/log(t);sx=int(ft,t,0,x)sx=-Ei(1,-log(x)%完全椭圆函数(2)x=0.5:0.1:0.9sx_n=-mfun(Ei,1,-log(x)x=0.50000.60000.70000.80000.9000sx_n=-0.3787-0.5469-0.7809-1.1340-1.7758(3)%图示被函数和积分函数clfezplot(1/log(t),0.1,0.9)gridonholdonplot(x,sx_n,LineWidth,3)Char1=1/ln(t);Char2=int_0x1/ln(t)dt;title(Char1,and,Char2)legend(Char1,Char2,Location,SouthWest)例3:计算f(t)=exp(-sin(t)在0,4上的定积分注意:本题被函数之原函数无封闭解析表达式,符号计算无法解题!本例演示:符号计算有限性(1)符号计算解法symstxft=exp(-sin(t)sx=int(ft,t,0,4)ft=exp(-sin(t)Warning:Explicitintegralcouldnotbefound.Insym.intat58sx=int(exp(-sin(t),t=0.4)(2)数值计算解法dt=0.05;%采样间隔t=0:dt:4;%数值计算适合于有限区间上,取有限个采样点Ft=exp(-sin(t);Sx=dt*cumtrapz(Ft);%计算区间内曲线下图形面积,为小矩形面积累加得Sx(end)%所求定积分值%图示plot(t,Ft,*r,MarkerSize,4)holdonplot(t,Sx,.k,MarkerSize,15)holdoffxlabel(x)legend(Ft,Sx)ans=3.0632例4:绘制积分图形,y=2/3*exp(-t/2)*cos(sqrt(3)/2*t);积分s(x)=int(y,t,0,x)于0,4*pi上symsttaoy=2/3*exp(-t/2)*cos(sqrt(3)/2*t);s=subs(int(y,t,0,tao),tao,t);%获得积分函数subplot(2,1,1)%ezplot(y,0,4*pi),ylim(-0.2,0.7)%单变量符号函数可视化,多变量用ezsurfgridonsubplot(2,1,2)ezplot(s,0,4*pi)gridontitle(s=inty(t)dt)int的积分可以是定积分,也可以是不定积分(即有没有积分上下限都可以积)可以得到解析的解,比如你对x2积分,得到的结果是1/3*x3,这是通过解析的方法来解的。如果int(x2,x,1,2)得到的结果是7/3 quad是数值积分,它只能是定积分(就是有积分上下限的积分),它是通过simpson数值积分来求得的(并不是通过解析的方法得到解析解,再将上下限代入,而是用小梯形的面积求和得到的)。如果f=inline(x.2);quad(f,1,2)得到的结果是2.333333,这个数并不是7/3% 符号变量与符号表达式%1.符号变量与符号表达式%clear all ;clc;close all;% f =sym( sin(x)+5x)% f 符号变量名% sin(x)+5x 符号表达式% 符号标识% 符号表达式一定要用 单引号括起来matlab才能识别% 的内容可以是符号表达式,也可以是符号方程。% 例:% f1=sym(a*x2+b*x+c) 二次三项式% f2=sym(a*x2+b*x+c=0 ) 方程% f3=sym(Dy+y2=1) 微分方程% 符号表达式或符号方程可以赋给符号变量,以后调用方便;也可以不赋给符号变量直接参与运算% syms 命令用来建立多个符号量,一般调用格式为:% syms 变量1 变量2 . 变量n% 符号矩阵的创建%2.符号矩阵的创建% 数值矩阵A=1,2;3,4% A=a,b;c,d 不识别% 1.用matlab函数sym创建矩阵(symbolic的缩写)% 命令格式:A=sym( )% 符号矩阵内容同数值矩阵% 需用sym指令定义% 需用 标识% 例如:A = sym(a , 2*b ; 3*a , 0)% A =% a, 2*b% 3*a, 0% 这就完成了一个符号矩阵的创建。% 注意:符号矩阵的每一行的两端都有方括号,这是与 matlab数值矩阵的一个重要区别。%2.用字符串直接创建矩阵(这种方法创建的没有什么用处)% 模仿matlab数值矩阵的创建方法% 需保证同一列中各元素字符串有相同的长度。% 例:A = a,2*b; 3*a, 0% A =% a, 2*b% 3*a, 0%3.符号矩阵的修改% a.直接修改% 可用光标键找到所要修改的矩阵,直接修改% b.指令修改% 用A1=sym(A,*,*,new) 来修改。 这个经过测试,不能运行% 用A1=subs(A, new, old)来修改% % 例如:A = a, 2*b% 3*a, 0A = sym(a , 2*b ; 3*a , 0)% A1=sym(A,2,2,4*b) %等效于A(2,2)=4*b;% A1 = a, 2*b% 3*a, 4*bA1=subs(A,0,4*b)A2=subs(A1, c, b)% A2 = a, 2*c% 3*a, 4*c%4.符号矩阵与数值矩阵的转换% 将数值矩阵转化为符号矩阵% 函数调用格式:sym(A)A=1/3,2.5;1/0.7,2/5% A =% 0.3333 2.5000% 1.4286 0.4000B=sym(A)% ans =% 1/3, 5/2% 10/7, 2/5% 将符号矩阵转化为数值矩阵% 函数调用格式: numeric(A)% B =% 1/3, 5/2% 10/7, 2/5%numeric(B) 这个函数不存在了VPA(B,4) %发现这个函数可用% R = VPA(S) numerically evaluates each element of the double matrix% S using variable precision floating point arithmetic with D decimal% digit accuracy, where D is the current setting of DIGITS.% The resulting R is a SYM.% % VPA(S,D) uses D digits, instead of the current setting of DIGITS.% D is an integer or the SYM representation of a number.% ans =% .3333, 2.500% 1.429, .4000% 符号运算%3. 符号运算% 例1:f=sym( 2*x2+3*x-5); g=sym( x2+x-7);h= f+g% h=% 3*x2+4*x-12% 例2:f=sym(cos(x);g=sym(sin(2*x);f/g+f*g% ans =% cos(x)/sin(2*x)+cos(x)*sin(2*x)% 查找符号变量%4.查找符号变量% % findsym(expr) 按字母顺序列出符号表达式 expr 中的所有符号变量% % findsym(expr, N) 列出 expr 中离 x 最近的 N 个符号变量% 若表达式中有两个符号变量与 x 的距离相等,则ASCII 码大者优先。% 常量 pi, i, j 不作为符号变量% 例:f=sym(2*w-3*y+z2+5*a);findsym(f)% ans =% a, w, y, zfindsym(f,3)% ans =% y,w,zfindsym(f,1)% ans =% y% 计算极限%5.计算极限% limit(f,x,a): 计算f(x)当x趋向于a的极限% limit(f,a): 当默认变量趋向于 a 时的极限% limit(f): 计算 a=0 时的极限% limit(f,x,a,right): 计算右极限% limit(f,x,a,left): 计算左极限% 例:计算syms x h n;L=limit(log(x+h)-log(x)/h,h,0)% L =% 1/xM=limit(1-x/n)n,n,inf)% M =% exp(-x)% 计算导数%6.计算导数% g=diff(f,v):求符号表达式 f 关于 v 的导数% g=diff(f):求符号表达式 f 关于默认变量的导数% g=diff(f,v,n):求 f 关于 v 的 n 阶导数syms x;f=sin(x)+3*x2;g=diff(f,x)% g =% cos(x)+6*x%计算积分%7.计算积分% int(f,v,a,b): 计算定积分f(v)从a到b% int(f,a,b): 计算关于默认变量的定积分% int(f,v): 计算不定积分f(v)% int(f): 计算关于默认变量的不定积分f=(x2+1)/(x2-2*x+2)2;I=int(f,x)% I =% 3/2*atan(x-1)+1/4*(2*x-6)/(x2-2*x+2)K=int(exp(-x2),x,0,inf)% K =% 1/2*pi(1/2)%函数运算%8.函数运算% 1合并、化简、展开等函数% collect函数:将表达式中相同幂次的项合并;% factor函数:将表达式因式分解;% simplify函数:利用代数中的函数规则对表达式进行化简;% numden函数:将表示式从有理数形式转变成分子与分母形式。% 2反函数% finverse(f,v) 对指定自变量为v的函数f(v)求反函数% 3复合函数% compose(f,g) 求f=f(x)和g=g(y)的复合函数f(g(y)% compose(f,g,z) 求 f=f(x)和g=g(y)的复合函数f(g(z)% 4表达式替换函数(前面讲到了)% subs(s) 用赋值语句中给定值替换表达式中所有同名变量 % subs (s, old, new) 用符号或数值变量new替换s中的符号变量old% mtaylor(f,n) 泰勒级数展开% ztrans(f) Z变换% Invztrans(f) 反Z变换% Laplace(f) 拉氏变换% Invlaplace(f) 反拉氏变换% fourier(f) 付氏变换% Invfourier(f) 反付氏变换%clearf1 =sym(exp(x)+x)*(x+2);f2 = sym(a3-1);f3 = sym(1/a4+2/a3+3/a2+4/a+5);f4 = sym(sin(x)2+cos(x)2);collect(f1)% ans =% x2+(exp(x)+2)*x+2*exp(x)expand(f1)% ans =% exp(x)*x+2*exp(x)+x2+2*xfactor(f2)% ans =% (a-1)*(a2+a+1)m,n=numden(f3)%m为分子,n为分母% m =% 1+2*a+3*a2+4*a3+5*a4% n =% a4simplify(f4)% ans =% 1clearsyms x yfinverse(1/tan(x) %求反函数,自变量为x% ans =% atan(1/x)f = x2+y;finverse(f,y) %求反函数,自变量为y% ans =% -x2+yclearsyms x y z t u;f = 1/(1 + x2); g = sin(y); h = xt; p = exp(-y/u);compose(f,g) %求f = f(x) 和 g = g(y)的复合函数f(g(y)% ans =% 1/(1+sin(y)2)clearsyms a bsubs(a+b,a,4) %用4替代a+b中的a% ans =% 4+bsubs(cos(a)+sin(b),a,b,sym(alpha),2) %多重替换% ans =% cos(alpha)+sin(2)f=sym(x2+3*x+2)% f =% x2+3*x+2subs(f, x, 2) %求解f当x=2时的值% ans =% 12% 方程求解%9.方程求解% 1代数方程% 代数方程的求解由函数solve实现:% solve(f) 求解符号方程式f% solve(f1,fn) 求解由f1,fn组成的代数方程组% 2常微分方程% 使用函数dsolve来求解常微分方程:% dsolve(eq1, eq2, ., cond1, cond2, ., v)clearsyms a b c xf=sym(a*x*x+b*x+c=0)solve(f) % ans =% 1/2/a*(-b+(b2-4*c*a)(1/2)% 1/2/a*(-b-(b2-4*c*a)(1/2)solve(1+x=sin(x) % ans =% -1.9345632107520242675632614537689dsolve( Dy=x ,x) %求微分方程y=x的通解,指定x为自变量。% ans =% 1/2*x2+C1dsolve( D2y=1+Dy ,y(0)=1,Dy(0)=0 ) %求微分方程y=1+y的解,加初始条件% ans =% -t+exp(t)x,y=dsolve(Dx=y+x,Dy=2*x) %微分方程组的通解% x =% -1/2*C1*exp(-t)+C2*exp(2*t)% y =% C1*exp(-t)+C2*exp(2*t)% ezplot(y)方程解y(t)的时间曲线图% funtoolfuntool %该命令将生成三个图形窗口,Figure No.1用于显示函数f的图形,% Figure No.2用于显示函数g的图形,% Figure No.3为一可视化的、可操作与显示一元函数的计算器界面。% 在该界面上由许多按钮,可以显示两个由用户输入的函数的计算结果:% 加、乘、微分等。funtool还有一函数存储器,允许用户将函数存入,% 以便后面调用。在开始时,% funtool显示两个函数f(x) = x与g(x) = 1在区间-2*pi, 2*pi上的图形。% Funtool同时在下面显示一控制面板,% 允许用户对函数f、g进行保存、更正、重新输入、联合与转换等操作。% taylortool %该命令生成一图形用户界面,显示缺省函数f=x*cos(x)% 在区间-2*pi,2*pi内的图形,同时显示函数f% 的前N=7项的Taylor多项式级数和(在a=0附近的)图形,% 通过更改f(x)项可得不同的函数图形。% taylortool(f) %对指定的函数f,用图形用户界面显示出Taylor展开式% maple内核访问函数% 可以访问maple内核的matlab函数:% maple 访问maple内核函数% mapleinit maple函数初始化% mpa maple函数定义% mhelp maple函数帮助命令% procread maple函数程序安装% 具体的操作参看相关说明
展开阅读全文