1、MATLAB7.x 程序设计语言(第二版)部分课后习题答案(楼顺天,姚若玉,沈俊霞编著)说明:所有答案均是本人在备考过程中亲自整理的,收录了一部分题目的答案。答案可能存在不足甚至谬误,很多算法也可能不是最优的,仅供参考。本人尽力整理的一点点心血,希望对大家有所帮助。第二章8、 a=rand(5,5);i,j=find(a0.5);for u=1:length(i);b(u)=a(i(u),j(u);endb10、aa=any(a);i=find(aa=0)a(i,:)=;第四章1、function flag=isprime(m)%m 为素数,flag=1%m 不为素数,flag=0k=sqrt
2、(m);flag=1;for i=2:k;if rem(m,i)=0;flag=0;breakendendm=input(input an integern);flag=isprime(m);if flag=1disp(num2str(m),是素数)elsedisp(num2str(m),不是素数)end4、function x1,x2=jfc(a,b,c)d=b2-4*a*c;if d0;x1=(-b-sqrt(d)/(2*a);x2=(-b+sqrt(d)/(2*a);elseif d=0;x1=-b/(2*a);x2=x1;enda=input(a=);b=input(b=);c=inp
3、ut(c=);x1,x2=jfc(a,b,c);if x1=x2;disp(原方程存在两个不同的根)disp(x1=,num2str(x1)disp(x2=,num2str(x2);elseif x1=x2;disp(原方程存在两个相同的根)disp(x1=x2=,num2str(x1)elsedisp(原方程的根不存在)end%MATLAB 上机作业,184 页习题 4,求二次方程的实根function s1,s2=solve(a,b,c)d=b2-4*a*c;if d0s1=(-b-sqrt(d)/(2*a)s1=(-b-sqrt(d)/(2*a)%disp(原方程有两个不同的根 num2
4、str(s1)和nums2tr(s2)elseif d=0s1=(-b-sqrt(d)/(2*a);s1=(-b-sqrt(d)/(2*a);%disp(原方程有两个相同的根 num2str(s1)elsedisp(原方程无实根)endend5、x=-3:0.01:3;if x=-3 y=-x.2+1;elsey=(-x.2+4*x-3)/2;endplot(x,y)6、%MATLAB 上机作业,184 页习题 6,点不同按钮产生不同分布的数s=menu(请选择随机数类型,U-10,10,U-5,5,U-1,1,N(0,1);switch scase 1,n=(rand(1)-0.5)*20;
5、case 2,n=(rand(1)-0.5)*10;case 3,n=(rand(1)-0.5)*2;case 4,n=randn(1);otherwise disp(请选择!)endn7、load a.txtm,n=size(a);w=zeros(m,1);for i=1:m;w(i)=(2*a(i,1)+3*a(i,2)+2*a(i,3)+4*a(i,4)+2.5*a(i,5)+a(i,6)/14.5;endw8、function k=jj(i)if i=10k=0.1*i;elseif i=20k=1+(i-10)*0.05;elseif i=40k=1.5+(i-20)*0.02;el
6、sek=1.9+(i-40)*0.01;ends=0;a=2;b=1;for i=1:15;s=s+a/b;c=b;b=a;a=a+c;ends9、a=ones(15,1);b=ones(15,1);c=ones(15,1);a(1)=2;c(1)=2;for i=2:15;a(i)=b(i-1)+a(i-1);b(i)=a(i-1);c(i)=a(i)./b(i)endsum(c)第五章3、t=1:1:10;t=t;y=4.842,4.362,3.754,3.368,3.169,3.083,3.304,3.016,3.012,3.005;x1=ones(size(t),exp(-t);x2=
7、ones(size(t),t.*exp(-t);p1=x1y;p2=x2y;tt=linspace(1,10,1000);plot(t,y,*,tt,p1(1)+p1(2)*exp(-tt),r-,tt,p2(1)+p2(2)*tt.*exp(-tt),c-)grid on,legend(给定数据,y1 拟合,y2 拟合)5、 (1)function dy=cwf(t,y)dy=5*y(1)-5*y(2)-6*y(3);3*y(1)-2*y(2)+5*y(3);2*y(1)-y(2)-4*y(3);x0=1,-4,5;tspan=13,16;t,y=ode45(cwf,tspan,x0);pl
8、ot(t,y)(2)function dy=cwf(t,y)dy=y(1)+2*y(2)-3*y(3)+y(4);3*y(1)+y(3)-2*y(4);y(1)-2*y(2)+5*y(4);2*y(1)+3*y(2)+y(4);x0=1,-1,2,1;tspan=15,16;t,y=ode45(cwf,tspan,x0);plot(t,y)7、t=1:10;tt=1:0.01:10;y=15,39.5,66,85.5,89,67.5,12,-86.4,-236.9,-448.4;p1=polyfit(t,y,2);y1=polyval(p1,tt);p2=polyfit(t,y,3);y2=p
9、olyval(p2,tt);plot(t,y,b*,tt,y1,r-,tt,y2,c-);legend(样本点 ,二次拟合,三次拟合),grid on10pb=4 -2 5;pc=3 -2 5 6;d1=conv(pa,pb)q2,r2=deconv(pc,pa)q3,r3=deconv(pc,pb)dy1=polyder(pa,pb)q2,r2=polyder(pc,pa)q3,r3=polyder(pc,pb)12、x=-5:1:5;xx=-5:0.01:5;y=10.*exp(-abs(x);y1=interp1(x,y,xx,nearest);y2=interp1(x,y,xx,lin
10、ear);y3=interp1(x,y,xx,spline);y4=interp1(x,y,xx,cubic);plot(x,y,*,xx,y1,r-,xx,y2,c-,xx,y3,k-,xx,y4,g-)grid on,legend(样本点, 最临近内插 ,线性内插,三次样条内插 ,三次曲线内插)13、a=rand(1,50);amax=max(a)amin=min(a)ua=mean(a)vara=(std(a)2b=randn(1,50);bmax=max(a)bmin=min(a)ub=mean(a)varb=(std(a)214、t=0,0.2,0.4,0.6,0.8,1,2,5;t
11、t=0:0.01:5;y=1,1.51,1.88,2.13,2.29,2.4,2.6,-4;p1=polyfit(t,y,3);y1=polyval(p1,tt);x=ones(size(t),exp(t);p2=xy;y2=p2(1)+p2(2)*exp(tt);plot(t,y,k*,tt,y1,r-,tt,y2,b-)legend(样本点 ,三次多项式拟合,指数拟合),grid on17、function y=jifen1(x)y=exp(-2*x);function y=jifen2(x)y=exp(2*x);function y=jifen3(x)y=x.2-3*x+0.5;z1=quadl(jifen1,0,2)z2=quadl(jifen2,0,2)z3=quadl(jifen3,-1,1)19、function z=jifen(x,y)z=exp(-x*y)-2*x*y;q=dblquad(jifen,0,1,-1,1)20、function dy=cwf(t,y)dy=0.5-y(1);y(1)-4*y(2);x0=1,-0.5;tspan=0,25;t,y=ode45(cwf,tspan,x0);plot(y(1,:),y(2,:);grid on