基础知识简介_第1页
基础知识简介_第2页
基础知识简介_第3页
基础知识简介_第4页
基础知识简介_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MATLAB 基础知识一、MATLAB简介二、MATLAB基础知识1、命令窗口是用户与MATLAB进行交互作业的主要场所,用户输入的MATLAB交互命令均在命令窗口执行。例如:在MATLAB命令窗口下键入a=3 2 3;4 7 6;7 5 9按回车键后,显示结果a= 3 2 3 4 7 6 7 5 92、求逆矩阵命令格式:变量=inv(参数)例如:输入b=inv(a),按回车后,显示b= 1.3750 -0.1250 -0.37500.2500 0.2500 -0.2500-1.2083 -0.0417 0.5417 3、MATLAB系统还具有保存历史纪录的功能,它将本次启动MATLAB系统之

2、后,用户输入的命令和创建的所有变量的值保存起来,用户通过方向键可查找所需的命令。MATLAB提供了存储变量和删除变量的命令。SAVE 文件名变量名1,变量名2,.功能:将命令中的变量保存在给出的文件中。说明:(1)若过文件名省略,默认保存在MATLAB.MAT中。 (2)若变量名省略,则保存所有的变量到指定的文件中。 (3)若文件名和变量名都省略,则保存所有定义过的变量到MATLAB.MAT中。例如:SAVE AA.MAT a b c %将变量a b c保存在文件AA.MAT中。 SAVE BB.MAT % 将所有的变量保存到文件BB.MAT中。 SAVE % 将所有变量保存到文件MATLAB

3、.MAT中。clear 变量名1 变量名2,.功能:删除指定的变量。说明:若变量名表省略,表明删除当前工作空间中的所有变量。例如:clear a b c %删除变量a b c clear %删除当前工作空间的所有变量。MATLAB还提供了一些命令,专门管理和控制命令窗口。例如:clc 格式:clc功能:清除命令窗口。home 格式:home功能:光标移动到左上角who格式:who功能:查看当前的所有变量,只给出变量名。whos格式:whos功能:查看当前的所有变量,给出变量的详细信息。信息同变量浏览器。clear格式:clear 变量名功能:删除后面列出的变量,如果变量名省略,则删除所有的变量

4、。4、MATLAB中的常量MATLAB提供了整数、实数、复数和字符四种类型数据。对应的常量类型也是这四种。实数在屏幕显时默认的小数位数为4位。可以用命令改变实数的显示格式。命令format格式:format 格式例如:format long :输出实数为16位 format short e :5位加指数 format long e : 16位加指数 format rat : 有理数近似矩阵操作1、 提取矩阵的元素例如:A=1 2 3 3; 3 2 4 1; 3 4 5 6执行b=A(1,2),结果为:b= 2执行v=A(1,2,3,4),结果为:v= 3 34 12、 矩阵的修改例如:执行A(

5、1,2)=3后,结果为:A= 1 3 3 3 3 2 4 13 4 5 6作用:修改了第一行第二列的元素值。执行 A(: ,3)= 后,结果为:A= 1 3 33 2 13 4 6相当于删除了第三列。接着执行A(2, :)= 后,结果为:A= 1 3 3 3 4 6 相当于删除了第二行。说明: 只能删除矩阵的某一行或某一列, 不能删除某一个元素。3、 有关矩阵的其他操作(1) 提取矩阵的上三角矩阵和下三角矩阵A= 1 3 34 2 14 4 6执行B=triu(A)后,结果为:B= 1 3 30 2 10 0 6执行C=tril(A)后, 结果为:C= 1 0 04 2 04 4 6(2) 提

