MATLAB实验题答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

result5 =
( 1 ) a = 1 : 2 : 5
a =
1 3 5
( 2 ) b = [ a' , a' , a' ;a ]
b =
1 1 1
3 3 3
5 5 5
1 3 5
( 3 ) c = a + b ( 2 , : )
c =
4 6 8
2、下列运算是否合法,为什么如合法,
结果是多少
>> result2=a*b
Error using *
Inner matrix dimensions must agree. >> result3=a+b
result3 =
3 6 2
58 11
>> result4=b*d
result4 =
31 22 22
40 49 13
31 22 22
40 49 13
-5 -8 7
>> result6=a.*b result6 =
2 8 -3
415 30
>> result7=a./b result7 =
>> result8=
Attempt to reference field of non-structure array.
>> result9=a.\b result9 =
>> result10=a92
result10 =
1 4 9
16 25 36
>> resultl 1=29a
result11 =
2 4 8
16 32 64
>>
result5=[b;c']*d 3、用MATLAB求解下面的的方程组。

1、求以下变量的值,并在MATLAB^验证。

1 2 x1
3 2 x2
11 5 x3
2 1
3 x4
>> A=[7 2 1 -2;9 15 3 -2;-2 -2 11 5;1 3 2 13] >> B=[4 7 -1 0]
>> B=B'
>> x=inv(A)*B
>> A1=[1 1 1 0;1 2 1 -1;2 -1 0 -3;3 3 5 -6] >> B2=[1;8;3;5]
>> x2=inv(A1)*B2
7 2 1 2
9 15 3 2
2 2 11 5
1 3
2 13
(1)求矩阵A的秩(rank)
(2)求矩阵 A 的行列式(determinant)
(3)求矩阵 A 的逆(inverse)
(4)求矩阵 A 的特征值及特征向量
(eigenvalue and eigenvector)
>> A3=[7 2 1 -2;9 15 3 -2;-2 -2 11 5;1 3 2 13] >> r=rank(A3) >> b=inv(A3)
>> a=det(A3) >> [V,D]=eig(A3)
10
n 10
查看y 的值)
m1=0;
for m=-10:10 m仁m1+2^m;
end
m1
m1 =
6、求分段函数的值。

用if 语句实现,算出下列表中x 对应的y 值。

x=input('enter x=');
if x<0
y=x A2+x-6;
elseif x>=0&&x<5
y=xA2-5*x+6;
else
y=xA2-x-1;
end
y
7、分别用if 和switch 语句实现,将百分
制成绩转换为成绩等级A、B、C、D、E。

其中90~1 00分为A,80~89 分为B,70~79
分为C,60~69 分为D,60 分以下为E。

对超出百分制范围的成绩,给出错误提示
信息。

if 结构程序:
x=input('please enter score=');
if x>=90&&x<=100
9
2
10
disp('A')
7 2
9 15
(1)
2 2
1 3 4 7 1 0
A
4、已知
2n 2 10 29
elseif x<80&&x>=70 otherwise
disp('C')
disp('error')
elseif x<70&&x>=60
end
disp('D')
8、思考题
elseif x<60&&x>=0
设计程序,完成成两位数的加、减、乘、除
disp('E') 四则运算,即产生两个两位随机整数,再输入一个运算符号,做相应的运算,
else 并显示相应的结果。

disp('error')
x=input(' 请输入运算符')
end
a=num2str(floor(rand(1)*90+10));
switch 结构程序:
a
x=input('please enter sco re=');
b=num2str(floor(rand(1)*90+10));
switch fix(x/10)
b
case{10,9}
if x=='+'
if x>100
y=a+b;
disp('error')
elseif x=='-'
else
y=a-b;
elseif x=='*'
disp('A')
y=a*b;
end
elseif x=='/'
case{8}
y=a/b;
disp('B')
else
case{7}
disp('error')
disp('C')
end
case{6}
y
disp('D') 9、启动MATLAB后,点击File|New|M-File ,
启动MATLAB的程序编辑及调试器
case{0,1,2,3,4,5} ( Editor/Debugger ),编辑以下程序,点
击File|Save 保存程序,注意文件名
最好用英文字符。

点击Debug|Run 运行 程序,在命令窗口查看运行结果, 程序 如有
错误则改正。

注:数论中一个有趣的题目: 任意一个正整 数,若为偶数,则用2除之,若为奇数, 则与3相乘再加上1。

重复此过程,最 终得到的结果为1。

n=input('请输入 n 值:'); a=n; while n>1 if rem(n, 2)==0 n=n/2; else n=3*n+1; end a=[a,
n]; end

根 据 2 x 1
1
1 1 6 12
22 32
2 n
当n 分别取 100、 1000、 10000时,求 x 的值分别是多少
10 m k

2k
10000
11、 编程求满足
k 1

最小m 值。

sum=0; m=2; a=1; while a
for i=1:m
sum=sum+2A i; if sum>10000
a=0; end end m=m+1;
end m
12、 思考题
已知 y 和 t 的函数关系:
23
a=input('请输入数值') n=0; for m=1:100 n=n +1/(m*m); 求下面表格中与t 对应的y 值
t=input('请输入 t 值:
') end sum=0; n=6* n; for i=1:20
x=sqrt( n );
b=factorial(i);
sum=sum+t"/b; [m,n]=size(x); %最好用n=length(x); end m_x=sum_x/n;
sum=sum+1; %求最大值采用逐个比较方式
sum if x(1)>x(2)
13、编写一个函数,计算下面函数的值,给max_x=x(1);
出标量x 的值,调用该函数后,返回y
的值。

else
function [y]=myfun1(x) max_x=x(2);
选择一些数据测试你编写的函数。

end
function [y]=myfun1(x) for k=3:n
if max_x<x(k)
if x<=0
y=sin(x); max_x=x(k);
else
elseif x>0&x<=3
max_x=max_x; %可省略
y=x;
elseif x>3 end
end
y=-x+6;
%求最小值
end
if x(1)<x(2)
14、编写一个函数求向量x 中元素的平均值、
最大值、最小值、均方根值。

min_x=x(1);
function
else
[m_x,max_x,min_x,rms_x]=myfun2(x)
min_x=x(2);
方均根值(Root Mean Square) 的计算公式为:
end
用下面数据测试你写的函数:
for k=3:n
(1) x=sin(0::6*pi)
if min_x>x(k)
(2)x=rand(1,200) ,得到的x 为200个( 0,
min_x=x(k);
1)之间均匀分布的随机数。

function else
[m_x,max_x,min_x,rms_x]=myfun2(x) %
min_x=min_x; %可省略求平均值
sum_x=sum(x); %向量元素求和end
end
%求均方根值 sum_x2=0; for k=1: n
sum_x2=sum_x2+x(k).A
2; rms_x=sqrt(sum_x2/n); end m_x; max_x; min_x; rms_x;
%按照函数值行参顺序输出结果
15、编写一个函数,给出一个向量
X [X^ x
2,
x n ]
,生成如下范德
蒙矩阵。

fun cti on [v]=myva nder(x)
例如:>>v=myva nder([2 3 4 5])
得v=
X n
a X n 1
统计迭代次数。

2 2X n
function [x,n]=sqrt_a(a)
x=; for k=1:100 m=x; x=x/2+a/(2*x); if abs(x-m)<=10A(-5) break end end x; n=k;
s=(x-sqrt(a));
if s<=10A(-5)
fun cti on [v]=myva nder(x) v1=va nder(x); %生成范德蒙矩阵 v2=v1';
disp('正确'); else
disp('错误');
v=flipud(v2); %实现矩阵上下翻转 end
>> plot(t,y1,t,y2,t,y3)
16、思考题
编写程序,用如下迭代公式求
a ,a 的值
分别为:3,17,113。

迭代的终止条件 为 x
n 1
X n 105
迭代初值
X 。

1.0
,迭代次数不超过100次。

分别对迭代结果和准确值进行比较,

17、在同一坐标系下绘制下面三个函数在
t[0,4]的图象。

>> t=0::4*pi; >> y1=t; >> y2=tA; >> y2=sqrt(t);
>> y3=4*pi*eps*t).*si n( t);
18、编写程序,选择合适的步距,绘制下面
函数在区间[-6 ,6] 中的图象。

function y=fun1(x)
y=[];
for x0=x
if x0<=0
y=[y,sin(x0)];
elseif x0>0&&x0<=3
y=[y,x0];
elseif x0>3
y=[y,6-x0];
end
end
>> x=-6::6;
>> y=fun1(x);
>> plot(x,y)
19、用compass 函数画下面相量图
ua = 1 ; ub
cos(-2*pi/3)+sin(-2*pi/3)*i
uc=cos(2*pi/3)+sin(2*pi/3)*i;
compass([ua,ub,uc,ua-ub,ub-uc,uc-ua])
>> ua=1;
>> ob=cos(-2*pi/3)
>> ob=cos(-2*pi/3)+sin(-2*pi/3)*i;
>> ub=cos(-2*pi/3)+sin(-2*pi/3)*i;
>> uc=cos(2*pi/3)+sin(2*pi/3)*i;
>> compass([ua,ub,uc,ua-ub,ub-uc,uc-ua]) 20、三维空间曲线绘制
z=0::4*pi;
x=cos(z);
y=sin(z); plot3(x,y,z) >> z=0::4*pi; >> x=cos(z); >> y=sin(z);
>> plot3(x,y,z)
21、用mesh 或surf 函数,
表示的三维空间曲面,
围设为[-3 ,3] 。

绘制下面方程所
x和y的取值范>> x=-3::3;
>> y=-3::3;
>> [x,y]=meshgrid(x,y);
>> z=-x.*x/10+y.*y/10;
>> mesh(x,y,z)
>> z=x.*x/10+y.*y/10;
>> mesh(x,y,z)
22、思考题
用对分法求解方程2e sinx在【°,
1] 内的解,并验证,在程序中统计出对
分次数。

