0 0 0 -11.3750 -14.1250
x4?8x3?10=(2x2?x?3)*(0.500x^2+4.250x+1.375)+(-11.375x-14.125)
14. 根据x= [66 49 71 56 38 46 90]绘制饼图,并将第五个切块分离出来。(3分) >> x=[23 71 12 59 41 36 16 55]; >> L=[0 0 0 0 1]; >> pie(x,L);
编写一个函数,使其能够产生如下的分段函数:
x?2?0.5x,?f(x)??1.5?0.25x,2?x?6,并调用此函数,绘制在x=[0,2]范围内的f(x)?f(x?2)曲
?0.5,6?x?线。(4分) M函数 function y=f(x)
y=(x<=2).*(0.5*x)+(x>=2&x<=6).*(1.5-0.25*x)+(x>3).*(0.5); 函数图像如下 >> x=0:0.1:2; >> y=f(x).*f(x+2); >> plot(x,y),grid on
15. 假定某天的气温变化记录如下表,试作图描述这一天的气温变化规律,再用二次多项式拟合的方法得出其变化规律。(5分) 时刻t(h) 温度oC(t) 时刻t(h) 温度oC(t) 0 15o 13 31o 1 14o 14 32o 2 14o 15 31o 3 14o 16 29o 4 14o 17 27o 5 15o 18 25o 6 16o 19 24o 7 18o 20 22o 8 20o 21 20o 9 22o 22 18o 10 23o 23 17o 11 25o 24 16o 12 28o 图像如下
二次多项式拟合 >> pf=polyfit(t,w,2) pf =
-0.1081 3.0257 5.7159 气温w=-0.1081t^2+3.0257t+5.7159
?z?z216. 计算z=yx+3yx+2y 的和。(3分)
?y?y?x2
2
3
>> clear;
>> syms x y;
>> z=y*x^2+3*y^2*x+2*y^3; >> dt=diff(z,y); >> dxy=diff(dt,x); >> dt,dxy dt =
x^2 + 6*x*y + 6*y^2 dxy = 2*x + 6*y
?z?z2= x^2 + 6*x*y + 6*y^2 =2*x + 6*y ?y?y?x
17. 用符号计算验证三角等式:sin(?1)cos(?2)-cos(?1)sin(?2) =sin(?1-?2)。 (4分) 解:
>> syms phi1 phi2;
>> y=simple(sin(phi1)*cos(phi2)-cos(phi1)*sin(phi2)) y =
sin(phi1-phi2)
?a1118. 求矩阵A???a21a12?的行列式值、逆和特征根。(3分) ?a22?>> syms a11 a12 a21 a22;
>> A=[a11,a12;a21,a22]
>> AD=det(A) % 行列式 >> AI=inv(A) % 逆
>> AE=eig(A) % 特征值 A =
[ a11, a12] [ a21, a22] AD =
a11*a22-a12*a21 AI =
[ -a22/(-a11*a22+a12*a21), a12/(-a11*a22+a12*a21)] [ a21/(-a11*a22+a12*a21), -a11/(-a11*a22+a12*a21)] AE =
[ 1/2*a11+1/2*a22+1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)] [ 1/2*a11+1/2*a22-1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)] 19. A 是一个維度m×n的矩阵. 写一段程序, 算出A中有多少个零元素(5分) 解:先输入A A=[…….] Sum(A(:)==0) 如:>> clear
>> a=[1 2 3 4 ;3 4 5 6;0 0 0 4;14 67 8 9;1 1 1 1]; >> sum(a(:)==0) ans =
3
选答题(选答下述6题中的4题,每题7分,可在程序中可添加适当注释)
20. 房间里面有序号分别为1,2,…,100的电灯,初始时都关闭;又有100个序号分别为1,2,…,100的学生,当他们依次从这100盏灯前走过时分别将序号是本人序号的整数倍的所有灯开关切换一次(原来为开的变为关,原来为关的变为开)。请问当所有的人都走过之后,那些灯是亮的?编程并给出亮着灯的序号。 M文件如下: function guoding() i=0; j=0;
for n=1:100
for m=1:100
if(mod(n,m)==0) i=i+1; end end
if(mod(i,2)~=0) n end end 21. 分别采用数组方法(不用循环语句)、for循环语句、while循环语句求解下列表达式的值S??2i?1?2?4?8???262?263
i?063
22. 编程验证哥德巴赫猜想:任一大于2的偶数都可写成两个质数之和。程序运行时,提示输入一个任意的偶数,通过运算给出两个质数,其和为输入的偶数。(分别就输入偶数N=10, 1000, 100000给出程序运行结果)
n=input('大于二的偶数'); if n==4; disp('2') end if n>=6&&mod(n,2)==0; for i=3:2:ceil(sqrt(n)) if isprime(i) && isprime(n-i) disp(i) disp(n-i) end break end end
23. 用循环语句形成Fibonacci数列 F1 = F2 =1, Fk = Fk-1 + Fk-2 , k=3,4,?。并验证极限
Fk1?5. (提示:计算至两边误差小于精度 10-8) ?Fk?12clear; F(1)=1;
F(2)=1; a=1e-8; k=2; x=0;
for k=3:n %n为输出项数 % k=k+1;
F(k)=F(k-1)+F(k-2);
x=F(k)/F(k-1)-(1+sqrt(5))/2; end F,x
可以发现当N无限大时,x趋近于零。
24. 考虑将一枚均匀硬币掷N次,当N很大时,正面出现的机率接近0.5,采用matlab生成随机数列,再设计一个随机模拟程序验证这一现象。(分别就N=10, 1000, 100000给出模拟结果)。 >> %文件exercise_4.m
N=input('please input a number:'); r=rand(1,N);x=0; for i=1:N
if r(i)>0.5 x=x+1; end end p=x/N
>> exercise_4
please input a number:10
p = 0.7000 >> exercise_4
please input a number:1000
p = 0.5150
>> exercise_4
please input a number:100000
p = 0.5003
25. 若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。编程求[1,10000]之间的全部完数。
function [v,len] = perfnum(maxscale) %求maxscale内的所有完全数, %v存储结果,len是个数
if maxscale<2