MATLAB语言程序设计训练题
- 格式:doc
- 大小:121.50 KB
- 文档页数:5
MatLab 练习题(4)-程序设计学号: 班级: 姓名: 注意: 1,请按要求作题,直接输入答案,并保存文件.2,仔细填写 “学生信息”.3,把此word 文档的文件名更名为你的 “学号第*次”.上传至http ://10.1.9.91. 例: “MatLab 练习册.doc ” ——-> “200504101第四次作业.doc ” )1, 编辑函数文件hanshu.m,该函数是32()33f x x x x =--+,并用它来计算(0.34)f 、(3)f 、(6.87)f 、2(3)(2)(4)f f f --答案:(填写程序语句和结果)函数文件:hanshu.mfunction f=hanshu(x)f=x^3-3*x^2-x+3;程序:hanshu(0.34)hanshu(3)hanshu(6.87)hanshu(3)-hanshu(2)*[hanshu(-4)]^2ans =2.3525ans =ans =178.7820ans =330752,编程求一个四位数abca ,使2(51)abca c =+。
答案:(填写程序语句和结果)程序:for a=1:9for b=0:9for c=0:9if a*1000+b*100+c*10+a==(5*c+1)^2x=a*1000+b*100+c*10+aendendendendx结果:x =16813利用二分法编程求方程 03323=+--x x x 在[0,3]内的根.答案: (填写程序语句和结果)程序:a=0;b=3;x=a:b;f =@(x)x^3-3*x^2-x+3;c=(a+b)./2;while abs(b-a)>1e-6if f(c)*f(b)<0a=c;elseb=c;endc=(a+b)./2;x=c;endx结果:x =1.0000*4, 利用二分法编程求方程 tan(x)-x-0.5=0 在[0,1.5]内的根.答案:(填写程序语句和结果)a=0;b=1.5;x=a:b;f =@(x)tan(x)-x-0.5;c=(a+b)./2;while abs(b-a)>1e-6if f(c)*f(b)<0a=c;elseb=c;endc=(a+b)./2;x=c;endx结果x =0.97505,列出所有的水仙花数, 水仙花数是一个三位数,其各位数字立方和等于该数本身. 例如: 333351153++=答案:(填写程序语句和结果)程序:for a=1:9for b=0:9for c=0:9if a*100+b*10+c==a^3+b^3+c^3x=a*100+b*10+cendendendend结果:x =153x =370x =371x =407x =407*6, 利用 Λ+-+-≈71513114π公式求π的近似值,直到误差小于610- 答案: (填写程序语句和结果)程序:s=0;k=1;while 1/(2*k-1)>10^(-6)s=s+(-1)^(k+1)/(2*k-1);k=k+1;ends1=4*ss1 =3.14927,写出小于5000的、立方的末四位是8888的所有自然数的程序答案: (填写程序语句和结果)程序:for a=0:5000if rem(a^3,10000)==8888aendend结果:a =1942a =44428,先思考如何用推理的方法(1)求Fibonacc数列中第2007个数除以6 的余数(2)若将Fibonacc数列按如下方式分组:(1)、(1,2)、(3,5,8)、(13,21,34,55)、……问2007组数的和除以6的余数是几?然后再用matlab 编程验证你的结果。
matlab程序设计例题及答案1.编写程序:计算1/3+2/5+3/7+……+10/21法一: s=0;for i=1:10s=s+i/(2*i+1); end ss =法二:sum((1:10)./(3:2:21)) ans =2.编写程序:计算1~100中即能被3整除,又能被7整除的所有数之和。
s=0;for i=1:100if mod(i,3)==0&&mod(i,7)==0 s=s+i; end,end ss =2103.画出y=n!的图,阶乘的函数自己编写,禁用MATLAB 自带的阶乘函数。
x=1:10; for i=1:10try y(i)=y(i-1)*i; catch y(i)=1; end,end plot(x,y)106123456789104.一个数恰好等于它的因子之和,这个数就称为完数。
例如,6的因子为1,2,3,而6=1+2+3,因此6就是一个完数。
编程找出20XX以内的所有完数。
g=;for n=2:20XX s=0;for r=1:n-1if mod(n,r)==0 s=s+r; end endif s==ng=[g n]; end end gg =6 28 4965.编写一个函数,模拟numel函数的功能,函数中调用size函数。
function y=numelnumel(x) m=size(x); y=m(1)*m(2);numelnumel([1 2 3;4 5 6])ans =66. 编写一个函数,模拟length函数的功能,函数中调用size函数。
function y=lengthlength(x) m=size(x);y=max(m(1),m(2));lengthlength([1 2 3;4 5 6])ans =37.求矩阵rand的所有元素和及各行平均值,各列平均值。
s=rand(5);sum=sum(sum(s)) mean2=mean(s,2) mean1=mean(s)sum =mean2 =mean1 =8.编程判断1001,1003,1007,1009,1011为素数,若不是,输出其约数。
1、设⎥⎦⎤⎢⎣⎡++=)1(sin35.0cos2xxxy,把x=0~2π间分为101点,画出以x为横坐标,y为纵坐标的曲线。
第一题的matlab源程序:①考虑cos(x)为一个整体,然后乘以中括号里面的全部x=0:2*pi/100:2*pi; %x的步长以及范围从0到2*pi y=cos(x).*(0.5+3*sin(x)./(1+x.^2)); %y的表达式plot(x,y)%画出图形图如下:②考虑对整体求解cos,先求x乘以括号中的部分x=0:2*pi/100:2*pi; %x的步长以及范围从0到2*pi y=cos(x.*(0.5+3*sin(x)./(1+x.^2))); %y的表达式plot(x,y) %画出图形图如下:2、产生8×6阶的正态分布随机数矩阵R1, 求其各列的平均值和均方差。
并求该矩阵全体数的平均值和均方差。
第二题的matlab源程序如下:R1=randn(8,6) %产生正态分布随机矩阵R1 =1.0933 -0.7697 1.5442 -0.1924 1.4193 0.21571.1093 0.3714 0.0859 0.8886 0.2916 -1.1658-0.8637 -0.2256 -1.4916 -0.7648 0.1978 -1.14800.0774 1.1174 -0.7423 -1.4023 1.5877 0.1049-1.2141 -1.0891 -1.0616 -1.4224 -0.8045 0.7223-1.1135 0.0326 2.3505 0.4882 0.6966 2.5855-0.0068 0.5525 -0.6156 -0.1774 0.8351 -0.66691.5326 1.1006 0.7481 -0.1961 -0.2437 0.1873aver=(sum(R1(1:end,1:end)))./8 %产生各行的平均值aver =0.0768 0.1363 0.1022 -0.3473 0.4975 0.1044a=std(R1(1:end,1:end)) %产生各行的均方差也就是标准差a =1.0819 0.8093 1.3456 0.8233 0.8079 1.2150aver1=(sum(R1(:)))./48 %全体数的平均值aver1 =0.0950b=std(R1(:)) %全体数的均方差即标准差b =1.01033、设x=rcost+3t,y=rsint+3,分别令r=2,3,4,画出参数t=0~10区间生成的x~y 曲线。
1、设⎥⎦⎤⎢⎣⎡++=)1(sin35.0cos2xxxy,把x=0~2π间分为101点,画出以x为横坐标,y为纵坐标的曲线。
第一题的matlab源程序:①考虑cos(x)为一个整体,然后乘以中括号里面的全部x=0:2*pi/100:2*pi; %x的步长以及范围从0到2*pi y=cos(x).*(0.5+3*sin(x)./(1+x.^2)); %y的表达式plot(x,y)%画出图形图如下:②考虑对整体求解cos,先求x乘以括号中的部分x=0:2*pi/100:2*pi; %x的步长以及范围从0到2*pi y=cos(x.*(0.5+3*sin(x)./(1+x.^2))); %y的表达式plot(x,y) %画出图形图如下:2、产生8×6阶的正态分布随机数矩阵R1, 求其各列的平均值和均方差。
并求该矩阵全体数的平均值和均方差。
第二题的matlab源程序如下:R1=randn(8,6) %产生正态分布随机矩阵R1 =1.0933 -0.7697 1.5442 -0.1924 1.4193 0.21571.1093 0.3714 0.0859 0.8886 0.2916 -1.1658-0.8637 -0.2256 -1.4916 -0.7648 0.1978 -1.14800.0774 1.1174 -0.7423 -1.4023 1.5877 0.1049-1.2141 -1.0891 -1.0616 -1.4224 -0.8045 0.7223-1.1135 0.0326 2.3505 0.4882 0.6966 2.5855-0.0068 0.5525 -0.6156 -0.1774 0.8351 -0.66691.5326 1.1006 0.7481 -0.1961 -0.2437 0.1873aver=(sum(R1(1:end,1:end)))./8 %产生各行的平均值aver =0.0768 0.1363 0.1022 -0.3473 0.4975 0.1044a=std(R1(1:end,1:end)) %产生各行的均方差也就是标准差a =1.0819 0.8093 1.3456 0.8233 0.8079 1.2150aver1=(sum(R1(:)))./48 %全体数的平均值aver1 =0.0950b=std(R1(:)) %全体数的均方差即标准差b =1.01033、设x=rcost+3t,y=rsint+3,分别令r=2,3,4,画出参数t=0~10区间生成的x~y 曲线。
matlab试题及答案# MATLAB试题及答案一、选择题1. MATLAB的基本数据单位是:A. 矩阵B. 向量C. 标量D. 数组答案:A2. 下列哪个命令可以用来绘制函数图形?A. `plot`B. `graph`C. `draw`D. `chart`答案:A3. MATLAB中,以下哪个是正确的矩阵转置操作?A. `transpose(A)`B. `A'`C. `A^T`D. `flip(A)`答案:B二、简答题1. 简述MATLAB中矩阵的基本操作。
答案:在MATLAB中,矩阵是最基本的数据结构,可以进行加、减、乘、除等基本运算。
矩阵的创建可以使用方括号`[]`,例如`A = [1 2;3 4]`。
矩阵的转置使用单引号`'`,例如`A'`。
矩阵的求逆使用`inv`函数,例如`inv(A)`。
2. MATLAB中如何实现循环结构?答案:MATLAB中实现循环结构主要有两种方式:`for`循环和`while`循环。
`for`循环用于已知迭代次数的情况,例如:```matlabfor i = 1:5disp(i);end````while`循环用于迭代次数未知的情况,例如:```matlabi = 1;while i <= 5disp(i);i = i + 1;end```三、计算题1. 给定矩阵A和B,请计算它们的乘积C,并求C的行列式。
A = [1 2; 3 4]B = [5 6; 7 8]答案:首先计算矩阵乘积C:```matlabC = A * B;```然后计算C的行列式:```matlabdetC = det(C);```结果为:```matlabC = [19 22; 43 50]detC = -16```2. 编写一个MATLAB函数,计算并返回一个向量的范数。
答案:```matlabfunction norm_value = vector_norm(v)norm_value = norm(v);end```四、编程题1. 编写一个MATLAB脚本,实现以下功能:- 随机生成一个3x3的矩阵。
试题1.“数学黑洞”:任意一个4位自然数,将组成该数的各位数字重新排列,形成一个最大数和一个最小数,之后两数相减,其差仍为一个自然数。
重复进行上述运算,最终会出现一个神秘的数,请编程输出这个神秘的数。
clear;a=input('请输入一个四位正整数:');str_a=num2str(a); %将a转化为一个字符串b_min=str2double(sort(str_a)); %形成最小数b_max=str2double(sort(str_a,'descend')); %形成最大数b=b_max-b_min; %求最大数与最小数之差while (b~=a)a=b;str_a=num2str(a); %将a转化为一个字符串b_min=str2double(sort(str_a)); %形成最小数b_max=str2double(sort(str_a,'descend')); %形成最大数b=b_max-b_min; %求最大数与最小数之差endb试题2.将数字1、2、3、4、5、6填入一个2行3列的表格中,要使得每一列右边的数字比左边的数字大,每一行下面的数字比上面的数字大。
请编写程序求出按此要求可有几种填写方法。
a(1)=1;a(6)=6;count=0; %用来计数b=perms('2345'); %产生2345的全排列[m,n]=size(b);for i=1:mtemp=b(i,:);a(2)=str2double(temp(1));a(3)=str2double(temp(2));a(4)=str2double(temp(3));a(5)=str2double(temp(4));if ((a(4)>a(2))&&(a(4)>a(3))&&(a(5)>a(3)))count=count+1;c=reshape(a,2,3); %将a向量转化为2*3矩阵输出disp(c);endenddisp(['共有',num2str(count),'种填写方法']); %输出填写方法的种数试题3.编写成绩排序程序。
matlab语言练习题MATLAB是一种面向科学计算和工程应用的高级编程语言和环境,广泛应用于各个领域。
通过进行一些MATLAB语言的练习题,可以帮助我们更好地理解和熟练应用这门语言。
本文将介绍一些常见的MATLAB语言练习题,并逐步给出解答过程。
一、编写函数1. 编写一个函数,求解给定数列的和。
数列以向量的形式输入,函数应返回数列的和。
解答:```matlabfunction sum_res = sum_vector(vector)sum_res = sum(vector);end```2. 编写一个函数,判断给定的数是否是素数。
素数是指只能被1和自身整除的正整数。
解答:```matlabfunction is_prime = check_prime(num)is_prime = true;if num < 2is_prime = false;elsefor i = 2:sqrt(num)if rem(num, i) == 0is_prime = false;break;endendendend```二、图形绘制1. 绘制正弦曲线。
使用`sin`函数和绘图命令`plot`绘制一个在0到2π范围内的正弦曲线。
解答:```matlabx = linspace(0, 2*pi, 100); % 生成0到2π的100个等间距点y = sin(x);plot(x, y);xlabel('x');ylabel('sin(x)');title('Sine Curve');```2. 绘制柱状图。
使用`bar`函数绘制一个柱状图,展示不同城市的降雨量。
解答:```matlabcities = {'City A', 'City B', 'City C', 'City D'};rainfall = [80, 60, 120, 90];bar(rainfall);xticks(1:4);xticklabels(cities);ylabel('Rainfall (mm)');title('Rainfall in Different Cities');```三、矩阵运算1. 矩阵相乘。
一、概述Matlab是一种强大的工程计算软件,在工程领域有着广泛的应用。
对于学习Matlab程序设计来说,通过例题学习是非常有效的方法。
通过实际的例题练习,可以帮助学生更深入地理解Matlab的基本原理和应用技巧。
本文将介绍几个常见的Matlab程序设计例题,并进行详细的分析和讲解,希望能够帮助读者加深对Matlab程序设计的理解。
二、例题一:矩阵运算题目:编写一个Matlab程序,实现两个任意大小的矩阵相加的运算。
1.我们需要定义两个任意大小的矩阵A和矩阵B,可以通过rand函数生成随机矩阵,也可以手动输入矩阵的元素。
2.编写Matlab程序,使用矩阵的加法运算符“+”进行矩阵相加操作。
3.输出矩阵相加的结果,并进行验证和检查。
通过这个例题,可以加深对Matlab矩阵运算的理解,包括矩阵的定义、矩阵相加的操作和结果输出的方法。
三、例题二:函数绘图题目:编写一个Matlab程序,绘制sin函数的曲线图像。
1.我们需要定义sin函数的自变量范围和取值步长,可以使用linspace函数生成自变量的取值范围。
2.编写Matlab程序,调用sin函数计算自变量对应的函数值。
3.接下来,使用plot函数绘制sin函数的曲线图像,并设置图像的标题、坐标轴标签等其他参数。
4.输出绘制好的sin函数曲线图像,并进行观察和分析。
通过这个例题,可以了解Matlab中函数绘图的基本方法,包括自变量的定义、函数值的计算和图像的绘制等操作。
四、例题三:数值积分题目:编写一个Matlab程序,实现对指定函数在指定区间上的数值积分。
1.我们需要定义积分的目标函数和积分区间,在Matlab中可以使用function定义目标函数,也可以手动输入目标函数和积分区间。
2.编写Matlab程序,调用Matlab内置的数值积分函数(如quad、quadl等)进行数值积分的计算。
3.输出数值积分的结果,并与解析解进行比较和分析。
通过这个例题,可以了解Matlab中数值积分的计算方法,包括目标函数的定义、积分区间的设定和数值积分函数的调用。
第1章 MATLAB系统环境一、选择题1.最初的MATLAB核心程序是采用()语言编写的。
A.FORTRAN B.C C.BASIC D.PASCAL2.2016年3月发布的MATLAB版本的编号为()。
A.MATLAB 2016Ra B.MATLAB R2016aC.MATLAB 2016Rb D.MATLAB R2016b3.下列选项中能反应MATLAB特点的是()。
A.算法最优 B.不需要写程序C.程序执行效率高 D.编程效率高4.当在命令行窗口执行命令时,如果不想立即在命令行窗口中输出结果,可以在命令后加上()。
A.冒号(:) B.逗号(,) C.分号(;) D.百分号(%)5.如果要重新执行以前输入的命令,可以使用()。
A.左移光标键(←) B.右移光标键(→)C.下移光标键(↓) D.上移光标键(↑)6.MATLAB命令行窗口中提示用户输入命令的符号是()。
A.> B.>> C.>>> D.>>>>7.plot(x,y)是一条()命令。
A.打印 B.输出 C.绘图 D.描点8.以下两个命令行的区别是()。
>> x=5,y=x+10>> x=5,y=x+10;A.第一个命令行同时显示x和y的值,第二个命令行只显示x的值B.第一个命令行同时显示x和y的值,第二个命令行只显示y的值C.第一个命令行只显示x的值,第二个命令行同时显示x和y的值D.第一个命令行只显示y的值,第二个命令行同时显示x和y的值9.下列命令行中,输出结果与其他3项不同的是()。
A.>> 10+20+... B.>> ...30 10+20+30C.>> 10+20+30%5 D.>> %10+20+3010.下列选项中,不是MATLAB帮助命令的是()。
A.lookfor B.lookfor –all C.search D.help二、填空题1.MATLAB一词来自的缩写。
matlab考试试卷一、选择题(每题2分,共20分)1. MATLAB中,用于创建一个3x3的单位矩阵的命令是:A. eye(3)B. ones(3)C. zeros(3)D. identity(3)2. 若变量A是一个3x3的矩阵,下列哪个命令可以用来计算A的行列式?A. det(A)B. rank(A)C. inv(A)D. eig(A)3. MATLAB中,以下哪个函数用于绘制函数f(x)=sin(x)的图像?A. plot(x, sin(x))B. graph(x, sin(x))C. draw(x, sin(x))D. line(x, sin(x))4. 假设x是一个向量,下列哪个命令可以用来计算x中所有元素的平均值?A. mean(x)B. sum(x)C. max(x)D. min(x)5. 在MATLAB中,如何创建一个从0到1的0.1间隔的向量?A. 0:0.1:1B. 0..1/0.1C. 0 to 1 by 0.1D. linspace(0, 1, 0.1)6. 若A是一个矩阵,下列哪个命令可以用来计算A的转置?A. A'B. transpose(A)C. flip(A)D. rot90(A)7. MATLAB中,如何使用循环结构来计算1到100的和?A. for i=1:100; sum=0; sum=sum+i; endB. for i=1:100; sum=sum+i; endC. for i=1 to 100; sum=0; sum=sum+i; endD. for i=1:100; sum=i; end8. 下列哪个命令可以用来计算矩阵A的秩?A. rank(A)B. det(A)C. eig(A)D. inv(A)9. MATLAB中,如何创建一个5x5的全零矩阵?A. zeros(5)B. ones(5)C. eye(5)D. identity(5)10. 若x是一个向量,下列哪个命令可以用来计算x中所有元素的平方和?A. sum(x.^2)B. sum(x^2)C. dot(x, x)D. x*x二、填空题(每题3分,共15分)1. MATLAB中,使用________函数可以计算两个向量的点积。
《Matlab编程训练》作业专业学生姓名班级学号指导教师完成日期实训一 MATLAB 语言介绍和数值计算1.先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存变量。
122sin 851z e =+.2. 已知 1234413134787,2033657327A B --⎡⎤⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦,求下列表达式的值:(1) A+6*B 和A-B+I (其中I 为单位矩阵) A+6*B:A-B+I:(2)A*B和A.*BA*B程序:A=[12 34 -4;34 7 87;3 65 7]B=[1 3 -1;2 0 3;3 -2 7]c=A*B结果:A.*B程序:A=[12 34 -4;34 7 87;3 65 7]B=[1 3 -1;2 0 3;3 -2 7]D=A.*B结果:(3)A^3和A.^3A^3程序:A=[12 34 -4;34 7 87;3 65 7]E=A^3结果:A.^3程序:A=[12 34 -4;34 7 87;3 65 7]C=A.^3(4)A/B及B\AA/B程序:A=[12 34 -4;34 7 87;3 65 7]B=[1 3 -1;2 0 3;3 -2 7]C=A/B结果:B\A程序:A=[12 34 -4;34 7 87;3 65 7]B=[1 3 -1;2 0 3;3 -2 7]D=B\A结果:(5)将矩阵C=B\A的右下角2*2子矩阵赋给D, 并(3)保存变量(mat文件)程序:A=[12 34 -4;34 7 87;3 65 7];B=[1 3 -1;2 0 3;3 -2 7];C=B*inv(A);D=C(2:3,2:3)结果:3. 求得矩阵⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=34157864653434533145A 的每行最大元素所在的位置?(至少两种方法) 第一种:A=[5 14 33;45 43 3;65 4 6;78 15 34][RowMax Order]=max(A')结果:第二种:A=[5 14 33;45 43 3;65 4 6;78 15 34][Max_num,index]=max(A,[],2)结果:实训二 MATLAB 编程基础1. 求[25,1258]之间能被15整除的数的个数。
Matlab 基础练习题常量、变量、表达式1、 MATLAB 中,下面哪些变量名是合法的?( )(A )_num (B )num_ (C )num- (D )-num 2、 在MA TLAB 中,要给出一个复数z 的模,应该使用( )函数。
(A )mod(z) (B )abs(z) (C )double(z) (D )angle(z) 3、 下面属于MATLAB 的预定义特殊变量的是?( )(A )eps (B )none (C )zero (D )exp4、 判断:在MA TLAB 的内存工作区中,存放一个英文字符 'a' 需要占用1个字节,存放一个中文字符‘啊’需要占用2个字节。
( 错,都是2个字节 )5、 判断:MA TLAB 中,i 和j ( 对 )6、 判断:MA TLAB 中,pi 代表圆周率,它等于3.14。
( 错,后面还有很多位小数 )7、 在MA TLAB 中,若想计算的51)3.0sin(21+=πy 值,那么应该在MA TLAB 的指令窗中输入的MA TLAB 指令是__y1=2*sin(0.3*pi)/(1+sqrt(5))_。
8、 在MA TLAB 中,a = 1,b = i ,则a 占_8__个字节,b 占_16_个字节,c 占________字节。
9、 在MA TLAB 中,inf 的含义是__无穷大__,nan 的含义是__非数(结果不定)___。
数组1、 在MA TLAB 中,X 是一个一维数值数组,现在要把数组X 中的所有元素按原来次序的逆序排列输出,应该使用下面的( )指令。
(A )X[end:1] (B )X[end:-1:1] (C )X (end:-1:1) (D )X(end:1) 2、 在MA TLAB 中,A 是一个字二维数组,要获取A 的行数和列数,应该使用的MATLAB的命令是( )。
(A )class(A) (B )sizeof(A) (C )size(A) (D )isa(A)3、 在MATLAB 中,用指令x=1:9生成数组x 。
matlab编程经典例题
以下是一些经典的 MATLAB 编程例题:
1. 编写一个程序,计算一个数列的前 N 个斐波那契数(斐波那契数列是指前两个数为 1,后续每个数是前两个数之和)。
2. 编写一个程序,计算一个数的阶乘。
3. 编写一个程序,计算两个矩阵的乘积。
4. 编写一个程序,找到一个数组中的最大元素。
5. 编写一个程序,检查一个字符串是否是回文。
6. 编写一个程序,为给定的一组数据计算均值、中位数和标准差。
7. 编写一个程序,将一个字符串中的所有元音字母替换成大写字母。
8. 编写一个程序,计算一个数列的前 N 个素数(素数是指只能被 1 和自身整除的数)。
9. 编写一个程序,实现冒泡排序算法,对一个数组进行排序。
10. 编写一个程序,计算一个数的平方根。
以上是一些经典的 MATLAB 编程例题,你可以根据自己的实际需要选择其中的一个或几个进行练习和编程。
matlab试题及答案一、单项选择题(每题2分,共10分)1. MATLAB中用于创建向量的命令是:A. vectorB. arrayC. linspaceD. colon答案:D2. 在MATLAB中,以下哪个函数用于计算矩阵的行列式?A. detB. rankC. invD. eig答案:A3. MATLAB中用于进行矩阵转置的运算符是:A. 'B. .C. ^D. !答案:A4. 若A是一个3x3的矩阵,执行命令A(2,:)=0;后,矩阵A的第二行将变为:A. [0 0 0]B. [1 0 0]C. [0 1 0]D. [0 0 1]答案:A5. MATLAB中,以下哪个函数用于绘制三维曲面图?A. plotB. surfC. barD. hist答案:B二、填空题(每题3分,共15分)1. MATLAB中,使用________命令可以清除所有变量。
答案:clear2. 若要在MATLAB中创建一个从0到1的100个元素的向量,可以使用命令________。
答案:linspace(0,1,100)3. MATLAB中,使用________函数可以计算矩阵的特征值。
答案:eig4. 在MATLAB中,________函数用于计算两个矩阵的点乘。
答案:dot5. 若要在MATLAB中绘制一个圆,可以使用________函数。
答案:plot三、简答题(每题5分,共20分)1. 请解释MATLAB中矩阵索引的概念。
答案:在MATLAB中,矩阵索引指的是通过行号和列号来访问矩阵中特定元素的过程。
例如,A(2,3)表示访问矩阵A的第二行第三列的元素。
2. MATLAB中如何实现矩阵的元素乘法?答案:在MATLAB中,矩阵的元素乘法可以通过使用点乘运算符(.*)来实现。
例如,C = A .* B,其中A和B是相同大小的矩阵。
3. 请说明MATLAB中如何使用循环结构。
答案:MATLAB中可以使用for循环和while循环两种循环结构。
《MATLAB程序设计》复习题一填空题1 已知A=[2 5 6;1 7 8];B=[1 4 3;4 7 0];写出下列各指令运行的结果。
A &B 的运行结果为[1 1 1;1 1 0] 。
A== B的运行结果为[0 0 0 ;0 1 0] 。
2 产生3阶单位阵的命令为eye(3) ;产生4阶全1方阵的命令为ones(4)。
3 A=rand(5,8);b=size(A);c=length(A);则b和c的值分别为[5,8]和8.4 求矩阵的特征值的指令为eig .5符号; 可以使命令行不显示运算结果,% 用来表示该行为注释行。
6在线形图型格式的设置中,字符r表示什么颜色(红色)7fix函数四舍五入对数组[3。
17,5.34,8.90,2.52]取整,结果为[3 5 8 2]。
8 P,Q分别是个多项式的系数矢量,求P对应的多项式的根,使用的命令是roots(P)9使2个plot的图形在同一个坐标显示,使用hold on 命令进行图形保持,使用grid on 命令为图形添加网格。
10 数据拟合采用___polyfit___函数;求不定积分采用___ int ___函数。
11 A=rand(2,5);b=size(A);c=length(A);则b和c的值分别为_2 5和5__ 12已知A是矩阵,求A的对角矩阵函数是___diag(A)____,求A的下三角矩阵函数是__tril(A)____。
13条形图由函数__bar___来实现。
14已知s=‘显示“hey”’,则s的元素个数是9二解答题1、A=[71,3,—8; 2,-9,8; 0,4,5]B=A’问B=()答案:B=[71,2,0;3,—9,4 ; —8,8,5]2、A=[1,2;3,4];B[1,0;0,1];请问A*B=?,A.*B=?答案:A*B=[1,2;3,4],A.*B=[1,0;0,4]3、A=[57,19,38;-2,31,8;0,84,5]B=rot90(A)B=( )答案:B=[38,8,5;19,31,84;57,-2,0]4、已知:A=[2,2,—1,1;4,3,—1,2; 8,5,-3,4; 3,3,-2,2]R=rank(A)R=()A=[2,2,3; 4,5,—6;7,8,9]trace(A)=( )答案:4; 165、A=[0,0,0; 0,1,0; 0,0,1]pinv(A)=()答案:[0,0,0; 0,1,0;0,0,1]三下列命令执行后,L1,L2,L3,L4的值分别是多少?A=1:9; B=10—A;L1=A~=B;(3分)L2=A>=5; (3分)L3=A>=2&A〈=6;(4分)L4=find(A〉4&A<=7); (5分)答案:L1 =1 1 1 1 0 1 1 1 1 L2 =0 0 0 0 1 1 1 1 1 L3 =0 1 1 1 1 1 0 0 0 L4 =5 6 7四写出执行以下代码后B,C,D的值。
2013年数学素质拓展选修暨数学建模培训班
MATLAB 语言程序设计训练题
1.编写脚本式M 文件实现:从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。
2.编写脚本式M 文件实现:输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输出。
3.一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。
编写输出全部水仙花数的脚本式M 文件。
4.编写救援问题的MATLAB 语言
程序。
题目描述:假设洪水把一个村庄
淹没了,只有那些比较高的房屋的屋
顶露出水面,人们已经爬上屋顶等待
求援。
如图,在图的原点是大本营,
救生船每次从大本营出发,救了人之
后将人送回大本营。
图中的点代表屋
顶,每个屋顶由其位置坐标和其上的
人数表示。
救生船每次从大本营出发,以速度50米/分钟驶向下一个屋顶,达到一个屋顶后,救下其上的所有人,每人上船1分钟,船原路返回,达到大本营,每人下船0.5分钟。
假设原点与任意一个屋顶的连线不穿过其它屋顶。
假设屋顶数为50,随机给定每个屋顶的坐标和人数,求出所有人都到达大本营并登陆所用的时间。
并输出所有屋顶的坐标和人数。
题目分析:这是一个求和问题,单独计算出每个屋顶上的人到达大本营的时间,然后将它们相加即可。
计算公式如下:
∑=⎪⎪⎭
⎫ ⎝⎛+++=N i i i i p speed y x totalTime 122)5.01(2, 其中,totalTime 是要求的总时间,N 是屋顶数(本题为50),speed 是船行驶的速度(本题为50米/分钟),(x i ,y i )是第i 个屋顶的坐标,p i 是第i
个屋顶上的
人数,因为要在计算后输出所有屋顶位置和人数所以需要保存所屋顶和人数的信息。
程序设计:
S1:定义N行4列的数组roofs贮存屋顶信息,其中,第1列为屋顶的横坐标,第2列为屋顶的纵坐标,第3列为屋顶上的人数,第4列为营救完该屋顶的人所需的时间,初始值均为0。
S2:确定输入参数和输出参数。
数组roofs的第1,2,3列数据、船行驶的速度speed、每个被救人员上船的时间up和下船的时间down作为输入参数。
完成数组roofs第4列的计算后,数组roofs和营救所有屋顶的人所需的时间totalTime作为输出参数。
S3:计算营救每个屋顶的人所需的时间。
S4:计算营救所有屋顶的人所需的时间totalTime。
MATLAB语言程序:
5.编写奖金问题的MATLAB语言程序。
题目描述:过年了,村里要庆祝一下。
村长对村里的128个村民说:做一个游戏,让每个人把出生年+月+日得到一个数。
例如:1968年10月28日=1968+10+28=2006。
然后把这个数报上来。
村里有一笔钱要作为游戏的奖金,数额为M元。
如果有人报上来的数字与M相同,就把这笔钱发给这些人。
如果只有一个人得奖,奖金都归这个人。
如果有多于一个人得奖,则他们平分这笔钱。
请写一个程序算算都有哪些人得到了奖金?得到多少?
题目分析:首先要读入游戏的奖金数M,然后再读入128个村民的出生年、月、日,并一边读一边求其出生年份加月份加日期的和,最后求出出生年份加月份加日期的和与M相同的村民的编号,并累计获奖村民的人数,用获奖人数去除M,得到每个人所得的资金数。
如果没有人获奖就输出没有人获奖的信息。
程序设计:先把村民编号,然后定义128×4的数组Peopledata,第i行的各列依次存贮第i位村民的出生年份、出生月份、出生日期、出生年份加月份加日期的和。
再用另一个数组存储出生年份加月份加日期的和与M相同的村民的编号,再用一个整数来存储获奖村民的人数,即可解决问题。
算法描述:
S1:定义一个数组存放所有村民的出生年份、出生月份、出生日期、出生年份加月份加日期的和;定义一个数组存放获奖者的编号(幸运者数组);定义一个整数存放获奖者人数。
S2:把村民编号,按编号报上出生年份、出生月份、出生日期,并计算其出
生年份加月份加日期的和。
S3:求出生年份加月份加日期的和与M 相同的村民的编号,即幸运者编号。
S4:求获奖者人数。
S5:最后,如果有人获奖,则输出获奖者编号和获得的奖金数额;如果没有人获奖,就输出没有人获奖的信息。
MATLAB 语言程序:
6.编写按矩阵乘法法则求矩阵A 与矩阵B 的积的函数式M 文件(不能直接使用运算“B A *”)。
7.描述刘徽割圆术计算π的原理、方法和计算步骤,并编写实现计算的函数式M 文件。
采取不同的分割计算π的近似值,并将计算的结果与较准确的π值进行比较,对算法进行分析。
刘徽割圆术计算π的原理:从正六边形开始,逐步求正),2,1(26 =⋅n n 边形的边长与面积,并用它的面积近似其外接圆面积,从而得到π的近似值。
递推法:设边数为n 26⋅的正多边形边长为n a ,
如图,22222)(OD OC AD DC AD AC -+=+=,所
以
22221
422112n n n n a a a a --=⎪⎪⎭⎫ ⎝⎛⎪⎭⎫ ⎝⎛--+⎪⎭⎫ ⎝⎛=+ 相应正多边形面积
π≈⋅=⋅⋅⋅=++n n n n a AD OC S 232
12611. 从正六边形开始,逐步求正),2,1(26 =⋅n n 边形的边长与面积即可。
MATLAB 语言程序:
数值实验与算法分析:
%给出较准确的π值.
digits(100)
PI=vpa(pi)
%输入n 的值,调用函数calpi1计算π的近似值.
n=input(‘请输入割圆的次数n :’
);
y=calpi1(n)
8.编写采用级数展开式
1114(1)
21n i n π∞-==--∑ 和 121211
1114(1)2123n n n i n π∞---=⎛⎫=-+ ⎪-⎝⎭∑ 计算π的函数式M 文件。
调用编写的程序,尝试n 取不同整数以求π的近似值,并将计算的结果与较准确的π值进行比较,对算法进行分析和比较。
9.描述Monte Carlo 方法计算π的原理、方法和计算步骤,并编写实现计算的函数式M 文件。
调用编写的程序计算π的近似值,并将计算的结果与较准确的π值进行比较,并对算法进行分析。
Monte Carlo 方法计算π的原理:在正方形0< x <1, 0< y <1上随机的投大量的点,那么落在四分之一圆内的点数m 与落在正方形内的点数n 之比m /n 应为这两部分图形面积之比π/4,故π=4 m /n 。
计算方法和步骤:采用计算机模拟,产生区间[0, 1]
上数目为n 的一组随机数(x , y ),计算满足122<+y x 的点
数m ,用4 m /n 的值作为π的近似值。
MATLAB 语言程序:
数值实验与算法分析:
%给出较准确的π值.
digits(100)
PI=vpa(pi)
%输入n 的值,调用函数calpi1计算π的近似值.
n=input(‘请输入割圆的次数n :’);
y=calpi4(n)
10.给出两种计算超越数e 的方法,并通过数值计算实验进行算法分析。
方法一:函数x e x f =)(在0点处的台劳展式为
∑∞
===0!1)(n n x
x n e x f . 取0=x 得∑∞==0!1n n e , 因而∑=≈n n n e 0!1。
方法二:当n取较大的值,用
n
n
⎪
⎭
⎫
⎝
⎛
+
1
1近似e。
完成第6至10,请参考乐经良、向隆万、李世栋等编著,高等教育出版社出版的《数学实验》实验三。