MATLAB语言程序设计训练题
- 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 :’
);