6、取矩阵的对角元素执行B=diag(A)后,结果为:B= 1 2 6(3) 利用向量建立对角矩阵执行C=diag(B)后,结果为:C= 1 0 0 0 2 0 0 0 6(4) 矩阵的秩、特征向量和特阵值 A= 1 3 3 4 2 4 3 4 5 执行rank(A)后,结果为: %求矩阵的秩ans=2执行eig(A)后, 结果为: %求矩阵的特征值ans= 10.0000-2.0000-0.0000执行v, d=eig(A)后, 结果为: %求矩阵的特征向量和对应的特征值组成的对角阵v = -0.4243 0.5883 0.4243 -0.5657 -0.7845 0.5657 -0.7071

7、0.1961 -0.7071d = 10.0000 0 0 0 -2.0000 0 0 0 -0.0000(5) 矩阵的算术运算和矩阵元素之间的运算 a= 1 2 3 2 b= 2 1 1 2 执行c=a+b后,结果为:c= 3 3 4 4执行d=a-b后,结果为:d= -1 1 2 0 执行e=a*b后,结果为:执行f=a.*b后,结果为:f= 2 2 3 4执行g=a.b后,结果为:g= 2 1/2 1/3 1执行h=a./b后,结果为:h= 1/2 2 3 1执行j=a.b后,结果为:j= 1 2 3 4执行k=b.3后,结果为:k= 8 1 1 8 试验二 MATLAB程序设计1、关系

8、运算符< 小于 <= 小于等于 >大于 >=大于等于 = =等于 =不等于格式:A 关系运算符 B例如:a=-1 2 4;5 4 8; b=0 1 5;5 1 2;则 c=a>bc=0 1 0 0 1 1 2、逻辑运算符逻辑与:& , 格式:c=a&b逻辑或:| ,格式:c=a|b逻辑非: ,格式:c=a例如:c=a&bc=0 1 1 1 1 1c=a|bc=1 1 1 1 1 13、程序的控制结构选择结构:(1)if语句格式1: if <表达式> <语句组1> end格式2: if <表达式> <

9、语句组1> else <语句组2>end格式3: if <表达式> <语句组1> elseif <表达式2> <语句组2>.elseif <表达式n> <语句组n>else <语句组n+1>end格式4:if <表达式> if <表达式1> <语句组1> else <语句组2>endelse if <表达式2> <语句组3> else <语句组4>endend(2)switch语句格式:switch 表达式 c

10、ase 表达式值1语句组1 case 表达式值2语句组2. case 表达式值n语句组n otherwise语句组n+1 end例1:data=input(input the value of data);n=mod(data, 5);switch n case 1 y=1; case 2 y=2; case 3 y=3; case 4 y=4 otherwise y=n;end y 例2:var=input(input a number);switch var case 1disp(1) case 2,3,4 disp(2 or 3 or 4) case 5 disp(5) otherwis

11、e disp(something else)end(3)while 语句格式:while(表达式) 语句组 end例3:使用while语句求1+2+3.+100。 i=1;sum=0;while(i<=100) sum=sum+i: i=i+1; endstr=计算结果为:num2str(sum);(4)for循环语句格式:for 循环变量=初始值:增量:终值 语句组; end例4:使用for语句求1+2+3.+100。 sum=0; for i=1:100 sum=sum+i; end str=计算结果为:num2str(sum); disp(str)4、函数M-文件 格式: func

12、tion 输出参数表=函数名(形式参数)语句组 end说明:(1)函数M-文件独自保存为一个文件,文件名就是函数名。 (2)调用格式:输出参数表=函数名(实际参数) (3)输出参数可以是多个变量,两两之间用逗号隔开,它们表示要计算的项; (4)形式参数是一组形式变量,本身没有任何意义,也不代表任何内容,只有在调用时赋予它实际值,才有意义。例5:求向量的平均值和标准差 function mean, stdev=stat(x) n=length(x); mean=sum(x)/n; stdev=sqrt(sum(x.2)/n-mean.2); end 说明:函数M-文件保存为stat.m。leng

