1、完成下列操作:(1) 求[100,999]之间能被21整除的数的个数。
(2) 建立一个字符串向量,删除其中的大写字母。
(1)m=100:999;n=find(mod(m,21)==0);length(n)ans =43(2)>> ch='Maybe One Day'p=find(ch>='A'&ch<='Z')ch(p)=[]ch =Maybe One Day2、自行产生一个5行5列的数组,分别得到最中间的三行三列矩阵、右下角2行2列矩阵,奇数行矩阵、奇数列矩阵、奇数行奇数列矩阵。
>> t=rand(5)%生成矩阵A=t(2:4,2:4)%中间三行散列矩阵B=t(4:5,4:5)%右下角两行两列矩阵C=t(1:2:end,:)%奇数行矩阵D=t(:,1:2:end)%奇数列矩阵E=t(1:2:end,1:2:end)%奇数行列矩阵3、求方程组的根syms x y z[X Y Z]=solve('x+4*y-3*z=2','2*x+5*y-z=11','x+6*y+z=12',x,y,z)4、已知矩阵A=[1 2;3 4],运行指令B1=A.^(0.5), B2=A^(0.5), 可以观察到不同运算方法所得结果不同。
(1)请分别写出根据B1, B2恢复原矩阵A的程序。
(2)用指令检验所得的两个恢复矩阵是否相等(利用norm(…,’fro’)指令,误差矩阵F-范数,接近eps量级,认为实际相等)。
5、先运行clear,format long,rng('default'),A=rand(3,3),然后根据A写出两个矩阵:一个对角阵B,其相应元素由A的对角元素构成;另一个矩阵C,其对角元素全为0,而其余元素与对应的A阵元素相同(diag指令的使用)。
>> format long>> rand('twister',1)>> A=rand(3,3)A =0.417022004702574 0.302332572631840 0.1862602113776710.720324493442158 0.146755********* 0.345560727043048 0.000114374817345 0.092338594768798 0.396767474230670 >> B=diag(diag(A)) B =0.417022004702574 0 0 0 0.146755********* 0 0 0 0.396767474230670 >> D=(A~=B) D =0 1 1 1 0 1 1 1 0 >> C=A.*D C =0 0.302332572631840 0.186260211377671 0.720324493442158 0 0.345560727043048 0.000114374817345 0.092338594768798 06、先运行指令x=-3*pi:pi/15:3*pi; y=x; [X,Y]=meshgrid(x,y); warning off; Z=sin(X).*sin(Y)./X./Y; 产生矩阵Z 。
(1)请问矩阵Z 中有多少个“非数”数据?(2)用指令surf(X,Y ,Z); shading interp 观察所绘的图形。
(3)请写出绘制相应的“无裂缝”图形的全部指令。
(nan 的检测,可以使用sum 函数求和,利用eps 克服,‘被零除’。
x=-3*pi:pi/15:3*pi; y=x; [X,Y]=meshgrid(x,y); warning off; Z=sin(X).*sin(Y)./X./Y; >> n=sum(sum(isnan(Z))) n = 181>> m=isnan(Z); >> p=find(m==1); >> length(p) ans = 181 3)XX=X+(X==0)*eps; >> YY=Y+(Y==0)*eps;ZZ=sin(XX).*sin(YY)./XX./YY;7、计算表达式()22e 1053y xy x z ---=的梯度并绘图。
>> v= -2:0.1:2;>> [x y]=meshgrid(v);>> z=10*(x.^3-y.^5).*exp(-x.^2-y.^2); >> [px py]=gradient(z,0.1,0.1); >> contour(x,y,z) >> hold on>> quiver(x,y,px,py)>> hold off8、22y xxe z --=,当x 和y 的取值范围均为-2到2时,用建立子窗口的方法在同一个图形窗口中绘制出三维线图(plot3)、网线图(mesh)、表面图(surf)和带渲染效果(shading )的表面图。
>> v=-2:0.1:2; >> [x y]=meshgrid(v); >> z=x.*exp(-x.^2-y.^2); >> subplot(2,2,1); >> plot3(x,y,z);>> title('plot3(x,y,z)'); >> subplot(2,2,2); >> surf(x,y,z);>> title('surf(x,y,z)'); >> subplot(2,2,3); >> mesh(x,y,z);>> title('mesh(x,y,z)'); >> subplot(2,2,4); >> surf(x,y,z); >> shading interp; >> title('surf-shading(x,y,z)')9、插值函数interp1(x,y,x0,’spline’)的利用 10、x=[66 49 71 56 38]; >> L=[0 0 0 0 1]; >> pie(x,L) 将第五块分离出来;11、0)0(sin =+=y t y dtdyf=dsolve('Dy=y+sin(t)','y(0)=0') f =exp(t)/2 - cos(t)/2 - sin(t)/2三、⎪⎪⎩⎪⎪⎨⎧=+-==++=0)0(cos 0)0(sin y t y x dtdy x t y x dtdx[X,Y]=dsolve('Dx=x+y+sin(t)','Dy=x-y+cos(t)','x(0)=0','y(0)=0') X =exp(2^(1/2)*t)/3 + exp(-2^(1/2)*t)/3 - (2*cos(t))/3 - sin(t)/3 + (2^(1/2)*exp(2^(1/2)*t))/12 - (2^(1/2)*exp(-2^(1/2)*t))/12 Y =cos(t)/3 - exp(-2^(1/2)*t)/6 - exp(2^(1/2)*t)/6 + (2^(1/2)*exp(2^(1/2)*t))/4 - (2^(1/2)*exp(-2^(1/2)*t))/4四、用电压V =10伏的电池给电容器充电,电容器上t 时刻的电压为m t e V V V t v /0)()(---=其中0V 是电容器的初始电压,m 是充电常数,试由下面一组t ,V 数据确定0V 和m 。
>> t=[0.5 1:5 7 9]';v=[6.36 6.48 7.26 8.22 8.66 8.99 9.43 9.63]’; >> y=log(10-v);>> t1=[ones(size(t)) t]; >> c=t1\y c =1.4766 -0.2835>> v0=10-exp(c(0))试图访问 c(0);索引必须为正整数或逻辑值。
>> v0=10-exp(c(1)) v0 =5.6221 >> m=-1/c(2) m =五、变量t 和y 满足函数关系)8.0exp()5.1exp()4exp(3210a a a a y -+-+-+=,通过实验测的数据:>> y=[3330 2830 2630 2500 2330 2260 2200]'; >> t=[2 3 4 5 7 10 14]';>> c=[ones(size(t)) exp(-t./4) exp(-t./1.5) exp(-t./0.8)]; >> a=c\y a =1.0e+03 *2.1675 1.0226 0.60804.6281六、分别用 for 和while 循环结构编写程序,求出636232632222212++++++==∑= i i K并考虑一种避免循环的简洁方法来求和,并比较各种算法的运行时间。
(注:一共是三种方法) FOR:>> sum1=0; for i=0:63sum1=sum1+2^i;end>> sum1sum1 =1.8447e+19WHILE:>> sum2=0;i=0;while i<64sum2=sum2+2^i;i=i+1;end>> sum2sum2 =1.8447e+19其他方法:>> i=0:63;>> t=2.^i;>> k=sum(t)k =1.8447e+19【例4.1.3.1-2】综合例题:在MATLAB计算生成的图形上标出图名和最大值点坐标。
cleara=2; %设置衰减系数w=3; %设置振荡频率t=0:0.01:10;y=exp(-a*t).*sin(w*t); %产生函数数组[y_max,i_max]=max(y); %找最大值元素位置t_text=['t=',num2str(t(i_max))]; % <7> 生成最大值点的横坐标字符串y_text=['y=',num2str(y_max)]; % <8>生成最大值点的纵坐标字符串max_text=char('maximum',t_text,y_text); % <9>生成标志图名用的字符串% tit=['y=exp(-',num2str(a),'t)*sin(',num2str(w),'t)']; %<11> plot(t,zeros(size(t)),'k') %画纵坐标为0的基准线hold onplot(t,y,'b')plot(t(i_max),y_max,'r.','MarkerSize',20) %用大红点标最大值text(t(i_max)+0.3,y_max+0.05,max_text) % <16>再图上书写最大值点的数据值title(tit),xlabel('t'),ylabel('y'),hold off。