《Matlab语言》实验四由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“matlab语言实验五”。
实验
四、Matlab的程序设计
(一)实验目的1.掌握利用if语句实现选择结构的方法。
2.掌握利用switch语句实现多分支选择结构的方法。3.掌握利用for语句实现循环结构的方法。4.掌握利用while语句实现循环结构的方法。5.掌握Matlab函数的编写及调试方法。
(二)实验环境
1.计算机
2.MATLAB7.0集成环境
(三)实验内容
1、编写一个函数,计算下面函数的值,给出标量x的值,调用该函数后,返回y的值。function y=myfun1(x)sinx,y(x)x,x6,x00x3x3
选择一些数据测试你编写的函数。function [y]=myfun1(x)if x
y=sin(x);elseif x>0&x3 y=-x+6;End 结果: >> x=5;>> [y]=myfun1(x)y = 12、编写一个函数求向量x中元素的平均值、最大值、最小值、均方根值。
function [m_x,max_x,min_x,rms_x]=myfun2(x)方均根值(Root Mean Square)的计算公式为:
rms1NNi1xi2
用下面数据测试你写的函数:
function [m_x,max_x,min_x,rms_x]=myfun2(x)%求平均值
sum_x=sum(x);%向量元素求和
[m,n]=size(x);%最好用n=length(x);m_x=sum_x/n;
%求最大值 采用逐个比较方式 if x(1)>x(2)max_x=x(1);else
max_x=x(2);end for k=3:n
if max_x
else
max_x=max_x;%可省略
end end
%求最小值
if x(1)
min_x=x(2);end
for k=3:n
if min_x>x(k)
min_x=x(k);
else
min_x=min_x;%可省略
end end
%求均方根值 sum_x2=0;for k=1:n
sum_x2=sum_x2+x(k).^2;rms_x=sqrt(sum_x2/n);end m_x;max_x;
min_x;
rms_x;%按照函数值行(1)x=sin(0:0.01:6*pi)运行结果:>> x=sin(0:0.01:6*pi);>> [m_x,max_x,min_x,rms_x]=myfun2(x)m_x =-1.1256e-007 max_x = 1.0000 min_x =-1.0000 rms_x = 0.7071(2)x=rand(1,200),得到的x为200个(0,1)之间均匀分布的随机数。>> x=rand(1,200);>> [m_x,max_x,min_x,rms_x]=myfun2(x)m_x = 0.5231 max_x = 0.9994 min_x = 0.0056 rms_x = 0.58693、编写求解方程axbxc0的根的函数(这个方程不一定为一元二次方程,因a、b、c的不同取值而定),这里应根据a、b、c的不同取值分别处理,有输入参数提示,当a0,b0,c~0时应提示“为恒不等式!”。并输入几组典型值加以检验。2M文件: disp('关于方程ax^2+bx+c=0')a=input('请输入系数a=');b=input(' b=');c=input(' c=');if a==0&&b==0
if c==0
disp('解为全体实数');
else
disp('为恒不等式!');
end else P=[a,b,c];
x=roots(P)end
disp('关于方程ax^2+bx+c=0')a=input('请输入系数a=');b=input(' b=');c=input(' c=');if a==0&&b==0
if c==0
disp('解为全体实数');
else
disp('为恒不等式!');
end else P=[a,b,c];x=roots(P)end
工作空间测试: 关于方程ax^2+bx+c=0 请输入系数a=2 b=4 c=6 x =-1.0000 + 1.4142i-1.0000-1.4142i4、输入一个百分制成绩,要求输出成绩等级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)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
g=input('请输入成绩');
if g100
disp('错误,输入的成绩应为0~100间的数')
else
g=fix(g/10);
switch g
case {10}
disp('A+');
case {9} disp('A');
case {8} disp('B');
case {7}
disp('C');
case {6}
disp('D')
otherwise
disp('E');
end5、利用for循环语句编写计算n!的函数程序,取n分别为-89、0、3、5、10验证其正确性(输入n为负数时输出出错信息)。n=input('请输入n=');
if n
disp('错误,n取值必须为正数');
else y=1;
for i=1:n y=y*i;
end
disp('n!=');disp(y)
测试: 请输入n=6 n!= 720
6、Fibonacci数组的元素满足Fibonacci规则:现要求该数组中第一个大于10000的元素。
a(1)=1;a(2)=1;
k=3;
a(k)=a(k-1)+a(k-2);
while a(k)
a(k)=a(k-1)+a(k-2);
测试: >> ak=a(k)ak =
ak2akak1,(k1,2,);且a1a21。10946
27、根据6112122132......1n,求的近似值。
2要求:(1)分别采用for循环结构以及向量法来编程实现,比较两种方法程序运行时间;(2)当n分别取100、1000、10000时,结果是多少? n=[100 1000 10000];
for j=1:3 y=0;k=n(j);
for i=1:k y=y+1/i/i;
end
pai=sqrt(6*y);disp('n=');
disp(n(j));
disp('π的近似值为');
disp(pai);结果: n= 100 π的近似值为 3.1321 n= 1000 π的近似值为 3.1406 n= 10000 π的近似值为 3.1415
(四)实验要求
1、熟练操作MATLAB7.0运行环境;
2、自主编写程序,必要时参考相关资料;
3、实验前应写出程序大致框架或完整的程序代码;
4、完成实验报告。
(五)实验报告要求
见实验一。
思考题
1、M文件分为哪两类?这两类M文件的区别是什么? 答:分为命令文件和函数文件
1)函数文件一般都要带参数 , 都要有返回结果 , 而命令文件没有参数与返回结果 2)函数文件的变量是局部变量 , 运行期间有效 , 运行完毕就自动被清除 , 而命令文件的变量是全局变量 , 执
行完毕后仍被保存在内存中
3)函数文件要定义函数名 , 且保存该函数文件的文件名必须是函数名.m。M 函数文件可以有多个因变量和多
个自变量 , 当有多个因变量时用[ ] 括起来。
2、有一分数序列:
1, 3, 5, 8, 1321
22358, 13,编写一段程序,求前16项的和。
a=2.0;b=1.0;c=a/b;
for 1:16 {b=a;a=a+b;
d=(a+b)/a;c=c+d;}