资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,例,2-3,分别建立,33,、,32,和与矩阵,A,同样大小的零矩阵。,(1),建立一个,33,零矩阵。,zeros(3)(2),建立一个,32,零矩阵。,zeros(3,2)(3),设,A,为,23,矩阵,则可以用,zeros(size(A),建立一个与矩阵,A,同样大小零矩阵。,A=1 2 3;4 5 6;%,产生一个,23,阶矩阵,Azeros(size(A)%,产生一个与矩阵,A,同样大小的零矩阵,例,2-4,建立随机矩阵:,(1),在区间,20,50,内均匀分布的,5,阶随机矩阵。,(2),均值为,0.6,、方差为,0.1,的,5,阶正态分布随机矩阵。命令如下:,x=20+(50-20)*rand(5)y=0.6+sqrt(0.1)*randn(5),此外,常用的函数还有,reshape(A,m,n),,它在矩阵总元素保持不变的前提下,将矩阵,A,重新排成,mn,的二维矩阵。,例,2-8,产生,5,阶随机方阵,A,,其元素为,10,90,区间的随机整数,然后判断,A,的元素是否能被,3,整除。,(1),生成,5,阶随机方阵,A,。,A=fix(90-10+1)*rand(5)+10)(2),判断,A,的元素是否可以被,3,整除。,P=rem(A,3)=0,其中,,rem(A,3),是矩阵,A,的每个元素除以,3,的余数矩阵。此时,,0,被扩展为与,A,同维数的零矩阵,,P,是进行等于,(=),比较的结果矩阵。,例,2-9,建立矩阵,A,,然后找出大于,4,的元素的位置。,(1),建立矩阵,A,。,A=4,-65,-54,0,6;56,0,67,-45,0(2),找出大于,4,的元素的位置。,find(A4),例,2-10,先建立,55,矩阵,A,,然后将,A,的第一行元素乘以,1,,第二行乘以,2,,,,第五行乘以,5,。,A=17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,21,3;.11,18,25,2,19;D=diag(1:5);D*A%,用,D,左乘,A,,对,A,的每行乘以一个指定常数,例,2-13,建立一个字符串向量,然后对该向量做如下处理:,(1),取第,1,5,个字符组成的子字符串。,(2),将字符串倒过来重新排列。,(3),将字符串中的小写字母变成相应的大写字母,其余字符不变。,(4),统计字符串中小写字母的个数。,命令如下:,ch=ABc123d4e56Fg9;subch=ch(1:5)%,取子字符串,revch=ch(end:-1:1)%,将字符串倒排,k=find(ch=a%,找小写字母的位置,ch(k)=ch(k)-(a-A);%,将小写字母变成相应的大写字母,char(ch)length(k)%,统计小写字母的个数,例,3-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-5,输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输出。,c=input(,请输入一个字符,s);,if c=A&c=a&c=0&c=9,disp(abs(c)-abs(0);,else,disp(c);,end,例,3-6,某商场对顾客所购买的商品实行打折销售,标准如下,(,商品价格用,price,来表示,),:,price200,没有折扣,200price500 3%,折扣,500price1000 5%,折扣,1000price2500 8%,折扣,2500price 0),sum,mean=sum/cnt,end,例,3-13,若一个数等于它的各个真因子之和,则称该数为完数,如,6=1+2+3,,所以,6,是完数。求,1,500,之间的全部完数。,for m=1:500,s=0;,for k=1:m/2,if rem(m,k)=0,s=s+k;,end,end,if m=s,disp(m);,end,end,例,3-15,利用函数文件,实现直角坐标,(x,y),与极坐标,(,),之间的转换。,函数文件,tran.m,:,function rho,theta=tran(x,y),rho=sqrt(x*x+y*y);,theta=atan(y/x);,调用,tran.m,的命令文件,main1.m,:,x=input(Please input x=:);,y=input(Please input y=:);,rho,the=tran(x,y);,rho,the,例,3-16,利用函数的递归调用,求,n,!。,n!,本身就是以递归的形式定义的:,显然,求,n!,需要求,(n-1)!,,这时可采用递归调用。递归调用函数文件,factor.m,如下:,function f=factor(n),if n2),求,Fibonacci,数列的第,20,项,例,5-1,在,0 x2,区间内,绘制曲线,y=2e,-0.5x,cos(4x),程序如下:,x=0:pi/100:2*pi;,y=2*exp(-0.5*x).*cos(4*pi*x);,plot(x,y),例,5-4,用不同标度在同一坐标内绘制曲线,y1=0.2e,-0.5x,cos(4x),和,y2=2e,-0.5x,cos(x),。,程序如下:,x=0:pi/100:2*pi;,y1=0.2*exp(-0.5*x).*cos(4*pi*x);,y2=2*exp(-0.5*x).*cos(pi*x);,plotyy(x,y1,x,y2);,例,5-6,在同一坐标内,分别用不同线型和颜色绘制曲线,y1=0.2e,-0.5x,cos(4x),和,y2=2e,-0.5x,cos(x),,标记两曲线交叉点。,程序如下:,x=linspace(0,2*pi,1000);,y1=0.2*exp(-0.5*x).*cos(4*pi*x);,y2=2*exp(-0.5*x).*cos(pi*x);,k=find(abs(y1-y2)1e-2);%,查找,y1,与,y2,相等点,(,近似相等,),的下标,x1=x(k);%,取,y1,与,y2,相等点的,x,坐标,y3=0.2*exp(-0.5*x1).*cos(4*pi*x1);%,求,y1,与,y2,值相等点的,y,坐标,plot(x,y1,x,y2,k:,x1,y3,bp);,例,5-7,在,0 x2,区间内,绘制曲线,y1=2e,-0.5x,和,y2=cos(4x),,并给图形添加图形标注。,程序如下:,x=0:pi/100:2*pi;,y1=2*exp(-0.5*x);,y2=cos(4*pi*x);,plot(x,y1,x,y2),title(x from 0 to 2pi);%,加图形标题,xlabel(Variable X);%,加,X,轴说明,ylabel(Variable Y);%,加,Y,轴说明,text(0.8,1.5,曲线,y1=2e-0.5x);%,在指定位置添加图形说明,text(2.5,1.1,曲线,y2=cos(4pix);,legend(y1,y2)%,加图例,例,5-13,分别以条形图、阶梯图、杆图和填充图形式绘制曲线,y=2sin(x),。,程序如下:,x=0:pi/10:2*pi;,y=2*sin(x);,subplot(2,2,1);bar(x,y,g);,title(bar(x,y,g);axis(0,7,-2,2);,subplot(2,2,2);stairs(x,y,b);,title(stairs(x,y,b);axis(0,7,-2,2);,subplot(2,2,3);stem(x,y,k);,title(stem(x,y,k);axis(0,7,-2,2);,subplot(2,2,4);fill(x,y,y);,title(fill(x,y,y);axis(0,7,-2,2);,例,5-17,绘制三维曲面图,z=sin(x+sin(y)-x/10,。,程序如下:,x,y=meshgrid(0:0.25:4*pi);,z=sin(x+sin(y)-x/10;,mesh(x,y,z);,axis(0 4*pi 0 4*pi-2.5 1);,例,5-20,绘制三维图形:,(1),绘制魔方阵的三维条形图。,(2),以三维杆图形式绘制曲线,y=2sin(x),。,(3),已知,x=2347,1827,2043,3025,,绘制饼图。,(4),用随机的顶点坐标值画出五个黄色三角形。,subplot(2,2,1);,bar3(magic(4),subplot(2,2,2);,y=2*sin(0:pi/10:2*pi);,stem3(y);,subplot(2,2,3);,pie3(2347,1827,2043,3025);,subplot(2,2,4);,fill3(rand(3,5),rand(3,5),rand(3,5),y),例,6-11,某观测站测得某日,6:00,时至,18:00,时之间每隔,2,小时的室内外温度,(),,用,3,次样条插值分别求得该日室内外,6:30,至,17:30,时之间每隔,2,小时各点的近似温度,(),。,设时间变量,h,为一行向量,温度变量,t,为一个两列矩阵,其中第一列存放室内温度,第二列储存室外温度。命令如下:,h=6:2:18;,t=18,20,22,25,30,28,24;15,19,24,28,34,32,30;,XI=6.5:2:17.5,YI=interp1(h,t,XI,spline)%,用,3,次样条插值计算,例,6-13,某实验对一根长,10,米的钢轨进行热源的温度传播测试。用,x,表示测量点,0:2.5:10(,米,),,用,h,表示测量时间,0:30:60(,秒,),,用,T,表示测试所得各点的温度,(),。试用线性插值求出在一分钟内每隔,20,秒、钢轨每隔,1,米处的温度,TI,。,命令如下:,x=0:2.5:10;,h=0:30:60;,T=95,14,0,0,0;88,48,32,12,6;67,64,54,48,41;,xi=0:10;,hi=0:20:60;,TI=interp2(x,h,T,xi,hi,例,6-15,给定数学函数,x(t)=12sin(210t+/4)+5cos(240t),取,N=128,,试对,t,从,01,秒采样,用,fft,作快速傅立叶变换,绘制相应的振幅,-,频率图。,在,01,秒时间范围内采样,128,点,从而可以确定采样周期和采样频率。由于离散傅立叶变换时的下标应是从,0,到,N-1,,故在实际应用时下标应该前移,1,。又考虑到对离散傅立叶变换来说,其振幅,|F(k)|,是关于,N/2,对称的,故只须使,k,从,0,到,N/2,即可。,N=128;%,采样点数,T=1;%,采样时间终点,t=linspace(0,T,N);%,给出,N,个采样时间,ti(I=1:N),x=12*sin(2*pi*10*t+pi/4)+5*cos(2*pi*40*t);%,求各采样点样本值,x,dt=t(2)-t(1);%,采样周期,f=1/dt;%,采样频率,(Hz),X=fft(x);%,计算,x,的快速傅立叶变换,X,F=X(1:N/2+1);%F(k)=X(k)(k=1:N/2+1),f=f*(0:N/2)/N;%,使频率轴,f,从零开始,plot(f,abs(F),-*)%,绘制振幅,-,频率图,xlabel(Frequency);,ylabel(|F(k)|),例,8-1,求定积分。,(1),建立被积函数文件,fesin.m,。,function f=fesin(x),f=exp(-0.5*x).*sin(x+pi/6);,(2),调用数值积分函数,quad,求定积分。,S,n=quad(fesin,0,3*pi),S=,0.9008,n=,77,例,8-7,用不同的方法求函数,f(x),的数值导数,并在同一个坐标系中做出,f(x),的图像。,程序如下:,f=inline(sqrt(x.3+2*x.2-x+12)+(x+5).(1/6)+5*x+2);,g=inline(3*x.2+4*x-1)./sqrt(x.3+2*x.2-x+12)/2+1/6./(x+5).(5/6)+5);,x=-3:0.01:3;,p=polyfit(x,f(x),5);%,用,5,次多项式,p,拟合,f(x),dp=polyder(p);%,对拟合多项式,p,求导数,dp,dpx=polyval(dp,x);%,求,dp,在假设点的函数值,dx=diff(f(x,3.01)/0.01;%,直接对,f(x),求数值导数,gx=g(x);%,求函数,f,的导函数,g,在假设点的导数,plot(x,dpx,x,dx,.,x,gx,-);%,作图,syms a m x;,f=(x*(exp(sin(x)+1)-2*(exp(tan(x)-1)/(x+a);,limit(f,x,a),ans=,(1/2*a*exp(sin(a)+1/2*a-exp(tan(a)+1)/a,极限,2,:,syms x t;,limit(1+2*t/x)(3*x),x,inf),ans=,exp(6*t),
展开阅读全文