实验二 MATLAB程序设计(含实验报告) 下载本文

内容发布更新时间 : 2024/5/4 10:53:51星期一 下面是文章的全部内容请认真阅读。

实验二 MATLAB程序设计

一、 实验目的

1.掌握利用if语句实现选择结构的方法。

2.掌握利用switch语句实现多分支选择结构的方法。 3.掌握利用for语句实现循环结构的方法。 4.掌握利用while语句实现循环结构的方法。 5.掌握MATLAB函数的编写及调试方法。

二、 实验的设备及条件

计算机一台(带有MATLAB7.0以上的软件环境)。 M文件的编写: 启动MATLAB后,点击File|New|M-File,启动MATLAB的程序编辑及调试器(Editor/Debugger),编辑以下程序,点击File|Save保存程序,注意文件名最好用英文字符。点击Debug|Run运行程序,在命令窗口查看运行结果,程序如有错误则改正

三、 实验内容

1.编写求解方程ax2?bx?c?0的根的函数(这个方程不一定为一元二次方程,因a、b、c的不同取值而定),这里应根据a、b、c的不同取值分别处理,有输入参数提示,当a?0,b?0,c~?0时应提示“为恒不等式!”。并输入几组典型值加以检验。

(提示:提示输入使用input函数)

2.输入一个百分制成绩,要求输出成绩等级A+、A、B、C、D、E。其中100分为A+,90分~99分为A,80分~89分为B,70分~79分为C,60分~69分为D,60分以下为E。

要求:(1)用switch语句实现。

(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 (提示:注意单元矩阵的用法)

3.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如:

2?1

3?10?5?16?8?4?2?1 6?3?10?5?16?8?4?2?1

运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。 请为关键的Matlab语句填写上相关注释,说明其含义或功能。

4. 编写一个函数,计算下面函数的值,给出标量x的值,调用该函数后,返回y的值。

while 1 function [y]=myfun1(x) 选择一些数据测试你编写的函数。 if n<=0 n=input('Enter n,negative quits:'); %classic \ 5. 编写一个函数求向量x中元素的平均值、最大值、最小值、均方根值。 break end function [m_x,max_x,min_x,rms_x]=myfun2(x)方均根值(Root Mean Square)的计算公式为:

用下面数据测试你写的函数: while n>1 if rem(n,2)==0 n=n/2; else a=n; (1)x=sin(0:0.01:6*pi)

(2)x=rand(1,200),得到的x为200个(0,1)之间均匀分布的随机数。 6.根据是多少?

思考题:

?26?1111???......?,求?的近似值。当n分别取100、1000、10000时,结果2222123n有一分数序列:

编写一段程序,求前16项的和。

四、实验报告要求(包含预习报告要求和最终报告要求)

1.实验名称 2.实验目的 3.实验设备及条件

预习报告要求 最终报告要求 4.实验内容及要求 5.实验程序设计 指程序代码。 6.实验结果及结果分析

实验结果要求必须客观,有数据的可以记录数据,没有数据的简单描述实验现象。结果分析是对实验结果的理论评判。

7.实验中出现的问题及解决方法 8. 思考题的回答

四、 实验报告的提交方式

Word文档,命名方式:实验号_你的学号_姓名!!!

例如本次实验:实验一_000000001_张三.doc (信息101提交报告邮箱):E_mail:

(网络工程101提交作业邮箱):E_mail: M(注意网络班的M是大写的) 下一次课前提交,过期不收!

五、 参考文献

参考教材和Matlab帮助文件。 1.实验名称

MATLAB

2.实验目的

1.掌握利用if语句实现选择结构的方法。

2.掌握利用switch语句实现多分支选择结构的方法。 3.掌握利用for语句实现循环结构的方法。

程序设计

4.掌握利用while语句实现循环结构的方法。 5.掌握MATLAB函数的编写及调试方法。

3.实验设备及条件

计算机一台(带有MATLAB7.0以上的软件环境)。 4.实验内容及要求

把实验内容的应用题,用MATLAB的语法编写出来,并运行成功,注意题与题之间用相应注释分割。 5.实验程序设计 %1 disp('一元二次方程计算器,请输入下列数值进行计算:'); a=input('a='); b=input('b='); c=input('c='); if a==0 & b==0 & c~=0 disp('此为恒不等式'); else d=b*b-4*a*c; x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]; disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]); end %2 scores=input('成绩等级划分——请输入一个百分制成绩,查询划分等级:'); switch scores case {100} rate='A+'; case num2cell(90:99) rate='A'; case num2cell(80:89) rate='B'; case num2cell(70:79) rate='C'; case num2cell(60:69) rate='D'; case num2cell(0:59) rate='E'; otherwise disp('输出出错'); end disp(rate) %3 %classic \while 1 n=input('Enter n,negative quits:'); %输入一个非负整数 if n<=0 %如果输入的数为负数,则不做操作 break end a=n; %将n的值赋值给a while n>1 %满足条件n>1时循环下列语句 if rem(n,2)==0 %当n能被2整除则n除以2 n=n/2; else %如果不能被整除,则n乘以3加1 n=3*n+1; end a=[a,n]; %输出数组[a,n],并对比n是否>1,大于则继续上诉循环 end a %输出最后的结果a end %4 myfun1.m %------------------- clc format compact format long g x=input('请输入x的值:'); y=tran1(x); disp('y=') disp(y) %4 tran.m %-------------------- function y=myfun1(x) %当 x<=0 y=sin(x); %当 3>x>0 y=x; %当 x>3 y=-x+6; if x<=0 y=sin(x); elseif 3>x>0 y=x; else x>3 y=-x+6; end %5 tran.m %------------------------ function [m_x,max_x,min_x,rms_x]=myfun2(x) %分别是平均值,最大值,最小值,均方根值 m_x=mean(mean(x)) max_x=max(max(x)) min_x=min(min(x)) a=sqrt(mean(x.^2)); rms_x=sqrt(mean(a.^2)) %5 myfun2.m %---------------------- x=input('平均值、最大值、最小值、均方根值的计算,请输入x的值,:'); [m_x,max_x,min_x,rms_x]=tran(x); disp('平均值为') m_x disp('最大值为') max_x disp('最小值为') min_x disp('均方根值为') rms_x %6