MATLAB语言程序设计训练题
MatLab练习题-程序设计完成

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程序设计与应用习题

X =
1 1 1 0
2.11设a=[0 100],求~a的值?(非运算)
答:>> clear
>> a=[0 1 0 0]
a =
0 1 0 0
>> x=not(a)
x =
1 0 1 1
2.12设a=[0 120],b=[21 0 0],求axor b的值?
答:>> clear
答:>> clear
>> a=[0 2 1 0]
a =
0 2 1 0
>> b=[2 1 0 0]
b =
2 1 0 0
>> x=and(a,b)
x =
0 1 0 0
2.10设a=[0 120],b=[120 0],求a|b的值?(或运算)
答:
>> clear
>> a=[0 1 2 0];b=[1 2 0 0];
答:quit:关闭MATLAB。
clear:清除内存中的变量。
cla:清除坐标。
clf:清除图形。
clc:清除MATLAB命令窗口的所有显示信息。
hold:控制当前图形窗口是否被刷新。
1.9学会打开并保存程序编辑窗口,并在M文档中编写1.4的运算程序并进行运算。
答:要打开程序编辑窗口,我们可以在Command Window窗口中,单击工具栏中最左端显示为一张白纸的工具按钮。这样就打开了一个空白的程序编辑窗口,如图1-6所示。
3.6已知
将a(2,3)=-1替换为a(2,3)=0。
答:
3.7已知
将a的第二行元素全部替换为0,然后将第二列元素全部替换为1。
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为素数,若不是,输出其约数。
matlab简单编程21个题目及答案

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简单编程21个题目及答案

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试题及答案# 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的矩阵。
matlab20道试题及解答

试题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语言的练习题,可以帮助我们更好地理解和熟练应用这门语言。
本文将介绍一些常见的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. 矩阵相乘。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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,请参考乐经良、向隆万、李世栋等编著,高等教育出版社出版的《数学实验》实验三。