提示:先将原方程转化成
x
f (x) 2e sin x 0 的形式。

对分法的基本思想是:一个一元方程f(x)=0 ,若f(x1)*f(x2)<0 ,则在[x1,x2] 区间内有
实数解。

取该区间的中点xm=(x1+x2)/2 ,判
定f(x1) 和f(x2) 二者中哪一个与
f(xm) 异号,若f(x1)*f(xm)<0 ,则解存
在的区间缩小为[x1,xm] ,否则解存在的区
间缩小为
[xm,x2] 。

重复这样的步骤,直到区间的长
度小于一个可以接受的小数 (比如1e-10 ),
则认为中点即是原方程的解。

>> x0=0;
x1=1;
y=1;
i=0;
while y~=0
i=i+1;
x3=(x0+x1)/2;
y=2*eps(-x3)-sin(x3);
y0=2*eps(-x0)-sin(x0);
y1=2*eps(-x1)-sin(x1);
if y*y0<0
x0=x3;
elseif y*y1<0
x1=x3;
elseif y==0
x3=x3;
end
if i==1000000
y=0;
end
End
23 、求代数方程
3x54x47x32x29x 12 0 的 5 个根,并将其用星号( * )标记在复平面图上。

(用roots 和plot 函数)
>> a=[3,4,7,2,9,12];
>> y=roots(a) >> plot(y,'*')
求代数方程x51 0的 5 个根,并将其用星号(* )标记在复平面图上。

