




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章1. 叙述MATLAB的主要窗口包括哪些?其作用是什么?命令窗口 (Commend Window)供输入命令,实现计算或绘图功能。工作空间窗口(Workspace)用于列出数据的变量信息,包括变量名、变量字节大小变量数组大小、变量类型等内容。当前目录浏览器(Current Directory )(Current folder 7.9版) 显示当前目录下所有文件的文件名、文件夹类型和最后修改时间等内容。命令历史窗口 ( Commend History )显示窗口所有执行过的命令,利用该窗口,可以查看曾经执行过的命令,也可以重复利用这些命令。2.MATLAB的变量命名有什么规则?能用”pi”来作为变量名吗,为什么? .变量名区分大小写;变量名最多包含63个字符,其后的字符将被忽略;变量名必须以一个字母开始,其后可以是如意数量的字母、数字或下划线;变量名中不允许出现标点符号,因为许多标点符号在MATLAB中有特殊意义。 不能以“pi”来作为变量,因为“pi”在MATLAB中默认为3.1416,若要定义可改为大写的”PI”。3.复数表达,及计算。本例演示:正确的复数输入法;涉及复数表示方式的基本指令。z1= 4 + 3iz2 = 1 + 2 * iz3=2*exp(i*pi/6)z=z1*z2/z3 求实部和虚部,模和辐角,以及幅角由弧度制转换成角度制real_z=real(z)image_z=imag(z)magnitude_z=abs(z)angle_z_radian=angle(z)%弧度单位angle_z_degree=angle(z)*180/pi%度数单位 help列出所有函数分组名(Topic Name)who 查询指令save4.ans含义是:Ans是MATLAB默认的变量,如果用户未定义变量名,系统用于计算结果存储的默认变量名5.clear含义是清除工作空间的变量 clc表示清除命令窗口所有指令clf表示清除.fig的已有图形6.m是表示函数或脚本文件的后缀;mdl表示simulink文件后缀;.fig图形文件后缀;.mat是数据文件后缀。第二章0、sym和syms最主要的区别是:sym是定义单个符号变量而syms是定义多个变量digits(n):设定符号数字“十进制浮点”表示的有效数字位数vap(x):根据表达式x得到digits指定精度下的符号数字vap(x,n):根据表达式x得到n为有效数字的符号数字1、 利用sym函数可以建立符号矩阵并化简 syms a b x ym=sym(1/(a+x),sin(x)*sin(x)+cos(x)*cos(x),(b-x)/(a+x);1,exp(x),x2-y2)factor(m)%对符号矩阵因式分解 simplify(m)%对符号矩阵化简处理2、 例如(2)符号矩阵的另种创建,并确定其中的未知参量syms a b t u v x yA=a+b*x,sin(t)+u;x*exp(-t),log(y)+vsymvar(A,1) 3、求极限syms a m x;f=(x*(exp(sin(x)+1)-2*(exp(tan(x)-1)/(x+a);limit(f,x,a) syms x t;limit(1+2*t/x)(3*x),x,inf) 4、微分diff函数用于对符号表达式求导数。该函数的一般调用格式为:diff(f):没有指定变量和导数阶数,则系统按findsym函数指示的默认变量对符号表达式s求一阶导数。diff(f,v):以v为自变量,对符号表达式s求一阶导数。diff(f,n):按findsym函数指示的默认变量对符号表达式s求n阶导数,n为正整数。diff(f,v,n):以v为自变量,对符号表达式s求n阶导数。附加例子 求下列函数的导数。 syms x y z a t; f=exp(-x)+x; diff(f) (2)f=cos(x2),求二阶导数,三阶导数 f=cos(x2);diff(f,x,2) (3)diff(f,x,3)%3阶导数【例2.3-2】求syms a t x;f=a,t3;t*cos(x), log(x);df=diff(f)dfdt2=diff(f,t,2)dfdxdt=diff(diff(f,x),t) 【例2.3-5】设cos(x+siny)=siny求siny求导实际上是:对上式两端求导后有再通过求方程求出要经过以下3个过程(1)建立方程并利用diff求复合函数导数clearsyms xg=sym(cos(x+sin(y(x)=sin(y(x)% dgdx=diff(g,x)% g =cos(x + sin(y(x) = sin(y(x)dgdx =-sin(x + sin(y(x)*(cos(y(x)*diff(y(x), x) + 1) = cos(y(x)*diff(y(x), x) (2)利用subs将diff(y(x),x)置换成dydx因为diff(y,x)不能作为变量名字dgdx1=subs(dgdx,diff(y(x),x),dydx) dgdx1 =-sin(x + sin(y(x)*(dydx*cos(y(x) + 1) = dydx*cos(y(x) (3)从复合方程中求取未知参量的dydx,即dydx=solve(dgdx1,dydx) dydx =-sin(x + sin(y(x)/(cos(y(x) + cos(y(x)*sin(x + sin(y(x) 5、序列/级数的符号求和s=symsum(f,v,a,b)求通式f在指定变量v取变a,b中所有整数时的和说明f,可以使矩阵,求和是对元素v缺省时findsym自动辨认的顺序(symvar)a,b缺省时,默认的是0 v-1区间【例2.3-8】求。(1)有限项之和syms n kf1=1/(k*(k+1);s1=symsum(f1,k,1,n)(2)无限项之和注意是对k求和,所以要设k为第一变量f2=x(2*k-1)/(2*k-1);s2=symsum(f2,k,1,inf) (3)符号通式数组矩阵级数和f3=1/(2*k-1)2,(-1)k/k;s3=symsum(f3,k,1,inf) 6 、符号积分求积分指令调用格式intf=int(f,v)给出f指定变量v的不定积分intf=int(f,v,a,b)给出f对指定变量的定积分说明:若f为数组是,应为对数组中元素不定积分 v缺省时:为symvar默认的变量 a,b积分上下限,允许取任何值或符号表达式【例2.3-9】不定积分(用int对表达式求不定积分,并用simple化简)clearsyms a b xf1=x*log(x)s1=int(f1,x)s1=simple(s1)% f1 =x*log(x)s1 =(x2*(log(x) - 1/2)/2s1 =x2*(log(x)/2 - 1/4) 【例2.3-10】求积分。用int对数组求取不定积分syms a x b f2=a*x,b*x2;1/x,sin(x)INTF2=int(f2)pretty(INTF2) f2 = a*x, b*x2 1/x, sin(x)INTF2 = (a*x2)/2, (b*x3)/3 log(x), -cos(x) +- -+ | 2 3 | | a x b x | | -, - | | 2 3 | | | | log(x), -cos(x) | +- -+ 【例2.3-11】求三重积分,用先用int对z积分,再用int对y积分,再用int对x求积分,共利用调用int积分3次。syms x y zF2=int(int(int(x2+y2+z2,z,sqrt(x*y),x2*y),y,sqrt(x),x2),x,1,2)VF2=vpa(F2)%结果显示32数字7、求微分方程符号解的一般指令调用格式如:S=dsolve(eq1,eq2,.eqn,cond1,cond2,condn,v)S=dsolve(eq1,eq2,.eqn,cond1,cond2,condn,v)说明:输入量包括微分方程,初始条件,边界条件,指定独立变量 微分方程式必须有的,其余可有可无说明:输入量必须以字符串形式编写。若不对独立变量加以专门定义,则默认小写英文字母t为独立变量微分方程规定,当y是“因变量”时,用Dny表示“y的n阶导数”。在t为默认独立变量时,Dy表示dy/dt,Dny表示dy/dt关于初始条件规定Y(a)=b,Dy(c)=d,a,b,c,d可以使变量以外的其他字符,当初始条件少于微分方程个数时,在所得解中将出现任意常数符号C1,C2,.解中任意常数符的数目等于所缺少的初始条件数目。2.4.3微分方程符号解实例求【例2.4-1】clear all% S=dsolve(Dx=y,Dy=-x)%disp( )disp(微分方程的解,blanks(2),x,blanks(22),y)disp(S.x,S.y) 例子 解s=dsolve(D2y+3*Dy+2*y=3*sin(x),y(0)=1, Dy(0)=2,x)8 Laplace变换及其反变换 及傅立叶变换Laplace变换及其反变换的定义函数调用格式为Fs=laplace(ft,t,s),求“时域”函数ft的laplace变换ft=ilaplace(Fs,s,t),求“复频域”函数的Fs的laplace逆变换例如计算y=x3的拉普拉斯变换及其逆变换。syms x S;y=x3; FS=laplace(y,x,S) ft=ilaplace(FS,S,x) 傅立叶正变换的函数:FW=fourier(ft,t,w)傅立叶逆变换的函数:ft=ifourier(ft,w,t)9、符号矩阵分析和代数方程解2.6.1符号矩阵分析表2.6.1符号矩阵分析和解算指令汇总表表中需要特别掌握的有det 行列式的值inv(A):矩阵的逆举例与说明syms a11 a12 a21 a22A=a11,a12;a21,a22DA=det(A)IA=inv(A)diag(A)取对角元构成向量,或据向量构成对角阵(1)用法1设A为mn矩阵,diag(A)函数用于提取矩阵A主对角线元素,产生一个具有min(m,n)个元素的列向量。diag(A)函数还有一种形式diag(A,k),其功能是提取第k条对角线的元素。例如:a=1 2 3 4;5 6 7 8;9 10 11 12d=diag(a) d1=diag(a,1)d2=diag(a,-1) (2)用法2构造对角矩阵设V为具有m个元素的向量,diag(V)将产生一个mm对角矩阵,其主对角线元素即为向量V的元素。例如diag(1,2,-1,4)rank(A):矩阵的秩A=rand(5) C=rank(A) tril:A的下三角求矩阵A的下三角阵的MATLAB函数是tril(A,n)。a = 7 13 28;2 -9 8;0 34 5 b=tril(a,-1) triu:A的上三角上三角矩阵求矩阵A的上三角阵的MATLAB函数是triu(A,n)。a = 7 13 28;2 -9 8;0 34 5 b=triu(a,1) 10、一般代数方程组的解 在MATLAB中,求解用符号表达式表示的代数方程可由函数solve实现,其调用格式为:S=solve(s):求解符号表达式s的代数方程,求解变量为默认变量。solve(s,v):求解符号表达式s的代数方程,求解变量为v。S=solve(eq1,eq2,eqn,v1,v2vn):eq1,eq2,eqn字符串表达式或字符串表达式方程,字符串表达式求解变量分别v1,v2,vn。S=solve(exp1,exp2,expn,v1,v2,.vn)exp1,exp2,expn,只能是字符串表达式,v1,v2,.vn字符串表达式求解变量注意:()S是一个构架数组如果要显示求解结果,必须采用S.v1,S.v2,S.vn()在得不到“封闭型解析解”时,如果又不存在其他不确定参数,就给出数值解。【例 2.6-3】求线性方程组(1)采用矩阵除的线性方程解法; AX=bA=sym(1 1/2 1/2 -1;1 1 -1 1;1 -1/4 -1 1;-8 -1 1 1);b=sym(0;10;0;1);X1=Ab% (2)solve求代数方程解。eq1=sym(d+n/2+p/2-q);% eq2=sym(d+n-p+q-10);%eq3=sym(d-n/4-p+q);%eq4=sym(-8*d-n+p+q-1);%S=solve(eq1,eq2,eq3,eq4,d,n,p,q);% disp( d, n, p, q)disp(S.d,S.n,S.p,S.q)% 例如解下列方程。(1)1/(x+2)+a=1/(x-2) syms x a x=solve(1/(x+2)+a=1/(x-2),x) 【例2.6-4】求方程组(会一种方法即可)方法1syms x y z v w uS=solve(u*y2+v*z+w=0,y+z+w=0,y,z)% disp(S.y),disp(S.y),disp(S.z),disp(S.z)% 方法2S=solve(u*y2+v*z+w,y+z+w,y,z) disp(S) 方法3 syms x y z u v wS=solve(u*y2+v*z+w,y+z+w,y,z) 方法4y,z=solve(u*y2+v*z+w=0,y+z+w=0,y,z) 方法5y,z=solve(u*y2+v*z+w=0,y+z+w=0) %求得默认的y,w为变量方法6S=solve(u*y2+v*z+w=0,y+z+w=0) % 求得默认的y,w为变量【例2.6-6】求的解clear all,syms x;s=solve(x+2)x=2,x)xs=(s(1)+2)s(1) 解方程(编程) 解 syms x y z;f1=x+2*y+z=1;f2=2*x+y-2*z=3;f3=3*x-4*y+2*z=9x,y,z=solve(f1,f2,f3)第三章1、概念什么叫3维数组:AM*N*K:表示行维M,列维N,页维K的三维数组:如=其中i行下标,j列下标,k页下标什么叫矩阵MatrixAM*N:表示M行N列构成的矩阵A:是有M*N个数,按照一定次序,排放成的M行N列矩阵阵列。如=说明矩阵的4中特殊形式(1)M=N的矩阵,称为N阶仿真(2)M=1的矩阵,称为(1*N)的行向量,简称为行向量(3)N=1的矩阵,称为(M*1)的列向量,简称为列向量(4)(1*1)的矩阵,称为标量2数组的创建方法递增/减型行(列)数组的创建数组特点:数组元素值得大小按照递增或递减的次序排列;数组之间的“差”是“确定”的,即“等步长”的用途:用在函数的自变量(1)“冒号”生成法X = A : INC : B说明:a初值,b终值inc步长例如:T=0:0.1:2*pi(2)线性(或对数)定点法x = linspace ( a , b , n )以a,b为左右端点,产生线性的n个数.步长为(b-a)/(n-1)x = logspace ( a , b , n ) 以a,b为左右端点,产生对数的n个数。例如T=linspace(0,2*pi,601)(3)其他类型行(列)数组的创建(a)逐个元素输入法如A=1 2;3 4(b)运用函数生成 如ones(1,n) eye(m,n) rand(m,n)(4)小规模数组的直接输入法二维数组的创建三要素(a)整个输入数组必须以为首尾(b)数组的行与行之间;或回车键(c)数组元素必须由,逗号或空格分开(5)中规模数组的数组编辑器创建法(6)中规模的M文件创建法3、查看数组的维度的指令及全下标和单序号编址相互转换(1)ndims(A):测量数组的维度(2)size(A):测量数组A规模的指令(1) 全下标编址和单序号编址的转换指令rowsub, colsub = ind2sub(ArraySize,IND)IND = sub2ind(ArraySize, rowSub, colSub)例如clearA=1:3:16;2:3:17;3:3:18 Ass1=A(2,3)r=2,3;c=1,5;As22=A(r,c)As26=A(1,3,:)4、非数的产生例如:以下执行结果为NaNa=0/0,b=0*log(0),c=inf-inf 5、非数的寻访例如:查找下列矩阵中非数元素R=rand(2,5);R(1,5)=NaN;R(2,3)=NaN LR=isnan(R)6、关系运算关系运算示例A=1:9,B=10-Ar0=(A1)%L2=(A0)&(A2)8、【例 3.2-3】欧姆定律:,其中分别是电阻(欧姆)、电压(伏特)、电流(安培)。验证实验:据电阻两端施加的电压,测量电阻中流过的电流,然后据测得的电压、电流计算平均电阻值。(测得的电压电流具体数据见下列程序)。12345678910均值V0.891.203.094.273.627.718.997.929.7010.41I0.0280.0400.1000.1450.1180.2580.2990.2570.3080.345R(1)非向量化编程(依赖循环编程)clearV=0.89,1.20,3.09,4.27,3.62,7.71,8.99,7.92,9.70,10.41;I=0.028,0.040,0.100,0.145,0.118,0.258,0.299,0.257,0.308,0.345;% L=length(V);%for k=1:Lr1(k)=V(k)/I(k);end% -sr=0;%for k=1:Lsr=sr+r1(k);endr1=sr/L% (2)向量编程(MATLAB特色)rL=V./I%r2=mean(rL)第四章1、计算精度可控的数值积分4.1.2数值积分中是根据传统的方法编写了2个指令,用以计算数值积分。但由于实际工程中以上2个指令可能存在精度难以控制,或不能处理广义积分,还可能运算速度慢。所以根据最新算法设计了2个函数。q=integral(fun,xmin,xmax)意义:在xmin到xmax区间上计算fun函数的精确积分(简单调用)q=integral(fun,xmin,xmax,Name,Value)意义:在xmin到xmax区间上计算fun函数的精确积分(复杂调用)说明:fun:表示被积函数的M码匿名函数或函数句柄 【例 4.1-5】(1)x=linspace(0.01,1.2,50);构造50个自变量X数组g1=x.(-0.2);g2=x.5;计算两个函数对应自变量的函数值plot(x,g1,-r.,x,g2,-b*)axis(0,1.2,0,3)legend(g_1(x)=1/x0.2,g_2(x)=x5,Location,North)title(x位于0,1间的g_1(x)曲线与g_2(x)曲线所夹的区域) 图 4.1-5 待求面积的区域(2)采用标量型匿名函数计算积分format longG1=(x)x.-0.2;%构造g1(x)匿名函数Q1=integral(G1,0,1)%在0 1区间计算g1(x)曲线下的面积G2=(x)x.5;%构造g2(x)匿名函数Q2=integral(G2,0,1)%在0 1区间计算g2(x)曲线下的面积S12=Q1-Q2 % 两曲线所夹区域的面积Q1 = 1.250000027856048Q2 = 0.166666666666667S12 = 1.083333361189381 (3)采用阵列型匿名函数计算积分G=(x)x.-0.2;5;%构造阵列性匿名函数Q=integral(G,0,1,ArrayValued,true)%复杂调用格式的 积分结果S=1,-1*Q% Q = 1.250000027856048 0.166666666666667S = 1.083333361189381 (4)符号积分验证syms t%定义符号变量Gsym=vpa(int(t.-0.2;5,0,1);%计算两个函数具有32精度的积分值Ssym=Gsym(1)-Gsym(2)%至少31位精度的曲线所围区域面积Ssym =1.0833333333333333333333333333333 2、函数极值的数值求解只有处理极小值(局域极值)指令,没有专门的极大值指令(极大值是极小值f(x)的负数即-f(x))。x,fval,exitflag,output=fminbnd(fun,x1,x2,options)求一元函数在区间(x1,x2)中极小值x,fval,exitflag,output=fminsearch(fun,x0,options)单纯形法求多远函数极值点说明:(1) fminbnd: 输入参数说明 fun:两个函数中都有的fun:待求目标函数书写方法 M文件的函数句柄 字符串 内联对象 匿名函数x1左边界;x2:右边界options:配置优化参数(通常默认即不用书写)输出参数说明x,极值点fval,目标函数exitflag,若大于0的数,说明成功的搜索岛极值点output:给出优化算法和迭代次数 (2)fminsearch输入参数说明fun:同fminbndx0,搜索七点的向量或一组搜索起点的矩阵 当采用单个起点搜索时,输出量x也是一个单点 当采用多个搜索起点(矩阵)时,该矩阵的每一列代表一个候选极值点。 搜索到的极值点按照目标函数递增次序排列。极值点x(:,1)对应的目标函数极小值由f val给出。fval,目标函数(同fminbnd)exitflag,若大于0的数,说明成功的搜索到极值点(同fminbnd)输出参数说明x,极值点(同fminbnd)fval,目标函数(同fminbnd)exitflag,若大于0的数,说明成功的搜索岛极值点(同fminbnd)output:给出优化算法和迭代次数 (同fminbnd)【例4.1-7】已知区间,求函数的最小值。本题目的思路:(1)符号计算求极值的局限性(2)fminbnd求极小值的局限性(3)求最小值时,需要整个区间的函数信息和图形法功用(先画整个区间的图示,限定好区间,再求,不能轻信fminbnd函数的结果)(1)用“导数为零”法求极值点syms xy=sin(x)2*exp(-0.1*x)-0.5*sin(x)*(x+0.1);yd=diff(y,x);%求导函数xs0=solve(yd,x)%求导函数为0的自变量值xs0yd_xs0=vpa(subs(yd,x,xs0),6)%验算用:导函数在xs0处为0吗y_xs0=vpa(subs(y,x,xs0),6)%在xs0处的函数值xs0 =0.050838341410271656880659496266968yd_xs0 =2.29589*10(-41)y_xs0 =-0.00126332 (2)采用优化算法求极小值x1=-10;x2=10;%搜索区间的边界yx=(x)(sin(x)2*exp(-0.1*x)-0.5*sin(x)*(x+0.1);%采用匿名函数形式定义被求极小值的函数y(x)xn0,fval,exitflag,output=fminbnd(yx,x1,x2)% xn0,fva1分别是极值点和函数极小值xn0 = 2.514797840754235fval = -0.499312445280039exitflag = 1output = iterations: 13 funcCount: 14 algorithm: golden section search, parabolic interpolation message: 1x112 char (3)绘图观察最小值xx=-10:pi/200:10;%采用点应做够密yxx=subs(y,x,xx);plot(xx,yxx)xlabel(x),grid on 图 4.1-5 在-10, 10区间中的函数曲线(4)距图形观察,重设fminbnd的搜索区间x11=6;x2=10;%搜索区间的边界yx=(x)(sin(x)2*exp(-0.1*x)-0.5*sin(x)*(x+0.1);%采用匿名函数形式定义被求极小值的函数y(x)xn00,fval,exitflag,output=fminbnd(yx,x11,x2)% xn0,fva1分别是极小值点和函数极小值xn00 = 8.023562824723015fval = -3.568014059128578exitflag = 1output = iterations: 9 funcCount: 10 algorithm: golden section search, parabolic interpolation message: 1x112 char 3常微分方程的数值解MATLAB提供一套好的求微分方程的指令t,Y=ode45(odefun,tspan,y0)采用4阶Runge-Kutta数值积分法解微分方程说明:(1) 输入变量:odefun:是待解微分方程的函数文件句柄。要求函数文件的输出形式必须是待解函数的一阶导数。也就是不管原方程是不是一阶导数,必须化成一阶导数的形式才可以用ode45求解。一解微分方程形式为:,y是(n*1)向量tspan:常被赋成二元向量t0,tf,此时tspan用来定义求数值解的时间区间。y0: 一解微分方程组的n*1初值列向量t: 所求数值解的自变量数据列向量(假定其数据长度为N),而Y则是(N*n)矩阵,输出量Y行中第K列Y(:,K),就是微分方程y的第k分量的解【例4.1-9】求解微分方程,在初始条件,情况下的解,并图示(1) 把高阶微分方程改写成一阶微分方程组,令写成微分方程系数矩阵(雅可比系数阵)的形式,=2(2) 根据上述一阶微分方程组编写M函数文件DyDt.mfunction ydot=DyDt(t,y)mu=2ydot=y(2);mu*(1-y(1)2)*y(2)-y(1);注意一阶导数ydot是2*1列向量(3) 解微分方程tspan=0,30;%求解的时间区间y0=1;0;%初值向量应与DyDt.m文件中y形式一致tt,yy=ode45(DyDt,tspan,y0);%plot(tt,yy(:,1)xlabel(t),title(x(t) 图 4.1-6 微分方程解(4)plot(yy(:,1),yy(:,2)%函数和其导函数勾画的曲线称为“相轨迹”xlabel(位移),ylabel(速度) 第五章1、二维曲线知识点汇总t1=(0:11)/11*pi;%12个采用点偏少知识点1t2=(0:400)/400*pi;%401个采用点密集t3=(0:50)/50*pi;%51个采样点已够y1=sin(t1).*sin(9*t1);%数组运算“知识点2”y2=sin(t2).*sin(9*t2);%数组运算y3=sin(t3).*sin(9*t3);%数组运算subplot(2,2,1),plot(t1,y1,r.)%画离散点“知识点3,4”legend(y1)%画离散点%“知识点5”axis(0,pi,-1,1),grid on,title(1)点过少的离散图形)%“知识点6,7,8”hold on %“知识点9”stem(t1,y1,og) %“知识点10”text(0.9,0.7,采样点)%“知识点11”text(0,-0.5,杆形线表示)hold off %“知识点9”subplot(2,2,2),plot(t1,y1,t1,y1,b.)%画离散点及期间的连线legend(y1)axis(0,pi,-1,1),grid on,title(2)点过少的连续图形)subplot(2,2,3),plot(t2,y2,r.)%画离散点text(0.3,0.5,sin(omegat+beta)*sin(9omegat+beta)%“知识点11”legend(y2)axis(0,pi,-1,1),title(3)点密集的离散图形)subplot(2,2,4),plot(t3,y3,cp)%画连续曲线legend(y3)axis(0,pi,-1,1),title(4)点足够的连续图形) 2练习标识的用法(自己单独练习5.2.5)clf;t=0:pi/50:2*pi;y=sin(t);plot(t,y)axis(0,2*pi,-1.2,1.2)text(pi/2,1,fontsize16leftarrowitsin(t)fontname隶书极大值)title(y=sin(t)xlabel(t)ylabel(y) 第6章1、 程序控制结构分为哪几种?顺序结构、选择结构、循环结构顺序结构(1)数据的输入从键盘输入数据,则可以使用input函数来进行,该函数的调用格式为: A=input(提示信息,选项);其中提示信息为一个字符串,用于提示用户输入什么样的数据。 如果在input函数调用时采用s选项,则允许用户输入一个字符串。例如,想输入一个人的姓名,可采用命令:xm=input(Whats your name?,s);(2)数据的输出 MATLAB提供的命令窗口输出函数主要有disp函数,其调用格式为 disp(输出项)其中输出项既可以为字符串,也可以为矩阵 例6-2 输入x,y的值,并将它们的值互换后输出。 程序如下: x=input(Input x please.); y=input(Input y please.); z=x; x=y; y=z; disp(x); disp(y);例6-3 求一元二次方程ax2 +bx+c=0的根。程序如下:a=input(a=?);b=input(b=?);c=input(c=?);d=b*b-4*a*c;x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a);disp(x1=,num2str(x(1),x2=,num2str(x(2);(3)程序的暂停 暂停程序的执行可以使用pause函数,其调用格式为: pause(延迟秒数) 如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行。 若要强行中止程序的运行可使用Ctrl+C命令。选择结构(必须由End语句结束)(1)if语句 在MATLAB中,if语句有3种格式。 (A) 单分支if语句:if 条件 语句组 end (b) 双分支if语句(完整条件句)if 条件 语句组1 else 语句组2 end 当条件成立时,执行语句组1,否则执行语句组2,语句组1或语句组2执行后,再执行if语句的后继语句。 例6-4 计算分段函数的值。 程序如下:x=input(请输入x的值:);if x=0 y= (x+sqrt(pi)/exp(2);else y=log(x+sqrt(1+x*x)/2;end (c) 多分支if语句: (完整多条件句)if 条件1 语句组1 elseif 条件2 语句组2 elseif 条件m 语句组m else 语句组n end语句用于实现多分支选择结构。(2)switch语句 switch语句根据表达式的取值不同,分别执行不同的语句,其语句格式为: switch 表达式 case 表达式1 语句组1 case 表达式2 语句组2 case 表达式m 语句组m otherwise 语句组n end例6-6 某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示): price200 没有折扣 200price500 3%折扣 500price1000 5%折扣 1000price2500 8%折扣 2500price5000 10%折扣5000price 14%折扣输入所售商品的价格,求其实际销售价格。 程序如下:price=input(请输入商品价格);switch fix(price/100) case 0,1 %价格小于200 rate=0; case 2,3,4 %价格大于等于200但小于500 rate=3/100; case num2cell(5:9) %价格大于等于500但小于1000 rate=5/100; case num2cell(10:24) %价格大于等于1000但小于2500 rate=8/100; case num2cell(25:49) %价格大于等于2500但小于5000 rate=10/100; otherwise %价格大于等于5000 rate=14/100;endprice=price*(1-rate) %输出商品实际销售价格循环结构所谓循环结构是指按照程序语句给定的条件,重复执行某些特定的语句,直到满足特定的要求跳出为止。MATLAB提供了两种循环语句:for语句和while语句(1)for语句for语句的格式为:for 循环变量=表达式1:表达式2:表达式3 它就是一个行向量 循环体语句 end其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。例6-8 一个三位整数各个位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。 程序如下:for m=100:999 %m为循环变量,其初值为100,终值为999,步长为1m1=fix(m/100); %求m的百位数字m2=rem(fix(m/10),10); %求m的十位数字m3=rem(m,10); %求m的个位数字if m=m1*m1*m1+m2*m2*m2+m3*m3*m3disp(m) %窗口输出endend例6-9 已知 ,y=1+1/3+1/5+1/2n-1; 当n=100时,求y的值。 程序如下:y=0;n=100;for i=1:n %i为循环变量,其初值为1,终值为100,步长为1 y=y+1/(2*i-1); %把n由1到100分别带入到i的位置end 在实际MATLAB编程中,采用循环语句会降低其执行速度,所以前面的程序通常由下面的程序来代替:n=100;i=1:2:2*n-1; y=sum(1./i);(2)while语句 while语句的一般格式为: while (条件) 循环体语句 end 其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环。(3).break语句和continue语句 与循环结构相关的语句还有break语句和continue语句。它们一般与if语句配合使用。break语句用于终止循环的执行。当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句。continue语句控制跳过循环体中的某些
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电工员工考试题及答案
- 企业项目执行与监控标准工具
- (正式版)DB15∕T 3259-2023 《羊肝细胞体外培养技术规程》
- 连锁餐饮食材供应链协议
- 三甲复评护理试题库及答案一
- 企业文档格式化与归档管理工具
- 23年护理技师考试题库及答案
- 单位焊工考试题及答案
- 产品质量安全功能稳定承诺书6篇范文
- 企业运营监控及评估报告工具
- 政治校本课程
- 抽油机井示功图分析判断1
- GB/T 39141.3-2022无机和蓝宝石手表玻璃第3部分:定性标准和试验方法
- 特劳特《定位》PPT通用课件
- GB/T 1732-1993漆膜耐冲击测定法
- 二十四节气演讲稿
- GA/T 2000.7-2014公安信息代码第7部分:实有人口管理类别代码
- 2023年安徽国贸集团控股有限公司招聘笔试模拟试题及答案解析
- 初中作文指导-景物描写(课件)
- 植物灰分的测定
- 实验室资质认证评审准则最新版本课件
评论
0/150
提交评论