资源描述:
《matlab实验四函数编写与程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验四:函数编写与程序设计一、实验目的1.掌握M文件的创建。2.掌握函数的编写规则。3.掌握函数的调用。4.掌握基本的输入输出函数以及显示函数的用法。5.会用Matlab程序设计实现一些工程算法问题。二、实验内容1.设计程序,完成两位数的加、减、乘、除四则运算,即产生两个两位随机整数,再输入一个运算符号,做相应的运算,显示相应的结果,并要求结果显示类似于“a=x+y=34”。a=input('请输入一个数:')b=input('请输入一个数:');fuhao=input('请输入一个运算符号(+-*/):','s');switchfuhaocase{'+'}he=a
2、+b;disp(['和=',num2str(a),'+',num2str(b),'=',num2str(he)]);case{'-'}he=a-b;disp(['减=',num2str(a),'-',num2str(b),'=',num2str(he)])case{'*'}he=a*b;disp(['乘=',num2str(a),'*',num2str(b),'=',num2str(he)])case{'/'}he=a/b;disp(['除=',num2str(a),'/',num2str(b),'=',num2str(he)])otherwisedisp('请输入
3、正确的符号');end2.求下列分段函数的值要求:用if语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y值。其中x的值以向量的形式从键盘输入。(length())x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5.0];y=x;fork=1:length(x)if(x(k)<0&x(k)~=-3)y(k)=x(k)*x(k)+x(k)-6;elseif(0<=x(k)&x(k)<10&x(k)~=2&x(k)~=3)y(k)=x(k)*x(k)-5*x(k)+6;elsey(k)=x(k)*x(k)-x(k)-1;en
4、dendfori=1:length(x)disp(['y(',num2str(i),')','=',num2str(y(i))])end3.输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90分~100分为A,80分~89.5分为B,70分~79.5为C,60分~69.5分为D,60分以下为E。要求:1)分别用if语句和switch语句实现2)对不合理的成绩应输出出错信息“输入的成绩不合理”(若成绩出现小数,则只能是“.5”)(rem函数num2cell函数:将数值矩阵转化为单位矩阵)x=input('请输入成绩:');f=x-fix(x);if(f==
5、0
6、f==0.5)ifx>=0&x<=100y=fix(x/10);switchycase10disp('A')case9disp('A')case8disp('B')case7disp('C')case6disp('D')otherwisedisp('E')endelsedisp('输入的成绩不合理')endelsedisp('输入的成绩不合理')end4.Fibonacci数组的元素满足Fibonacci规则:a(k+2)=a(k)+a(k+1),(k=1,2,3,…);且a1=a2=1。请设计一段程序,求出该数组中第一个大于10000的元素要求显示的结果为:i
7、=21a(i)=10946或者a(21)=10946程序如下:a=[];a(1)=1;a(2)=1;k=0;while(a(k+2)<10000)k=k+1;a(k+2)=a(k)+a(k+1);ends=a(k+2)k=k+25.单步执行该程序,记录程序结果;试着分析try-catch语句的功能。a=816357492a_end=492程序中有错误错误是ans=Attemptedtoaccessa(4,:);indexoutofboundsbecausesize(a)=[3,3].6.编写一个阶乘函数jiecheng.m,利用该函数找出最小的n值,使得n!>101
8、00,并求出n!。function[i,s]=jiecheng(n)s=1;i=0;while(s<100^n)i=i+1;s=s*i;end5.编写一个函数,实现对一个向量求以及求平均值的功能。(要求实现函数中,输入若不是一个向量,则报错)(sum(),length())7.程序设计:公元前五世纪我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、母、雏各几何?fora=1:100forb=1:100forc=1:100if((a+b+c)==100&100=5*a+3*b+c/3)disp([