matlab实验报告
程序员文章站
2022-07-12 15:17:51
...
实验一 MATLAB的基本使用方法
一、实验目的和要求:
通过完成实验一,掌握MATLAB的基本使用方法。
二、实验内容:
1.练习数据和符号输入法,将前面的命令在命令窗口中执行通过。
1)>>5
2)>>x=[1 2 3 4]
3)>>g=[1 2 3 4];h=[4 3 2 1]
>>s1=g+h, s2=g.*h, s3=g.^h
S1=
5 5 5 5
S2=
4 6 6 4
S3=
1 8 9 4
2.输入A=[715;256;315],B=[111;222;333],在命令窗口中执行下列表达式,掌握其含义。
源程序:>>A=[7 1 5;2 5 6;3 1 5];
B=[1 1 1;2 2 2;3 3 3];
>>A(2,3)
>>A(:,2)
>>A(:,1:2:3) % A数组中第一列和第三列
>>A(3,:) %A数组中第三行
>>A(:,3).*B(:,2) %A中第三列和B中第二列相乘
>> A(:,3)*B(2,:) %A中第三列和B中第二行相乘竖着排,形成3*3矩阵
>>A*B %A 与B数组相乘
>>A.*B
>>A^2
>>A.^2 % A中所有数平方
>>B/A %B矩阵除以A矩阵
>>B./A % B中数除以A中对应位置数
3.输入C=.1:2:20,则C(i)表示什么?其中i=1,2,3…10;
源程序:>>c=1:2:20;
>>c(1)
>>c(10)
实验二 MATLAB的数值计算
一、实验目的和要求:
通过完成实验二,掌握MATLAB的数值计算。
二、实验内容:
1.用二分法计算多项式方程X^3-2X-5=0在[0,3]内的一个根。
a=0;fa=-inf;
b=3;fb=inf;
while b-a>eps*b
x=(a+b)/2;
fx=x^3-2*x-5;
if sign(fx)==sign(fa)
a=x;fa=fx
else
b=x;fb=fx
end
end
x
运行结果:
x=2.0945515148154233
2.矩形的创建,加减运算
A=[1,1,1;1,2,3;1,3,6]
B=[8,1,6;3,5,7;4,9,2]
A+B=A+B
A-B=A-B
在Matlab命令窗口建入,则
结果显示 A+B=
9 2 7
4 7 10
5 12 8
A-B=
-7 0 -5
-2 -3 -4
-3 -6 4
3.混合积
eg. 计算向量a=(1,2,3),b=(4,5,6)和c=(-3,6,-3)的混合积a.(b*c)
在MATLAB编辑器中建立M文件
a=[1 2 3];b=[4 5 6];c=[-3 6 -3]
x=dot(a,cross(b,c))
4.符号矩阵的四则运算
eg. A=sym(‘[1/x,1/(x+1); 1/(x+2), 1/(x+3)]’)
B=sym(‘[x,1;x+2,0]’);
C=B-A
D=A\B
则显示
C=
x-1/x 1-1/(x+1)
x+2-1/(x+2) -1/(x+3)
D=
-6*x-2*x^3-7*x^2 1/2*x^3+x+3/2*x^2
6+2*x^3+10*x^2+14*x -2*x^2-3/2*x-1/2*x^3
5.向量组的最大无关组
Eg.
a1=(1,-2,2,3),a2=(-2,4,-1,3),a3=(-1,2,0,-3),a4=(0,6,2,3),a5=(2,6,3,4)的一个最大无关组 在MATLAB编辑器中建立M文件
a1=[1 -2 2 3]’;
a2=[-2 4 -1 3]’;
a3=[-1 2 0 3]’;
a4=[0 6 2 3]’;
a5=[2 -6 3 4]’;
A=[a1 a2 a3 a4 a5]
format rat %以有理数格式输出
B=rref(A) %求A的行最简形
运行后的结果为
A=
1 -2 -1 0 2
-2 4 2 6 -6
-2 -1 0 2 3
3 3 3 3 4
B=
1 0 1/3 0 16/9
0 1 2/3 0 -1/9
0 0 0 1 -1/3
0 0 0 0 0
从中可以得到;向量a1 a2 a4为其中最大无关组
实验三 MATLAB的符号计算
一、实验目的和要求:
通过完成实验三,掌握MATLAB的符号计算。
二、实验内容:
1.使用sym函数定义符号变量和符号表达式
使用sym函数定义符号表达式 ax^2+bx+c
>>a=sym(‘a’)
>>b= sym(‘b’)
>>c= sym(‘c’)
>>x=sym(‘x’)
>>f=a*x^2+b*x+c
f=
a*x^2+b*x+c
2.findsym函数用于寻找符号变量
>>syms a alpha b x1 y
>>findsym (alpha+a+b)
ans=
a,alpha,b
>>findsym(cos(a’pha)*b*x1+14*y,2)
ans=
x’,y
>>findsym(y*(4+3*i)+b*j)
ans=
y
>>
3.符号表达式的四则运算
例: >>syms x y a b
>>fun1=sin(x)+cos(y)
fun1=
sin(x)+cos(y)
>>fun=a+b
fun=
a+b
>>fun1+fun2
ans=sin(x)+cos(y)+a+b
>>fun1*fun2
ans=
(sin(x)+cos(y)*(a+b)
4.由数值矩阵转换为符号矩阵
例:>>u=[19 1 2 4;6 1 7 8;9 2 16 3;3 4 3 20]
u=
19 1 2 4
6 1 7 8
9 2 16 3
3 43 2 0
>>s=sym(u)
s=
[ 19 , 1 , 2 , 4]
[ 6 , 1 , 7 , 8]
[ 9 , 2 , 16 , 3]
[ 3 , 43 , 2 , 0]
5.jacobian函数的使用
例: >>sym s x y z
>>a=[x^2+x*y;sin(x)*cos(y)]
a=
[x^2+x*y]
[sin(x)+cos(y)]
>>jacobian (a,[x,y])
[2*x+y,x]
[cos(x)*cos(y),-sin(x)*sin(y)]
实验四 MATLAB的程序设计
一、实验目的和要求:
通过完成实验四,掌握MATLAB的程序设计。
二、实验内容:
1.函数
例:function isleapyear(year)
sign=0;
if rem(year,4)==0
sign=sign+1;
end
if rem(year,100)==0
sign=sign-1;
end
if rem(year,400)==0
sign=sign+1;
end
if sign>=1
fprintf(‘%4d year is a leap year.\n’,year)
else
fprintf(‘%4d year is not a leap year.\n’,year)
end
>>y1=1000;
>>y2=2000;
>>y3=1996;
>>y4=3000;
>>isleapyear(y1)
1000 year is not a leap year
>>isleapyear(y2)
2000 year is a leap year
>>isleapyear(y3)
1996 year is a leap year
>>isleapyear(y4)
3000 year is not a leap year
2.将百分数的分数转化为五级制分数 90~100:优 80~90:良70~79:中 60~69:及格 59以下为不及格
>>function f=change(score)
a=floor (score/10)
switch a
case {10,9}
f=’该成绩为优’
case 8
f=’该成绩为良’
case 7
f=’该成绩为中’
case 6
f=’该成绩为及格’
otherwise
f=’该成绩为不及格’
end
运行结果:
>>b=88
b=
88
>>change(b)
a=
8
f=
该成绩为良
3.编写三个子函数和一个主函数,实现下列函数在点x=0.5,2.5,6.5处的计算
>>function r=zhs(x)
if x<=2/3
r=zihanshu1(x)
else if 2/3<x&x<=6
r=zihanshu2(x)
else r=zihanshu3(x)
end
function r1=zihanshu1(x)
r1=2*x-3
function r2=zihanshu2(x)
r2=(sin(x)+cos(x)^2)/(1+x^2)
function r3=zihanshu3(x)
r3=(x^3+52/(tan(x)+6)
运行结果:
zhs(0.5)
r1=-2
r=-2
ans=
-2
zhs(2.5)
r2=0.1711
r=0.1711
ans=
0.1711
zhs(6.5)
r3=44.9538
r=44.9538
ans=
44.9538
实验五 MATLAB 计算结果的可视化
一、实验目的和要求:
通过完成实验一,掌握MATLAB的基本绘图方法。
二、实验内容:
1.绘制二维进线图
例:>>x=0:0.11:10;
>>y1=sin(x);
>>y2=cos(x-2.5);
>>y3=tan(x+1.5)
>>plot(x,y1,x,y2,x,y3)
2.文本标注和交互式文本标注
例:>>x=linspace(-3,5,100);
>>y=cos(x);
>>z=sin(x);
>>plot(x,y,x,z);
>>title('一条正弦曲线和一条余弦曲线’)
>>xlabel('x的取值范围’)
>>ylabel('y和z的值’)
3.条形图和面积图
例 >>y=[1 2 3 4 5 6 7 8 9 10]
>>y
y=
1 2 3 4 5 6 7 8 9 10
>>bar(y)
4.给图形添加标题
>> x=0:.1:2;
>> y1=sin(x);
>> y2=sin(x-0.25);
>> y3=sin(x-0.5);
>> plot(x,y1,'-.b',x,y2,'--r*',x,y3,'-.gh')
5.view函数的使用
>>[x,y]=meshgrid([-5:0.2:5]);
>>z=exp(0.5*(x.^2-y.^2));
>>surf(x,y,z)
>>view(30,60)
6.编写三个子函数和一个主函数,实现下列函数在点x=0.5, 2.5, 6.5处的计算
解:
function r=mf(x)
if x<=2/3
r=zihanshu1(x)
elseif 2/3<x&x<=6
r=zihanshu2(x)
else
r=zihanshu3(x)
end
function r1=zihanshu1(x)
r1=2*x-3
function r2=zihanshu2(x)
r2=(sin(x)+cos(x)^2)/(1+x^2)
function r3=zihanshu3(x)
r3=(x^3+5)/(tan(x)+6)
>>mf(0.5)
ans=
-2
>>mf(2.5)
ans=
0.1711
>>mf(6.5)
ans=
44.9538