matlab习题解答
上机练习题一
学号:
1. 建立起始值=3,增量值=5.5,终止值=44的一维数组x 答案: x=(3:5.5:44)
o
2. 写出计算 Sin(30) 的程序语句. 答案: sin(pi*30/180) 或 sin(pi/6)
3. 矩阵
⎡323⎤
⎥A =⎢426⎢⎥
⎢⎣781⎥⎦
, 矩阵
⎡111⎤
⎥B =⎢222⎢⎥
⎢⎣333⎥⎦
; 分别求出A ⨯B 及A 与
B 中对应元素之间的乘积.
答案:A = [3,2,3; 4,2,6; 7,8,1]
B = [1,1,1; 2,2,2; 3,3,3] A*B;A.*B
4计算行列式的值A =4
32326
。答案:det(A)
781
5对矩阵
⎡323⎤
⎥A =⎢426⎢⎥
⎢⎣781⎥⎦
进行下述操作。
(1)求秩。答案:rank(A)
(2)求转置。答案:A' (3) 对矩阵求逆,求伪逆。答案:inv(A) ,pinv(A) (4) 左右反转, 上下反转。答案:fliplr(A),flipud(A)
(5) 求矩阵的特征值. 答案:[u,v]=eig(A) (6) 取出上三角和下三角. 答案:triu(a) tril(a)
(7)以A 为分块作一个3行2列的分块矩阵。答案:repmat(a)
6 计算矩阵
⎡535⎤⎢374⎥⎢⎥⎢⎣798⎥⎦
与
⎡242⎤
⎢679⎥⎢⎥⎢⎣836⎥⎦
之和。
>> a=[5 3 5;3 7 4;7 9 8];
>> b=[2 4 2;6 7 9;8 3 6]; >> a+b 7 计算a =⎡⎢⎣6
2
93⎤75⎥⎦
与b =⎡⎢⎣2
4
41⎤68⎥⎦
的数组乘积。
>> a=[6 9 3;2 7 5];
>> b=[2 4 1;4 6 8]; >> a.*b ans =
12 36 3
8 42 40 8 已知:
⎡123⎤
⎥a =⎢⎢456⎥
⎢⎣789⎥⎦
,分别计算a 的数组平方和矩阵平
方,并观察其结果。
>> a=[1 2 3;4 5 6;7 8 9]; >> a.^2 ans =
1 4 9 16 25 36 49 64 81 >> a^2 ans =
30 36 42 66 81 96 102 126 150
上机练习题二
学号:
1 对于AX =B ,如果
⎡492⎤
⎥A =⎢⎢764⎥
⎢⎣357⎥⎦
,
⎡37⎤
⎥B =⎢⎢26⎥⎢⎣28⎥⎦
,求解X 。
>> A=[4 9 2;7 6 4;3 5 7];
>> B=[37 26 28]’; >> X=A\B X =
-0.5118 4.0427 1.3318
2 角度x =[304560],求x 的正弦、余弦、正切和余切。 >> x=[30 45 60]; >> x1=x/180*pi; >> sin(x1) ans =
0.5000 0.7071 0.8660 >> cos(x1) ans =
0.8660 0.7071 0.5000 >> tan(x1) ans =
0.5774 1.0000 1.7321 >> cot(x1) ans =
1.7321 1.0000 0.5774
4
3 将矩阵a =⎡⎢5
⎣
2⎤
7⎥⎦
1⎤⎡59⎤
c =、b =⎡⎢⎣7和⎢62⎥组合成两个新矩阵: 83⎥⎦⎣⎦
(1)组合成一个4⨯3的矩阵,第一列为按列顺序排列的a 矩阵元素,第二列为按列顺序排列的b 矩阵元素,第三列为按列顺序排列的c 矩阵元素,即 ⎡75⎤
⎢4⎢586⎥⎢⎢219⎥⎥
⎣7
32⎥⎦
( 2 )按照 a 、b 、c 的列顺序组合成一个行矢量,即[[1**********]2] 答案:a=[4 2;5 7]; b=[7 1;8 3]; c=[5 9;6 2]; % (1)
>> d=[a(:) b(:) c(:)] d =
4 7 5 5 8 6 2 1 9 7 3 2 % (2)
>> e=[a(:);b(:);c(:)]' e =
4 5 2 7 7 8 1 3 6 9 2
或利用(1)中产生的d >> e=reshape(d,1,12)
5
ans =
4 5 2 7 7 8 1 3 5 6 9 2
4求解在x =8时多项式(x -1)(x -2) (x -3)(x -4) 的值。 >> p=poly([1 2 3 4]); >> polyvalm(p,8) ans = 840
5求方程3x +7x +9x -23=0的全部根。
p=[3,7,9,0,-23]; %建立多项式系数向量 x=roots(p) %求根
4
3
2
上机练习题三
学号:
1、 设x 是数组,求均值和方差 解:函数文件如下:
function [xx,s]=func1(x) n=length(x); xx=sum(x)/n;
s=sqrt((sum(x.^2)-n*xx^2)/(n-1)); 命令窗口:
>> x=[1 2 3 4 5];[xx,s]=func1(x) 2、求满足∑m ln(1+n ) >100的最小m 值
n =0
s=0; n=0;
while(s
3、用循环语句形成
Fibonacci
F 1=F 2=1, F 1+5k =F k -1+F k -2, k =3, 4,....
。并验证极限F
k
F →
(提示:
k -1
2
计算至两边误差小于精度1e-8为止) 解: 求Fibonacci 数列的函数文件: function f=fun(n)
if n
f=fun(n-1)+fun(n-2); end
数列
验证极限的函数文件:
function [k,a]=funTest(e) a=abs(1-(1+sqrt(5))/2); k=2;
while(a>e) k=k+1;
a=abs(fun(k)/fun(k-1)-(1+sqrt(5))/2); end 命令行:
>> [k,a]=funTest(10^-8) k = 21 a =
9.7719e-009 或者M 文件如下:
clear; F(1)=1;F(2)=1;k=2;x=0; e=1e-8; a=(1+sqrt(5))/2; while abs(x-a)>e k=k+1; F(k)=F(k-1)+F(k-2); x=F(k)/F(k-1); end a,x,k 4、分别用for 和while 循环结构编写程序,求出K =∑23,
106i =1
i
并考虑一种避免循环语句的程序设计,比较各种算法的运行时间。
解:for 循环结构:M 文件loop.m
k=0;
for i=1:10^6
k=k+sqrt(3)*2^-i; end k
while 循环结构:M 文件loop1.m
k=0;i=1;
while i
k=k+sqrt(3)*2^(-i); i=i+1; end k
非循环结构:M 文件nonLoop.m i=1:10^6;
x=sqrt(3)*(2.^-i); k=sum(x) 速度比较:>>tic;loop;toc %循环结构的执行时间
k =
1.7321
Elapsed time is 1.813000 seconds.
>> tic;nonLoop;toc %非循环结构的执行时间
k =
1.7321
Elapsed time is 1.094000 seconds.
上机练习题四
学号:
1、作图描述气温变化 >> x=0:24;
>>
y=[15,14,14,14,14,15,16,18,20,22,23,25,28,31,32,31,29,27,25,24,22,20,18,17,16]; >> plot(x,y)
2、作出下列函数图形
(1)y =x sin(x -x -2) -2≤x ≤2 (分别使用plot 和fplot 完成) 解:>> fplot('x^2*sin(x^2-x-2)',[-2 2]) %fplot 方法 >>
x=-2:0.1:2;y=x.^2.*sin(x.^2-x-2);plot(x,y) %plot 方法 如图(4.1)
(2)x 4+y 9=1 (椭圆 提示:用参数方程)
2
2
2
2
解:>> r=-pi:0.1:pi;x=2*cos(r);y=3*sin(r);plot(x,y) % 如图(4.2) 解法二
x=-2:1/100:2;
y1=3*sqrt(1-x.^2/4); y2=-3*sqrt(1-x.^2/4);
plot(x,y1,'r-',x,y2,'r-'); axis equal tight;
图(4.1)
图(4.2)
(3)z =x +y (抛物面) x > plot3(x,y,z) % 如图(4.31) (正确)>> xa=-3:0.1:3;ya=-3:0.1:3;[x,y]=meshgrid(xa,ya); % 如图(4.32) >> z=x.^2+y.^2;mesh(x,y,z);
>> surf(x,y,z)
22
图(4.31)error
图(4.32)
(4)曲面z =x +3x +y -2x -2y -2x y +6, x > [x,y]=meshgrid(xa,ya); >> z=x.^4+3*x.^2+y.^2-2*x-2*y-2*x.^2.*y+6; >> mesh(x,y,z) 4222
>> surf(x,y,z)
(5)空间曲线x =sin t , y =cos t , z =cos(2t ), 0
解:>> t=linspace(0,2,50);x=sin(t);y=cos(t);z=cos(2*t); >> plot3(x,y,z) (6)半球面x =2sin φcos θ, y =2sin φsin θ, z =2cos φ, 0≤φ≤360, 0≤θ≤90 解: >>a=linspace(0,2*pi,50);b=linspace(0,pi/2,50); >> [a,b]=meshgrid(a,b); >> x=2*sin(a).*cos(b);y=2*sin(a).*sin(b);z=2*cos(a); >> surf(x,y,z) (7)三条曲线合成图y =sin x , y =sin t sin(10x ), y =-sin x , 0>x=linspace(0,pi,50);y1=sin(x); >> plot(x,y1);hold on; >> y2=sin(x).*sin(10*x); >> plot(x,y2); >> y3=-sin(x); >> plot(x,y3); >> hold off; 123
3、作下列分段函数图⎧1. 1x >1. 1⎪y =⎨x x ≤1. 1
⎪-1. 1x
x=-5:0.1:5; for i=1:length(x) if x(i)>1.1 y(i)=1.1; elseif x(i)
⎧0. 5457exp(-0. 75y 2-3. 75x 2-1. 5x ), x +y >1⎪p (x , y ) =⎨0. 7575exp(-y 2-6x 2), -1
⎪0. 5457exp(-0. 75y 2-3. 75x 2+1. 5x ), x +y ≤-1⎩ 解:建立M 文件pxy 如下: xa=-2:0.05:2;ya=xa; nx=length(xa);ny=length(ya); [x,y]=meshgrid(xa,ya); z=zeros(nx,ny); [a1,b1]=find(x+y>1); %第a1列b1
行对应的
x+y>1 %值是第a1 列对应的(x对应列;x 值是y 对应行xa(a1)) ;第 b1行对应的y z((a1-1)*ny+b1)=0.5457*exp(-0.75*ya(b1).^2-3.75*ya(b1)
xa(a1).^2-1.5*xa(a1)); [a2,b2]=find(x+y-1);
z((a2-1)*ny+b2)=0.7575*exp(-ya(b2).^2-6*xa(a2).^2); [a3,b3]=find(x+y
命令窗口:surf(x,y,z);
运行结果如右图:>> pxy
或者
M 文件如下:
(xa,ya); clear;close; xa=-2:0.1:2;ya=-2:0.1:2;[x,y]=meshgrid
(k1).^2-1.5*x(k1)); z=zeros(size(x));
k1=find(x+y>1); z(k1)=0.5457*exp(-0.75*y(k1).^2-3.75*x
; k2=find(x+y-1); z(k2)=0.7575*exp(-y(k2).^2-6*x(k2).^2) k3=find(x+y
(k3).^2+1.5*x(k3)); z(k3)=0.5457*exp(-0.75*y(k3).^2-3.75*x mesh(x,y,z);
上机练习题五
号:班级: 姓名:
学1解:、运行>>demo demo
2、查询trapz 的功能、用法、目录、程序结构、相同目录下其它文件 解: >> help trapz ――功能用法 >> type trapz――程序结构,源码 >> which trapz――所在目录
>> help C:\MATLAB6p5\toolbox\matlab\datafun――该目录下其它文件
3在[0,4pi]画sin(x),cos(x)(在同一个图象中); 其中cos(x)图象用红色小圆圈画. 并在函数图上标注 “y=sin(x)”, “y=cos(x)” ,x轴,y 轴, 标题为“正弦余弦函数图象”.
x=linspace(0,4*pi,100);
y=sin(x);
plot(x,y);
gtext('y = sin(x)'); % 图形注解, 注意要用鼠标定位
hold on;
y=cos(x);
plot(x,y,'ro');
gtext ('y = cos(x)'); % 图形注解
xlabel('x轴'); % x轴注解
ylabel('y轴'); % y轴注解
title('正弦余弦函数图象'); % 图形标题
4从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。
sum=0;
cnt=0;
val=input('Enter a number (end in 0):'); while (val~=0)
sum=sum+val;
cnt=cnt+1;
val=input('Enter a number (end in 0):');
end
if (cnt > 0)
sum
mean=sum/cnt
end
5若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。求[1,500]之间的全部完数。
for m=1:500
s=0;
for k=1:m/2
if rem(m,k)==0
s=s+k;
end
end
if m==s
disp(m);
end
end
上机练习题六
学号:
1 假定数据点来源为:f (x ) =(x -3x +5) e sin x ,试根据生成的数据进行插值处理,得出较平滑的曲线。
x=0:.12:1;y=(x.^2-3*x+5).*exp(-5*x).*sin(x);plot(x,y,x,y,'o')
x1=0:.02:1;y0=(x1.^2-3*x1+5).*exp(-5*x1).*sin(x1); y1=interp1(x,y,x1);
>> y2=interp1(x,y,x1,'cubic');
>> y3=interp1(x,y,x1,'spline');
>> y4=interp1(x,y,x1,'nearest');
>> plot(x1,[y1;y2;y3;y4],':',x,y,'o',x1,y0)或者plot(x1,[y1',y2',y3',y4'],':',x,y,'o',x1,y0)
2 用不同插值的方法计算sin(x)在pi/2的值
clear
clc
x=0:0.2:pi;%产生包含被插值点的采样点(做成一个向量)
y=sin(x);%求出各采样点对应的样本值
y1=interp1(x,y,pi/2);%用默认的'linear' 方法计算sin(pi/2) y2=interp1(x,y,pi/2,'nearest');%用默认的'linear' 方法计2-5x
算sin(pi/2)
y3=interp1(x,y,pi/2,'cubic');%用三次多项式插值方法计算sin(pi/2)
y4=interp1(x,y,pi/2,'spline');%用三次样条插值方法计算sin(pi/2)
y5=spline(x,y,pi/2);%直接用'spline' 方法计算sin(pi/2),功能与y4相同
disp('各种方法的插值结果:')
out=['y1=', num2str(y1)
'y2=',num2str(y2);
'y3=',num2str(y3)]
out2=['y4=',num2str(y4)
'y5=',num2str(y5)]
3求
⎧dx ⎪dt =4x -2y
⎨dy ⎪=2x -y ⎩dt 的通解
[x,y]=dsolve('Dx=4*x-2*y','Dy=2*x-y', 't')
%P149(3)的求解
[x,y]=dsolve('Dx=a*y','Dy=-b*x ', 'x(0)=x0', 'y(0)=y0', 't')
y=dsolve('Dy=(b*x)/(a*y)', 'y(0)=y0','x');
4
⎧' y 2-t -2⎪y =, 0≤t ≤1求⎨的数值解,并与精确解y (t ) =t +1+1相比较。4(t +1) ⎪y (0) =2⎩
方法一:
%微分方程的M 函数funt.m 文件
function y=funt(t,y)
y=(y^2-t-2)/4/(t+1);
%以下是求解的脚本m 函数,可自由取名,然后在command 窗口调用该函数求解.
ts=[0,10];%自变量的求解区间
y0=2;%初值条件
[t,y]=ode23('funt',ts,y0);%用2,3阶龙格库塔方法求‘funt ’文件里的微分方程
y1=sqrt(t+1)+1;%求精确解对应点上的函数值
[t,y,y1]%以三列的形式显示结果,其中第一列为采样点t 对应的值,第二列为t 对应的数值解,第二列为t 对应的精确解。
方法二:
%或者直接用内建函数编写待求的微分方程,在一个M 脚本文件里执行求解。
funt=inline('(y^2-t-2)/4/(t+1)') %内建函数编写待求的微分方程
ts=[0,10];%自变量的求解区间
y0=2;%初值条件
[t,y]=ode23(funt,ts,y0);%用2,3阶龙格库塔方法求‘funt ’文件里的微分方程
y1=sqrt(t+1)+1;%求精确解对应点上的函数值
[t,y,y1]
5
lorenz 模型的状态方程表示为
1(t ) =-βx 1(t ) +x 2(t ) x 3(t ) x
2(t ) =-σx 2(t ) +σx 3(t ) x
3(t ) =-x 2(t ) x 1(t ) +ρx 2(t ) -x 3(t ) x
8取σ=10,ρ=28,β=,求解微分方程组,并绘制系统相平面图象。3
第一种方法建立lorenz 函数模型的状态方程
function xp=lorenz(t,x)%建立lorenz 函数模型的状态方程
xp=[-8/3,0,x(2);0,-10,10;-x(2),28,-1]*x%表明x 是一个三维向量,前面是一个线性方程组的系数矩阵,xp%是一个三维的输出表示x(1),x(2),x(3)的一阶导数向量。
第二种方法建立lorenz 函数模型的状态方程
function xp=lorenz1(t,x)%建立lorenz 函数模型的状态方程
xp=[-8/3*x(1)+x(2)*x(3);-10*x(2)+10*x(3);-x(2)*x(1)+2
8*x(2)-x(3)];
%求解微分方程
clear;clc;
x0=[0,0,eps]';%三个初值条件构成的向量
[t,x]=ode23('lorenz',[0,100],x0);
[t,x]
plot(t,x),grid,pause%绘制解x(1),x(2),x(3)各自相对于变量t 的图象,按任意键后继续下面的程序
figure;plot3(x(:,1),x(:,2),x(:,3));%绘制解x(1),x(2),x(3)的关于系统的相平面图象
axis([10,40,-20,20,-20,20]);
上机练习题七
学号:
21有一组测量数据如下表所示,数据具有y =x 的变
化趋势,用最小二乘法求解y 。
>> x=[1 1.5 2 2.5 3 3.5 4 4.5 5]'
>> y=[-1.4 2.7 3 5.9 8.4 12.2 16.6 18.8 26.2]' >> e=[ones(size(x)) x.^2]
>> c=e\y
>> x1=[1:0.1:5]';
>> y1=[ones(size(x1)),x1.^2]*c;
>>
plot(x,y,'ro',x1,y1,'k')
2求下列线性方程组的解
(1)⎡⎢41-1⎤⎡x 1⎤⎡9⎤
⎢32-6⎥⎥⎢⎢x ⎥
2⎥=⎢⎢-2⎥
⎢-53⎥⎥
⎣1⎦⎢⎣x 3⎥⎦⎢⎣1⎥⎦
解1];x=a\b :>> a=[4 1 -1;3 2 -6;1 -5 3];b=[9; x = %唯一解
2.0213 2.3830 1.4894
(2)⎡⎢4-33⎤⎡x 1⎤⎡
⎢⎥⎢-1⎤
32-6x ⎥=⎢-2
⎢⎥⎢⎥
2
⎢⎥⎢⎥
⎣1-53⎥⎦⎣x 3⎥⎦⎢⎣1⎥⎦
解3];b=[-1;-2;1];x=a\b :>> a=[4 2 -6;1 x = -3 %唯一解3;3
-0.4706
-0.2941 0
(3)⎡⎢41⎤⎡1⎤
32⎥⎡⎢x 1⎤
⎢⎥⎣x ⎥=⎢1⎥
⎢⎣1-5⎥⎦2⎦⎢⎢⎥
⎣1⎥⎦
解:>> a=[4 1;3 -2; -5 2;1
-5];b=[1;1;1];x=a\b %最小二乘近似解 x = 0.3311 -0.1219
(4)⎡x 1⎤21-11⎡⎤⎢⎥⎡1⎤⎢121-1⎥⎢x 2⎥=⎢2⎥⎢⎥⎢x ⎥⎢⎥3⎢⎣1121⎥⎦⎢x ⎥⎢⎣3⎥⎦⎣4⎦,求通解 解:>> a=[2 1 -1 1;1 2 1 -1; 1 1 2 1];b=[1;2;3]; >> rank(a),rank([a,b]) ans = 3 ans = 3 %说明有无穷多解 >> rref([a,b]) %行最简化 ans =
1.0000 0 0 1.5000 1.0000
0 1.0000 0 -1.5000 0
0 0 1.0000 0.5000 1.0000 %通解为:x =-1. 5x +1,x =1. 5x ,x =-0. 5x +1 3、求下列矩阵的行列式、逆、特征值和特征向量 142434
(1)⎛41-1⎫ ⎪32-6 ⎪ 1-53⎪⎝⎭
-5 解:>> a=[4 1 -1;3 2 -6;1
3];det(a),inv(a),[v,d]=eig(a)
ans = 行列式 ans =
0.2553 -0.0213 0.0426
0.1596 -0.2234 矩阵的逆
0.1809 -0.2234 -0.0532
v =
0.0185 -0.9009 -0.3066
-0.7693 -0.1240 -0.7248 特征向量
-0.6386 -0.4158 0.6170
d =
-3.0527 0 0
0 3.6760 0 特征值
0 0 8.3766
(2)1⎫⎛43 ⎪ 33-5⎪ 1-53⎪⎝⎭
解:>> a=[4 3 1;3 3 -5;1 -5 3];det(a),inv(a),[v,d]=eig(a)
ans =
-124 行列式
ans =
0.1290 0.1129 0.1452
0.1129 -0.0887 -0.1855 矩阵的逆
v = 0.3757 -0.8583 0.3496 -0.6881 0.7255 特征向量
-0.6208 -0.5131 -0.5927
d =
-3.1480 0 0
0 4.6176 0 特征值
0 0 8.5304
(3) ⎛5765⎫ ⎪ 71087⎪ 68109⎪ ⎪ 57910⎪⎝⎭
解:>> a=[5 7 6 5;7 10 8 7;6 8 10 9;5 7 9 10];det(a),inv(a),[v,d]=eig(a)
ans =
行列式
ans =
68.0000 -41.0000 -17.0000 10.0000
-41.0000 25.0000 10.0000 -6.0000 矩阵的逆
-17.0000 10.0000 5.0000 -3.0000
10.0000 -6.0000 -3.0000 2.0000
v =
0.8304 0.0933 0.3963 0.3803
-0.5016 0.6149 0.5286 特征向量
-0.2086 0.7603 -0.2716 0.5520
0.1237 -0.5676 -0.6254 0.5209
d =
0.0102 0 0 0 0 0.8431 0 0 0 0 3.8581 特征值
0 0 0 30.2887 n=5;
tria = 6*eye(n-1); %构造上三角
rown = zeros(1,n-1);
coln = zeros(n,1);
tria = [tria;rown];
tria = [coln,tria]
eyeb = 5*eye(n); %构造对角阵
tric = 1*eye(n-1); %构造下三角
tric = [rown;tric]; 0 (4)
tric = [tric,coln]
A=tria+eyeb+tric
4求多项式的根,并分析误差大小
(1)x +x +1 解:>> A=[1,1,1];roots(A) ans = -0.5000 + 0.8660i -0.5000 - 0.8660i >> y=polyval(A,ans) %验证 y = 1.0e-015 * 0.3331 0.3331
(2)3x -4x +2x -1 解:>> A=[3 0 -4 0 2 -1];x=roots(A) x = -0.9479 + 0.3845i -0.9479 - 0.3845i 1.0000 0.4479 + 0.3435i 0.4479 - 0.3435i >> y=polyval(A,x) %验证 y = 1.0e-013 * -0.0144 - 0.1138i -0.0144 + 0.1138i -0.0888 0.0044 - 0.0083i 0.0044 + 0.0083i (3)5x -6x +8x -5x 解: >> A=[5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6 8 0 0 0 -5 0 0];x=roots(A) >> y=polyval(A,x) (4) (2x +3) -4 解:p1=[2 33];p2=conv(p1,p1); p=conv(p2,p1); %(2x+3) n=length(p); for (i=1:n-1) q(i)=p(i); end q(n)=p(n)-4; 3 %(2x+3)-4 x=roots(q) 253237623
结果:x = -1.8969 + 0.6874i -1.8969 - 0.6874i -0.7063 验证:>> y=polyval(q,x) y = 1.0e-014 * -0.7105 - 0.6217i -0.7105 + 0.6217i 0
上机练习题八
学号:
1有一正弦衰减数据y=sin(x).*exp(-x/10),其中x=0:pi/5:4*pi,用三次样条法进行插值。
>> x0=0:pi/5:4*pi;
>> y0=sin(x0).*exp(-x0/10); >> x=0:pi/20:4*pi;
>> y=spline(x0,y0,x);
>> plot(x0,y0,'or',x,y,'b')
2 编制一个解数论问题的函数文件:取任意整数,若是偶数,则用2除,否则乘3加1,重复此过程,直到整数变为1。
function c=collatz(n)
% collatz
% Classic “3n+1” Ploblem from number theory c=n;
while n>1
if rem(n,2)==0
n=n/2;
else
n=3*n+1;
end
c=[c n];
end
3有一组学生的考试成绩(见表),根据规定,成绩在100分时为满分,成绩在90~99之间时为优秀,成绩在80~89分之间时为良好,成绩在60~79分之间为及格,成绩在60分以下时为不及格,编制一个根据成绩划分等级的程序。
Name=['王',' 张',' 刘',' 李',' 陈',' 杨',' 于',' 黄',' 郭',' 赵']; Marks=[72,83,56,94,100,88,96,68,54,65];
% 划分区域:满分(100),优秀(90-99),良好(80-89),及格(60-79),不及格(
n=length(Marks);
for i=1:n
a{i}=89+i;
b{i}=79+i;
c{i}=69+i;
d{i}=59+i;
end;
c=[d,c];
% 根据学生的分数,求出相应的等级。 for i=1:n
switch Marks(i)
case 100 %得分为100时 Rank(i,:)=' 满分';
case a %得分在90~99之间
Rank(i,:)=' 优秀';
case b %得分在80~89之间 Rank(i,:)=' 良好';
case c %得分在60~79之间 Rank(i,:)=' 及格';
otherwise %得分低于60。 Rank(i,:)='不及格';
end
end
% 将学生姓名,得分,级等信息打印出来。 disp(' ')
disp(['学生姓名 ',' 得分 ',' 等级']); disp('--------------------------')
for i=1:10;
disp([' ',Name(i),' ',num2str(Marks(i)),' ',Rank(i,:)]);
end
学生姓名 得分 等级
-----------------------------------------
王 72 及格
张 83 良好
刘 56 不及格
李 94 优秀
陈 100 满分
杨 88 良好
于 96 优秀
黄 68 及格
郭 54 不及格
赵 65 及格
4 编写一段程序,能够把输入的摄氏温度转化成华氏温度,也能把华氏温度转换成摄氏温度。
k=input('选择转换方式(1--摄氏转换为华氏,2--华氏转换为摄氏):');
if k~=1 & k~=2
disp('请指定转换方式')
break
end
tin=input('输入待转变的温度(允许输入数组):');
if k==1
tout=tin*9/5+32; % 摄氏转换为华氏 k1=2;
elseif k==2
tout=(tin-32)*5/9; % 华氏转换为摄氏 k1=1;
end
str=[' ︒C';' ︒F'];
disp(['转换前的温度', ' ', '转换后的温度']) disp([' ',num2str(tin),str(k,:), ' ', num2str(tout),str(k1,:)])