(用roots 和plot
函数)
程序:
>> a1=[1,0,0,0,0,-1];
>> y1=roots(a1)
>> plot(y1,'*') 24、求下面函数在[,4] 区间内的过零点。

(用
fzero 函)
>> x=::4;
>> y2=x.A3-2*x.A2.*si n(x)+5*x.*cos(x)+1./x; >> plot(x,y2)
函数:
function y2=fz(x)
y2=x.A3-2*x.A2.*sin(x)+5*x.*cos(x)+1./x; 分析:
根据图像可知零点在x=1 和x=3 附近
所以
>> fzero('fz',1)
ans =
>> fzero('fz',3)
ans =
25、
已知R=50欧姆,U=4V二极管D正向电流
与电压的关系为:
求此电路中的电流Id和二极管正向电压Ud
(要求用fsolve函数求解)
程序:
>> x=fsolve('fu n',0,optimset('Display','off))
>> y3=5*10A(-11)*exp*x/*10A(-4)*27)-1)
函数:
fun cti on y=fun(x)
y=5*10A(-11)*exp*x/*10A(-4)*27)-1)+x-4;
26、实验数据处理:已知某压力传感器的测试数据如下表
p为压力值,u为电压值,试用多项式
u(p) ap3 bp2 cp d
来拟合其特性函数,求出a,b,c,d ,并
把拟合曲线和各个测试数据点画在同一幅图上。

程序:
>> n=3;
>> p=[ ];
>> u=[10 11 13 14 17 18 22 24
29 34 39];
>> f=polyfit(p, u,n)
>> p1=0:10;
>> u1=polyval(f,p1);
>> plot(p,u,'*',p1,u1,'-')。

相关文档
最新文档