13、th(x):求向量x的长度。 sum(x):求向量x 中各个元素的总和,如果x是一矩阵,则按列求和。 sqrt(x):求x的平均值。调用:重新打开一m文件,输入:x=1 2 3;6 2 1;-1 -6 -4; mean, stdev=stat(x); 然后保存为任一文件名即可。(除函数名外)试验三函数极限与导数1、函数的极限格式:limit(表达式,变量,常量,right和left)含义:当变量趋向于常量时,表达式的左极限或右极限。说明:(1)当变量省略时,默认的变量是x,没有x时,找字母表中离x最近的字母作为变量。 (2)当常量省略时,默认为0。 (3)在不说明是左极限还是右极限时,求表达式

14、的极限。例如: syms x a t hlimit(sin(x)/x);limit(x-2)/(x2-4),2);limit(1+x)/x)(2*x),x,inf);v=(1+a/x)x,exp(-x);limit(v,x,inf,left);2、导数与微分求导公式格式:diff(表达式,变量,阶数)功能:它表示将“表达式”按照“变量”求“阶数”阶导数。说明:若阶数省略,则表示求一阶导数。例如:syms xf=log(x);diff(f)diff(f,4)g=(x+exp(x)*sin(x)(1/2);diff(g)pretty(ans)diff(g,2)simplify(ans)pretty

15、(ans)3、积分格式:int(被积函数,积分变量,积分下限,积分上限)功能:求“被积函数”对“积分变量”从“积分下限”到“积分上限”的定积分。说明:当积分上下限省略时,求“被积函数”的不定积分。例如: syms x a bint(x*log(x)int(1/(1+sqrt(1-x2)int(cos(log(x)eval(int(exp(-x2),x,-1,1)eval(int(exp(-x2),x,-inf,1)eval(int(exp(-x2),x,-inf,inf)试验四 微分方程、多元函数微积分一、解方程1、代数方程格式:solve(f,t)功能:对变量t解方程f=0,t缺省时默认为x

16、或最接近字母x的符号变量。例如:求解一元二次方程f=a*x2+b*x+c的实根,执行 solve(f,x)结果为: ans=1/2/a*(-b+(b2-4*a*c)(1/2) 1/2/a*(-b-(b2-4*a*c)(1/2)又如:求解一元二次方程g=4*x2+6*x-9的实根,执行 solve(g,x); eval(ans)结果为:0.9271 , -2.42712、微分方程(1)常微分方程的同解当微分方程中不含任何附加条件(初值条件)时,其解就是该方程的通解。格式:dsolve(微分方程, 自变量)说明:其中“微分方程”和“自变量”都按字符串形式给出,并用单引号括住,且当自变量为t时可省略

17、。例如:syms x y z t a bdsolve(Dy-x*Dy=a*(y2+Dy),x)注:Dy<=>y, D2y<=>y”, D3y<=>y”,依次类推。dsolve(D3y=exp(2*x)-cos(x),x)(2) 常微分方程的特解格式:dsolve(微分方程,初值条件1,初值条件2,.,自变量)说明:y(x0)=y0<=>y|x=x0=y0 ;Dy(x0)=y1<=> y|x=x0=y1 。例如:syms x y z t a bdsolve(Dx=a*x*(b-x),x(0)=x0) ; 自变量为tdsolve(x*D2

18、y+Dy=0,y(1)=1, Dy(1)=6,x)(3)常微分方程组求解对于无初值条件的微分方程组,其通解的求法格式为:dsolve(微分方程1,微分方程2,自变量)对于带初值条件的微分方程组,其特解的求解格式为:dsolve(微分方程1,微分方程2,条件1,条件2,自变量)例如:求 的通解和特解,其命令如下:syms x f g hf1,g1=dsolve(D2f+3*g=sin(x), Df+Dg=cos(x),x)f,g=dsolve(D2f+3*g=sin(x), Df+Dg=cos(x),Df(2)=0,f(0)=0,g(0)=0,x)二、多元函数微积分1、多元函数极限这里我们仅对极

19、限存在的函数,求沿坐标轴方向的极限。,即将求多元函数极限问题,化成求多次单极限的问题。例如:syms x y z t a blimit(limit(x2+y2)/(sin(x)+cos(y),0),pi)limit(limit(limit(x+y*z+exp(sin(x*z)/(x+y/z),1),2),3)2、多元函数偏导数对多元函数中的某一变量求偏导数,等价于将其余变量看作常量,仅对该变量求导数。syms x y z t u vdiff(x3+2*x*y+y2-6,x)diff(diff(x3+2*x*y+y2-6,x),y)试验五 绘图和级数一、化简和代换simplify 利用各种恒等式

20、化简代数式expand 将乘积展开为和式factor 把多项式转换为乘积形式collet 合并同类项horner 把多项式转换为嵌套表示形式 例如:合并同类项: collect(3*x3-0.5*x3+3*x2) 结果为: ans=5/2*x3+3*x2进行因式分解执行: factor(3*x3-0.5*x3+3*x2) 结果为: ans=1/2*x2*(5*x+6)展开多项式执行: expand(x-a)*(x-b) 结果为: ans=x2-x*b-a*x+a*b把多项式转换成嵌套表示形式执行: horner(x3-6*x2+11*x-6)结果为: ans=-6+(11+(-6+x)*x)*

21、x二、绘图命令matlab 提供了两个非常简便的绘图命令,分别如下:1、格式:ezplot(f, xmin, xmax) 功能:绘出以x为横坐标的曲线f,x在xmin, xmax内取值,当xmin和xmax缺省时,默认xmin=-2*pi,xmax=2*pi。 例如:描述函数cos(2*x)在区间-2*pi, 2*pi上的图形,执行命令如下:ezplot(cos(2*x), -2*pi, 2*pi)2、格式:plot(x, y, 格式串, ) 功能:绘出以x为横坐标y为纵坐标的散点图或折线图。其中,x和y为同维向量,“格式串”指定图形格式,包括颜色、线形等。 例如:执行 x=1 2 3 5 8

22、; y=1 14 19 22 37; plot(x, y, -*k)其中,-*k表示黑色实线,点用“*”表示。初等函数的图形:x=linspace(-pi,pi,60);z=linspace(0.1,2*pi,60);t=linspace(-1,1,60);u=linspace(-10,10,60);y1=x; y2=x.2; y3=x.3;y4=x.4;subplot(3,2,1);plot(x,y1,-,x,y2,:,x,y3,-.,x,y4,- -);axis(-pi pi -2 5);text(-0.5,4,幂函数);三、级数1、常数项级数格式:symsum(一般项,变量,起始,终止)

23、功能:用指定变量从“起始”到“终止”求级数和。当“终止”值取有限值时,可求出级数指定项数的部分和。例如:symsum(1/n2,n,1,10);symsum(1/n,n,1,10);symsum(1+n)/(1+n2),n,1,10);当“终止”值为inf时,可求出级数的收敛和。例如:symsum(1/n2,n,1,inf);symsum(1/n,n,1,inf);symsum(1+n)/(1+n2),n,1,inf);当“终止”值为变量,比如取m时,可求得级数部分和数列的一般项,该一般项以m为变量,当时,取得极限即为收敛和。例如:symsum(1/n,n,1,m)symsum(1/n2,n,

24、1,m);symsum(1+n)/(1+n2),n,1,m);2、幂级数幂级数的收敛半径:,求的收敛半径,用与求常数项级数收敛和相同的办法求幂级数的收敛和函数。例如:syms x nlimit(n+1)/n,n,inf)symsum(-1)(n-1)*xn/n,n,1,inf)limit(2(n+1)*(n+1)/(2n*n),n,inf)symsum(x-1)n/(2n*n),n,1,inf)3、将函数展开成幂级数格式:taylor(函数,阶数n,x0点,变量x)功能:将给定“函数”在“x0点”处按“变量x”展开成n-1阶的泰勒级数。说明:(1)阶数n省略,默认为6; (2)x0点省略,默认

25、为0; (3)“变量x”省略,默认用findsym(f)查找默认变量。 (4)后面的三个参数顺序还可以打乱次序,但若x0点和阶数均为整数时,必须阶数在前,x0点在后。例如:taylor(exp(-x),x,8,7)表示将在x0=7点处展开为七阶泰勒级数。taylor(exp(x) %将在x=0点展开成5阶泰勒级数。taylor(exp(-x2),x,n) %将在x=n点展开成5阶泰勒级数.taylor(cos(x),8) %将cos(x)在x=0点展开成7阶泰勒级数注:参数终止给出一个整数,认为是阶数。四、傅立叶级数三角级数:其中, (n=0,1,2,3,), (n=0,1,2,3,),正弦级

26、数: (n=0,1,2,3,)余弦级数: (n=0,1,2,3,)在matlab中,编写以下四个函数mfourier(f), msin(f), mcos(f)和mlfourier(f, l),分别用于求函数f的傅立叶级数、正弦级数、余弦级数,以及周期为2l的傅立叶级数的系数。function a0, an, bn=mfourier(f)syms n xa0=int(f, -pi, pi)/pi;an=int(f*cos(n*x), -pi, pi)/pi;bn=int(f*sin(n*x), -pi, pi)/pi;endfunction bn=msin(f)syms n xbn=int(f*

27、sin(n*x), -pi, pi)/pi;endfunctiona0, an=mcos(f)syms n xa0=int(f, -l, l)/pi;an=int(f*cos(n*x), -pi, pi)/pi;endfunction a0, an, bn=mlfourier(f, l)syms n xa0=int(f, -pi, pi)/pi;an=int(f*cos(n*pi*x/l), -l, l)/l;bn=int(f*sin(n*pi*x/l), -l, l)/l;end说明:以上四个函数分别保存在四个M-文件中,以函数名作为文件名。试验六 方程组求解和数值微积分一、欠定方程组的求解

28、若有方程组AX=B,其中X为m个变量构成的列向量,一共有n个方程,则A为n*m矩阵。若rank(A)<m,则方程有无穷多组解,称为欠定方程组。若b中元素全为0,称方程组为其次线形方程组。1、齐次线性方程组的求解如方程组:在MATLAB中输入A=1 -2 3 -4;0 1 -1 1;-1 0 -1 2;1 -3 4 -5;a=null(A) %返回矩阵A的零空间的标准正交基组成的矩阵a。a= 0.7888 -0.2110 -0.4999 -0.2889 -0.2110 -0.7888 0.2889 -0.4999因而,原方程的通解为: %其中k1与k2为任意常数。 2、欠定方程组的求解从理

29、论上说,欠定方程组有无穷多组解。这时,我们仍然可用广义逆矩阵法和矩阵除法求解方程组。前者所求的解是所有解种范数最小的一个,而后者求的解是所有解中含零个数最多的一个。他们求出的解是所有解系中的一个特解。要求其通解,则先解其对应的齐次方程的通解,然后再加上自身的一个特解即可。如:A=1 -2 3;0 1 -1;-1 0 -1;1 -3 4; b=4 -3 -4 1; x=pinv(A)*b x= -2.2549 1.2157 1.0392 y=Ab waring: rank deficient, rank=2 tol=4.6151e-015. y= 0 3.4706 3.2941 B=null(A

30、) B= 0.5774 -0.5774 -0.5774故方程组的通解为 或 二、数值微积分 1、数值微分 多项式求导法求微分 若已知函数在某些接点处的值,(1)只要用曲线拟合法得到一个函数近似多项式(即用多项式近似代替函数),(2)再对该多项式求微分,(3)然后对微分后的多项式求值,便可以方便的求出在拟合范围内的任一点处的任意阶微分。 几个命令: polyfit(x, y, n)利用数据点向量x和y拟合一个n次多项式,返回多项式系数向量,系数由高次方朝低次方顺序排列。polyder(P)返回多项式P求导后对系数向量。polyval(P, x0)计算多项式P在点x0处的值。P是多项式系数。根据上

31、述几个函数,我们编写一个利用多项式方式求任何函数在任一点处的任意阶导数的近似值。fpder(f, x0, n, m, d, k)f: 欲求导函数的符号表达式;x0: 固定点,即求函数在该点处的导数;n: 表示求导阶数,默认为一阶导数;m: 为多项式最高次数,表示用m次多项式近似模拟给定函数,默认为6;d: 为半区间长度,即在x0-d, x0+d区间内拟合多项式,默认值为1;k: 为区间采样点数,即在闭区间x0-d, x0+d上采k+1个点来拟合多项式,默认值为20;函数如下:function y=fpder(f, x0, n, m, d, k)if nargin<6 k=20;endif

32、 nargin<5 d=1.0;endif nargin<4 m=6;endif nargin= =2 n=1;endx=x0-d:2*d/k:x0+d;y=eval(f);p=polyfit(x, y, m);pp=p;for n1=1:n pp=polyder(pp);endy=polyval(pp,x0);例如:fpder(sin(x), pi/4, 3, 10, 0.5, 10)fpder(exp(-x), 1)fpder(exp(-x.2), 1, 5, 10, 0.5)2、数值积分 数值积分就是对那些不能求积分或不易求积分的函数提供的一种较精确的积分方法。在MATLAB

33、中,有两个函数是专门求数值积分的函数,分别是: quad(函数名串, a, b, tol, trace) 和 quad8(函数名串, a, b, tol, trace)说明:函数名串是matlab内建函数的函数名或用户自定义函数的函数名; a为积分下限;b为积分上限; tol 为数值方法允许误差;默认为10-3; trace一般为零。 quad8()和quad()的用法完全相同。但在功能上有所区别:前者用newton-cotes法求数值积分,后者用simpson法求数值积分。例如:quad(sin,0,pi)quad(sin,0,pi,1e-6)quad(log,0.1,1)再定义两个函数f1

34、(x)和f2(x)如下:function y=f1(x)y=1./(1+x.4);function y=f2(x)y=log(1+tan(x);则有 quad(f1,0,1) quad(f2,0,pi/4) 3、微分方程数值解一般情况下,除了简单的微分方程外,要找出微分方程解的解析表达式是极其困难的,有时甚至是不可能的。微分方程数值解法是能够计算出解在若干个离散点上近似结果的一种通用方法。MATLAB提供了一些求解微分方程(组)的数值方法函数。ode23( ) %低阶法解非刚性微分方程ode113( ) %变序法解非刚性微分方程ode15s( ) %变序法解刚性微分方程ode23s( ) %高

35、阶法解刚性微分方程 以ode23( )函数为例,其格式为 ode(F,Tspan, y0,OPTIONS)说明:(1)F为函数名,即要将微分方程存入一个函数文件中,然后调用。(2)Tspan为一向量t0,tm或t0,t1,t2,tn,前者是求解区间,后者是指定要求解的点,必须按升序或降序排列。(3)y0为初值条件,即;(4)OPTIONS可以制定一系列可选项,包括允许绝对误差、允许相对误差、是否作图等等。当该项省略时,使用软件默认值。(5)当微分方程为方程组时,F与y0均为向量,F为微分方程中的F(t,y)函数。例如:求微分方程在区间1,1.1的数值解;再求点1,1.02,1.04,1.06,1.08,1.10处的近似值。编写下述函数,并以df1为文件名存盘:function F=df1(t,y)F=t2+y/t ;然后分别用函数ode23( ), ode45( )和ode113( )在区间1,1.1上求方程的数值解。格式:T,Y=函数(参数)说明:T位子变量值,Y为对应于T的因变量值,若直接使用函数,可画出数值解的图形。 ode23(df1,1,1.1,0.5)T, Y=ode23(df1,1,1.1,0.5)T,Y=ode23(df1,1,1.02, 1.04,1.06,1.08,1.10,0.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论