资源描述
《MATLAB7.x》程序设计语言(第二版)部分课后习题答案(楼顺天,姚若玉,沈俊霞编著)
说明:所有答案均是本人在备考过程中亲自整理的,收录了一部分题目的答案。答案可能存在不足甚至谬误,很多算法也可能不是最优的,仅供参考。本人尽力整理的一点点心血,希望对大家有所帮助。
第二章
8、 a=rand(5,5);
[i,j]=find(a>0.5);
for u=1:length(i);
b(u)=a(i(u),j(u));
end
b'
10、aa=any(a');
i=find(aa==0)
a(i,:)=[];
第四章
1、function flag=isprime(m)
%m为素数,flag=1
%m不为素数,flag=0
k=sqrt(m);
flag=1;
for i=2:k;
if rem(m,i)==0;
flag=0;
break
end
end
m=input('input an integer\n');
flag=isprime(m);
if flag==1
disp([num2str(m),'是素数'])
else
disp([num2str(m),'不是素数'])
end
4、function [x1,x2]=jfc(a,b,c)
d=b^2-4*a*c;
if d>0;
x1=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
elseif d==0;
x1=-b/(2*a);
x2=x1;
end
a=input('a=');
b=input('b=');
c=input('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)])
else
disp('原方程的根不存在')
end
%MATLAB上机作业,184页习题4,求二次方程的实根
function [s1,s2]=solve(a,b,c)
d=b^2-4*a*c;
if d>0
s1=(-b-sqrt(d))/(2*a)
s1=(-b-sqrt(d))/(2*a)
%disp(['原方程有两个不同的根'num2str(s1)'和'nums2tr(s2)])
elseif d==0
s1=(-b-sqrt(d))/(2*a);
s1=(-b-sqrt(d))/(2*a);
%disp(['原方程有两个相同的根'num2str(s1))
else
disp('原方程无实根')
end
end
5、x=-3:0.01:3;
if x>=-3 & x<-1;
y=(-x.^2-4*x-3)/2;
elseif x>=-1 & x<1;
y=-x.^2+1;
else
y=(-x.^2+4*x-3)/2;
end
plot(x,y)
6、%MATLAB上机作业,184页习题6,点不同按钮产生不同分布的数
s=menu('请选择随机数类型','U[-10,10]','U[-5,5]','U[-1,1]','N(0,1)');
switch s
case 1,n=(rand(1)-0.5)*20;
case 2,n=(rand(1)-0.5)*10;
case 3,n=(rand(1)-0.5)*2;
case 4,n=randn(1);
otherwise disp('请选择!')
end
n
7、load a.txt
[m,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;
end
w
8、function k=jj(i)
if i<=10
k=0.1*i;
elseif i<=20
k=1+(i-10)*0.05;
elseif i<=40
k=1.5+(i-20)*0.02;
else
k=1.9+(i-40)*0.01;
end
s=0;a=2;b=1;
for i=1:15;
s=s+a/b;
c=b;
b=a;
a=a+c;
end
s
9、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)
end
sum(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=[ones(size(t)),t.*exp(-t)];
p1=x1\y;
p2=x2\y;
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);
plot(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=polyval(p2,tt);
plot(t,y,'b*',tt,y1,'r-',tt,y2,'c-');
legend('样本点','二次拟合','三次拟合'),grid on
10&11、pa=[2 3 -4];
pb=[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,'linear');
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))^2
b=randn(1,50);
bmax=max(a)
bmin=min(a)
ub=mean(a)
varb=(std(a))^2
14、t=[0,0.2,0.4,0.6,0.8,1,2,5]';
tt=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=x\y;
y2=p2(1)+p2(2)*exp(tt);
plot(t,y,'k*',tt,y1,'r-',tt,y2,'b-')
legend('样本点','三次多项式拟合','指数拟合'),grid on
17、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
展开阅读全文