知行校园汇
记录学习、分享干货、吐槽人生!
关注
相关说明
文章内容:MATLAB程序设计与应用·第3版(刘卫国)课后实验
所属课程:分析软件工具
作者主页:csdn.cxhit.com(建议电脑访问)
实验1 MATLAB系统环境与运算基础
一、实验目的
掌握启动和退出MATLAB的方法。
掌握MATLAB操作界面的组成。
掌握建立矩阵的方法。
掌握MATLAB表达式的书写规则以及常用函数的方法。
二、实验内容
实验1. T1、2
以上源码略
实验1.T3
源码:
fprintf('(1):计算:z1=2*sin(85*pi/180)/(1+exp(2))')
z1=2*sin(85*pi/180)/(1+exp(2))
fprintf('(2)计算:z2=π/(x+y)')
x2=12;y2=10^-5;
z2=pi/(x2+y2)
fprintf('(3)计算:z3=1/2*log(x+sqrt(1+x^2))')
x3=[2 1+2*1i;-.45 5];
z3=1/2*log(x3+sqrt(1+x3^2))
fprintf('(4)计算:z4=(exp(0.3.*a)-exp(-0.3.*a))./2.*sin(a+0.3)+log((0.3+a)./2)')
a=-3.0:0.1:3.0;
z4=(exp(0.3.*a)-exp(-0.3.*a))./2.*sin(a+0.3)+log((0.3+a)./2)
实验1.T4
源码:
fprintf('初始矩阵:')
A=[ 12 34 -4;34 7 87;3 65 7]
B=[ 1 3 -1;2 0 3;3 -2 7]
%第(1)题:
fprintf('A*B 的结果')
A*B
fprintf('B*A 的结果')
B*A
fprintf('A.*B 的结果')
A.*B
%第(2)题
fprintf('A^3 的结果')
A^3
fprintf('A.^3 的结果')
A.^3
%第(3)题
fprintf('A/B 的结果')
A/B
fprintf('A\\B 的结果')
A\B
%第(4)题
fprintf('[A,B] 的结果')
[A,B]
fprintf('[A([1,3],:);B^2] 的结果')
[A([1,3],:);B^2]
实验1.T5
源码:
% 定义矩阵
A=(reshape(1:1:25,5,5))'
B=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11]
fprintf('输出A和B的乘积,记为C:')
C=A*B
fprintf('将矩阵C的右下角3*2给D:')
D=C(3:end,2:end)
实验1.T6
源码:
% 先来一个从100到999的一维矩阵
fprintf('第6题(1)')
m=100:999;
n=find(mod(m,21)==0);
length(n)
fprintf('第6题(2)')
ch='ABC123d4武汉理工大学计算机1601e56Fg9';
k=find(ch>='A'&ch<='Z')
%ch(k)=[]
实验2 MATLAB矩阵处理
一、实验目的
掌握生成特殊矩阵的方法
掌握矩阵处理的方法
掌握用矩阵求逆法解线性方程组的方法
二、实验内容
实验2.T1
源码:
clc
E=eye(3)
R=rand(3,2)
O=zeros(2,3)
S=diag([6 6])
A=[E R;O S]
fprintf('计算A^2的结果')
A^2
fprintf('计算等号右边')
a=[E R+R*S;O S^2]
fprintf('两边做差:')
A^2-a
实验2.T2
源码:
clc
% 建立魔方矩阵
A=magic(5)
% 输出矩阵的行列式的值
fprintf('矩阵的行列式的值:')
det(A)
% 输出矩阵的迹
fprintf('输出矩阵的迹')
trace(A)
% 输出矩阵的秩
fprintf('输出矩阵的秩')
rank(A)
% 输出矩阵的范数
fprintf('输出矩阵的范数')
fprintf('一范数')
norm(A,1)%一范数
fprintf('二范数')
norm(A,2)%二范数
fprintf('无穷范数')
norm(A,inf)%无穷范数
% 输出矩阵的逆矩阵
fprintf('逆矩阵')
inv(A)
实验2.T3
源码:
clc
% 产生5阶希尔伯特矩阵
fprintf('产生5阶希尔伯特矩阵')
H=hilb(5)
% 产生5阶帕斯卡矩阵
fprintf('产生5阶帕斯卡矩阵')
P=pascal(5)
% 求二者行列式值
fprintf('求二者行列式值')
Hh=det(H)
Hp=det(P)
% 求二者条件数
fprintf('求二者条件数')
Th=cond(H)
Tp=cond(P)
实验2.T4
源码:
clc
% 输入矩阵A
fprintf('输入矩阵A')
A=[-29 6 18;20 5 12;-8 8 5]
% 计算特征值与特征向量,其中V为特征向量的列向量构成,D为特征值构成的对角矩阵
fprintf('计算特征值与特征向量,其中V为特征向量的列向量构成,D为特征值构成的对角矩阵')
[V,D]=eig(A)
fprintf('其他测试')
B=[1 0 0;0 2 0;0 0 3]
[x y]=eig(B)
实验2.T5
源码:
clc
% 输入3X3的A矩阵
fprintf('输入3X3的A矩阵')
A=[1/2 1/3 1/4;1/3 1/4 1/5;1/4 1/5 1/6]
% 输入列向量b
b=[0.95 0.67 0.52]'
% 求A矩阵的逆矩阵
A1=inv(A);
% 计算X的值
fprintf('计算X的值')
x=A1*b
% 换新的列向量b
b2=[0.95 0.67 0.53]'
% 继续求x的值
fprintf('继续求x的值')
x2=A1*b2
% 计算矩阵A的条件数
fprintf('计算矩阵A的条件数')
C=cond(A)
实验3 顺序结构程序设计
一、实验目的
掌握建立和执行M文件的方法
掌握输入输出的方法
掌握顺序结构程序设计方法
二、实验内容
实验3.T1
源码:
x=input('请输入x:');
num=[];
num=[num,rem(x,10)];
num=[num,floor(rem(x,100)/10)];
num=[num,rem(floor(x/100),10)];
num=[num,floor(x/1000)];
num=7+num;
num=rem(num,10);
t=num(1);
num(1)=num(3);
num(3)=t;
t=num(2);
num(2)=num(4);
num(4)=t;
num
实验3.T2
源码:
x=input('请输入实数x:');
a=floor(x)
b=x-floor(x)
T3~T5 源码略
实验3.T6
源码:
x=(1+pi)^(1/3);
y=(exp(-x)-tan(73*pi/180))/(10^(-5)+log(abs(sin(x)^2-sin(x*x))))
实验4 选择结构程序设计
一、实验目的
掌握利用if语句实现选择结构的方法
掌握利用switch语句实现多分支选择结构的方法
掌握try语句的使用方法
二、实验内容
实验4.T1
源码:
x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5.0];
y=[]; %建立存放所有y值的矩阵
for x0=x
if x0<0&&x0~=-3
y=[y,x0*x0+x0-6];
elseif x0>=0&&x0<5&&x0~=2&&x0~=3
y=[y,x0*x0-5*x0+6];
else
y=[y,x0*x0-x0-1];
end
end
x %输出所有x
y %输出所有y
%f(-5.0)
%f(-3.0)
%f(1.0)
%f(2.0)
%f(2.5)
%f(3.0)
%f(5.0)
实验4.T2
源码:(if语句)
x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5.0];
y=[]; %建立存放所有y值的矩阵
for x0=x
if x0<0&&x0~=-3
y=[y,x0*x0+x0-6];
elseif x0>=0&&x0<5&&x0~=2&&x0~=3
y=[y,x0*x0-5*x0+6];
else
y=[y,x0*x0-x0-1];
end
end
x %输出所有x
y %输出所有y
%f(-5.0)
%f(-3.0)
%f(1.0)
%f(2.0)
%f(2.5)
%f(3.0)
%f(5.0)
源码:(switch语句)
s=input('请输入一个成绩(0分到100分之间):'); %s用于存放成绩
while 1 %判断输入成绩的合理性
if s<0|s>100
disp('输入的成绩需在0到100之间,请重新输入:')
s=input('请输入一个成绩(0分到100分之间):');
else
break;
end
end
switch fix(s/10) %对成绩做出等级判断
case {
9,10}
disp('A')
case 8
disp('B')
case 7
disp('C')
case 6
disp('D')
otherwise
disp('E')
end
实验4.T3
源码:
n=input('请输入员工工号:');
h=input('该员工工作时数是:');
if h>120
x=(h-120)*84*(1+0.15)+120*84;
elseif h<60
x=h*84-700;
else
x=h*84;
end
disp([num2str(n),'号员工的应发工资为',num2str(x)]);
实验4.T4
源码:
a=fix(10+(99-10)*rand(1,2)) %产生两个随机整数
x=a(1);
y=a(2);
t=input('请输入运算符号:','s');
if t=='+'
z=x+y;
elseif t=='-'
z=x-y;
elseif t=='*'
z=x*y;
elseif t=='/'
z=x/y;
end
disp([num2str(x),t,num2str(y),'=',num2str(z)]) %输出运算结果
实验4.T5
源码:
a=rand(5,6) %产生5x6的随机矩阵
n=input('请输入您要输出矩阵的第几行:');
if n>5
disp('超出了矩阵的行数,矩阵的最后一行为:')
a(5,:)
else
disp(['矩阵的第',num2str(n),'行为:'])
a(n,:)
end
实验5 循环结构程序设计
一、实验目的
掌握利用for语句实现循环结构的方法
掌握利用while语句实现循环结构的方法
熟悉利用向量运算来代替循环操作的方法
二、实验内容
实验5.T1
源码:(循环结构)
y=0;
n=input('n=?');
for i=1:n
y=y+1/(2*i-1)/3^(2*i-1);
end
y
log(2)/2
源码:(向量结构)
n=input('n=?');
i=1:n;
y=1./(2*i-1)./3.^(2*i-1);
y=sum(y)
log(2)/2
log(25)/log(5)
实验5.T2
源码:
y=0;
n=1;
while y<3
y=y+1/(2*n-1);
n=n+1;
end
y=y-1/(2*(n-1)-1)
n=n-2
实验5.T3
源码:
a=input('a=?');
b=input('b=?');
Xn=1;
Xn1=a/(b+Xn);
n=0;
while abs(Xn1-Xn)>1e-5
Xn=Xn1;
Xn1=a/(b+Xn);
n=n+1;
if n==500
break;
end
end
n
Xn1
r1=(-b+sqrt(b*b+4*a))/2
r2=(-b-sqrt(b*b+4*a))/2
实验5.T4
源码:
for i=1:100
if i==1
f(i)=1;
elseif i==2
f(i)=0;
elseif i==3
f(i)=1;
else
f(i)=f(i-1)-2*f(i-2)+f(i-3);
end
end
max(f)
min(f)
sum(f)
length(find(f>0))
length(find(f==0))
length(find(f<0))
实验5.T5
源码:
s=0;n=0;
for i=2:49
b=i*(i+1)-1;
m=fix(sqrt(b));
for j=2:m
if rem(b,j)==0
break
end
end
if j==m
n=n+1;
s=s+b;
end
end
n
s
实验6 函数文件
一、实验目的
掌握函数文件的概念
掌握利用和调用MATLAB函数的方法
二、实验内容
实验6.T1
源码:shiyan6_1.m
function y = shiyan6_1( x )
%SHIYAN6_1 此处显示有关此函数的摘要
% 此处显示详细说明y=[exp(x),log(x),sin(x),cos(x)];
%在命令窗口调用上述函数文件:
%y=mat1(1+i)
end
源码:shiyan6_1_exe.m
y=shiyan6_1(2+3i)
实验6.T2
源码:shiyan6_2.m
function [a,b,N,M] = shiyan6( m,n,t )
%SHIYAN6_2 此处显示有关此函数的摘要
% 此处显示详细说明A=[m*cos(t*pi/180),-m,-sin(t*pi/180),0;m*sin(t*pi/180),0,cos(t*pi/180),0;0,n,-sin(t*pi/180),0;0,0,-cos(t*pi/180),1];
B=[0,9.8*m,0,9.8*n];
C=inv(A)*B';
a=C(1);
b=C(2);
N=C(3);
M=C(4);
%在命令窗口调用该函数文件:
%m1=input('m1=');
%m2=input('m2=');
%theta=input('theta=');
%[a1,a2,N1,N2]=shiyanwu2(m1,m2,theta)
end
源码:shiyan6_2_exe.m
m1=input('m1=');
m2=input('m2=');
theta=input('theta=');
[a1,a2,N1,N2]=shiyan6_2(m1,m2,theta)
实验6.T3
源码:shiyan6_3.m
function flag = shiyan6_3( x )
%SHIYAN6_3 此处显示有关此函数的摘要
% 此处显示详细说明flag=1;
for i=2:sqrt(x)
if rem(x,i)==0
flag=0;
break;
end
end
end
源码:shiyan6_3_exe.m
for i=10:99
j=10*rem(i,10)+fix(i/10);
if shiyan6_3(i)&shiyan6_3(j)
disp(i)
end
end
实验6.T4
源码:shiyan6_4.m
function y = shiyan6_4( x )
%SHIYAN6_4 此处显示有关此函数的摘要
% 此处显示详细说明
%y=1./((x-2).^2+0.1)+1./((x-3).^4+0.01);
y=1./((x-2)*(x-2)+0.1)+1./((x-3).^4+0.01);
end
源码:shiyan6_4_exe.m
y=shiyan6_4(2)
a=[1,2;3,4];
y=shiyan6_4(a)
实验6.T5
源码:第一题(函数文件)
function f1 = shiyan6_5_1( n )
%SHIYAN6_5_1 此处显示有关此函数的摘要
% 此处显示详细说明f1=n+10*log(n*n+5);
end
源码:第二题(函数文件)
function f2 = shiyan6_5_2( n )
%SHIYAN6_5_2 此处显示有关此函数的摘要
% 此处显示详细说明i=1:n;
m=i.*(i+1);
f2=sum(m);
end
源码:运行文件
%第一题输出:
y=shiyan6_5_1(40)/(shiyan6_5_1(30)+shiyan6_5_1(20))
%第二题输出:
y=shiyan6_5_2(40)/(shiyan6_5_1(30)+shiyan6_5_1(20))
实验7 绘图操作
一、实验目的
掌握绘制二维图形的方法
掌握绘制三维图形的方法
掌握绘制图形的辅助操作
二、实验内容
实验7.T1
源码:
%(1)
x=linspace(0,2*pi,101);
y=(0.5+3*sin(x)./(1+x.^2)).*cos(x);
plot(x,y)
%(2)
x=-5:0.01:5;
y=[]; %起始设y为空向量
for x0=x
if x0<=0 %不能写成x0=<0
y=[y,(x0+sqrt(pi))/exp(2)]; %将x对应的函数值放到y中
else
y=[y,0.5*log(x0+sqrt(1+x0^2))];
end
end
plot(x,y)
%(3)
t=-2*pi:0.01:2*pi;
r=10*sin(1+5*t);
polar(t,r)
实验7.T2
源码:
%(1)
x=linspace(-2*pi,2*pi,100);
y1=x.^2;
y2=cos(2*x);
y3=y1.*y2;
plot(x,y1,'b-',x,y2,'r:',x,y3,'y--');
text(4,16,'\leftarrow y1=x^2');
text(6*pi/4,-1,'\downarrow y2=cos(2*x)');
text(-1.5*pi,-2.25*pi*pi,'\uparrow y3=y1*y2');
%(2)
x=linspace(-2*pi,2*pi,100);
y1=x.^2;
y2=cos(2*x);
y3=y1.*y2;
subplot(1,3,1);%分区
plot(x,y1);
title('y1=x^2');%设置标题
subplot(1,3,2);
plot(x,y2);
title('y2=cos(2*x)');
subplot(1,3,3);
plot(x,y3);
title('y3=x^2*cos(2*x)');
%(3)
x=linspace(-2*pi,2*pi,20);
y1=x.^2;
subplot(2,2,1);%分区
bar(x,y1);
title('y1=x^2的条形图');%设置标题
subplot(2,2,2);
stairs(x,y1);
title('y1=x^2的阶梯图');
subplot(2,2,3);
stem(x,y1);
title('y1=x^2的杆图');
subplot(2,2,4);
fill(x,y1,'r');%如果少了'r'则会出错
title('y1=x^2的填充图');
%其他的函数照样做。
实验7.T3
源码:略
实验7.4
源码:
x=linspace(-5,5,21);
y=linspace(0,10,31);
[x,y]=meshgrid(x,y);%在[-5,5]*[0,10]的范围内生成网格坐标
z=cos(x).*cos(y).*exp(-sqrt(x.^2+y.^2)/4);
subplot(2,1,1);
surf(x,y,z);
subplot(2,1,2);
contour3(x,y,z,50);%其中50为高度的等级数,越大越密
实验7.5
源码:
ezsurf('cos(s)*cos(t)','cos(s)*sin(t)','sin(s)',[0,0.5*pi,0,1.5*pi]); %利用ezsurf隐函数
shading interp %进行插值着色处理
更多内容,请见文末留言处
(无法看留言,请复制文章链接在微信里打开)
— The End —
推荐文章WUT计算机科学与技术专业 课程总览
服务器端软件:集中式版本控制系统SVN
谈谈阿里、腾讯、华为的学生版服务器
觉得有帮助,欢迎赞赏