1、求以下变量的值,并在MATLAB中验证。
( 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
5 8 11 >> result4=b*d result4 =
31 22 22 40 49 13 >> result5=[b;c']*d result5 = 31 22 22
40 49 13 -5 -8 7 >> result6=a.*b result6 =
2 8 -3 4 15 30 >> result7=a./b result7 =
0.5000 0.5000 -3.0000 4.0000 1.6667 1.2000
>> result8=a.c
Attempt to reference field of non-structure
array. >> result9=a.\\b result9 = 2.0000 2.0000 -0.3333 0.2500 0.6000 0.8333 >> result10=a.^2 result10 = 1 4 9 16 25 36
>> result11=2.^a result11 = 2 4 8 16 32 64 3、用MATLAB求解下面的的方程组。 ??721?2??x1??4?(1)?9153?2????2?2115??x?2??x??7?????? 3???1??13213????x???4??0?>> 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 ??x?y?z?1(2)??x?2y?z?w?83 ?2x?y?3w???3x?3y?5z?6w?5>> 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
??721?2?9153?2?A??????2?2115?4、已知
?13213?? (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)
7、分别用if和switch语句实现,将百分
制成绩转换为成绩等级A、B、C、D、E。其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。对超出百分制范围的成绩,给出错误提示信息。 if结构程序:
x=input('please enter score='); if x>=90&&x<=100 disp('A')
elseif x<90&&x>=80
disp('B') 5、
10elseif x<80&&x>=70
n?10?9910 2disp('C') y?2?2?2???2 ?elseif x<70&&x>=60 n??10 disp('D') ,求y=?(运行format long g命令
elseif x<60&&x>=0 后,查看y的值)
m1=0; disp('E') for m=-10:10 else m1=m1+2^m; disp('error') end end m1 switch结构程序: m1 = x=input('please enter score='); 2047.9990234375 switch fix(x/10)
case{10,9}
if x>100 6、求分段函数的值。
disp('error')
2?x?x?6x?0 else ?2 disp('A') y??x?5x?60?x?5 end
?x2?x?1x?5 case{8} ? disp('B')
case{7} 用if语句实现,算出下列表中x对应的y
disp('C') 值。
x=input('enter x='); case{6} if x<0 disp('D') y=x^2+x-6; case{0,1,2,3,4,5} elseif x>=0&&x<5 disp('E') y=x^2-5*x+6; otherwise else disp('error') y=x^2-x-1; end end y 8、思考题 设计程序,完成成两位数的加、减、乘、除
?四则运算,即产生两个两位随机整数,再输入一个运算符号,做相应的运算,并显示相应的结果。 x=input('请输入运算符')
a=num2str(floor(rand(1)*90+10)); a
b=num2str(floor(rand(1)*90+10)); b
if x=='+' y=a+b; elseif x=='-' y=a-b; elseif x=='*' y=a*b; elseif x=='/' y=a/b; else
disp('error') end y
9、启动MATLAB后,点击File|New|M-File,
启动MATLAB的程序编辑及调试器(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 a
10、根据
x26?111112?22?32???n2,
当n分别取100、1000、10000时,求x的值分别是多少? a=input('请输入数值') n=0;
for m=1:100
n=n+1/(m*m); end n=6*n; x=sqrt(n); x
11、编程求满足?mk?12k?10000的
最小m值。 sum=0; m=2; a=1; while a
for i=1:m
sum=sum+2^i; if sum>10000 a=0; end end
m=m+1; end m
12、思考题 已知y和
t的函数关系:
y(t)?1?t?t2/2!?t3/3!?...?t20/20!求下面表格中与t对应的y值 t 0.2 0.4 0.6 0.8 1.0 y t=input('请输入t值:') sum=0; for i=1:20
b=factorial(i);
sum=sum+t^i/b; end
sum=sum+1; sum
13、编写一个函数,计算下面函数的值,给
出标量x的值,调用该函数后,返回y的值。
function [y]=myfun1(x)
?sinx,x?0y(x)???x,0?x?3???x?6,x?3选择一些数据测试你编写的函数。 function [y]=myfun1(x) if x<=0 y=sin(x);
elseif x>0&x<=3 y=x;
elseif x>3 y=-x+6; end
14、编写一个函数求向量x中元素的平均值、
最大值、最小值、均方根值。 function
[m_x,max_x,min_x,rms_x]=myfun2(x)
方均根值(Root Mean Square)的计算公式为:
rms?1N2N?xii?1
用下面数据测试你写的函数: (1)x=sin(0:0.01:6*pi) (2)x=rand(1,200),得到的x为200个(0,
1)之间均匀分布的随机数。 function
[m_x,max_x,min_x,rms_x]=myfun2(x) %求平均值
sum_x=sum(x); %向量元素求和
[m,n]=size(x); %最好用n=length(x);
m_x=sum_x/n;
%求最大值 采用逐个比较方式 if x(1)>x(2) max_x=x(1); else
max_x=x(2); end
for k=3:n
if max_x max_x=max_x; %可省略 end end %求最小值 if x(1) min_x=x(2); end for k=3:n if min_x>x(k) min_x=x(k); else min_x=min_x; %可省略 end end %求均方根值 sum_x2=0; for k=1:n sum_x2=sum_x2+x(k).^2; rms_x=sqrt(sum_x2/n); end m_x; max_x; min_x; rms_x; %按照函数值行参顺序输出结果 15、编写一个函数,给出一个向量 x?[x1,x2,?xn],生成如下范德 蒙矩阵。 function [v]=myvander(x)
相关推荐: