MATLAB的程序设计.doc_第1页
MATLAB的程序设计.doc_第2页
MATLAB的程序设计.doc_第3页
MATLAB的程序设计.doc_第4页
MATLAB的程序设计.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

桂林电子科技大学 数学与计算科学学院实验报告 实验室: 406 实验日期:2013 年 10 月 16 日院(系)数学与计算科学学院年级、专业、班姓名成绩课程名称数学软件实验项目名 称MATLAB的程序设计指导教师一 ,实验目的1. 掌握建立与编辑函数文件和脚本文件的方法;2. 掌握MATLAB编程语言的基本控制语句;3. 掌握MATLAB程序的调试。二,实验原理MATLAB有三种基本程序结构:顺序、选择和循环。主要的语句有if语句、switch语句、for循环语句和while循环。1. 选择结构 (1) if语句: if 条件表达式 执行语句 elseif 条件表达式 执行语句 end (2) switch语句 switch 表达式 case 表达式 执行语句 case 表达式 执行语句 . otherwise 执行语句 end2. 循环结构 (1) for 循环 for 循环变量 = 表达式 执行语句 end 其中表达式是一个矩阵,矩阵的列被一个一个的赋给循环变量,然后执行循环体内的语句。 (2) while 循环 while 条件表达式 执行语句 End3. 其它流程控制函数continue:continue 语句通常用在循环控制中,包括 for 循环和 while 循环,用于结束当次循环,继续执行下一次循环,但是不结束当前循环。一般 continue 语句与 if 语句相结合,当满足一定的条件时,执行 continue 语句。break:与 continue 相同的是,break 函数也是用于循环控制,中断当前循环。与 continue 不同,break 跳出当前循环,不再执行该循环的任何操作。return:结束该程序的执行,返回到调用函数或者键盘。4. 创建M文件 M文件以 .m 为扩展名,它有两种形式:脚本文件和函数文件。 (1) 脚本文件的创建 进入MATLAB命令窗口后,选择“File”下拉菜单中的“new”选择“M-file”,或在MATLAB命令窗口输入“edit M文件名”,或点击工具栏中的“新建”按钮。在M文件编辑窗口中,写入符合语法规则的。编写完命令文件后,选择“file”下拉式菜单中的“save”项,然后依提示输入一个文件名。至此,完成了脚本文件的创建。 (2) 函数文件的创建 函数文件的创建与脚本文件的创建方法完全一样,只是在函数文件的第一句可执行语句必须是function引导的定义语句,并且输入文件名时要与定义语句中的函数名相同。 (3) 脚本文件与函数文件的调用 创建了脚本文件后,只在命令窗口键入脚本文件名,再按回车键,就可以执行脚本文件中所包含的所有命令。 函数文件一旦创建,就可以与其它的MATLAB函数一样调用了。 5. 程序的调试在程序调试时,程序运行中变量的值为一个重要的线索。因此,查看变量值为程序调试的重要线索,由于在函数调用时只返回最后的输出参数,而不返回中间变量,因此,可以选择下面的方法查看程序运行中的变量值。(1)通过分析后,将可能出错的语句后面的分号(;)删除,将结果显示在命令窗口中,与预期值进行比较;(2)利用函数 disp 显示中间变量的值;(3)在程序中的适当位置添加 keyboard 指令。当 MATLAB 执行至此处时将暂停,等待用户反应。当程序运行至此时将暂停,在命令窗口中显示 k提示符,用户可以查看工作区中的变量,可以改变变量的值。输入 return 指定返回程序,继续运行。(4)在调试一个单独的函数时,可以将函数改写为脚本文件,此时可以直接对输入参数赋值,然后以脚本方式运行该 M 文件,这样可以保存中间变量,在运行完成后,可以查看中间变量的值,对结果进行分析,查找错误所在。三,使用仪器,材料计算机、matlab软件四,实验内容与步骤题目:1. 分别用脚本文件和函数文件实现以下功能:输入参数,画出函数的图像;2. 编程实现:输入的值,计算函数的函数值,其中,并计算3. 编写一个函数mylog(n,x)来计算实数x的对数,其中,当n取10,计算以10为底的对数;当n取2时,计算以2为底的对数,当n取3时,计算以自然底数为底的对数,当n取其它数时候,用换底公式进行计算。4. 编程实现求和: 5. 计算和式,当和大于1000时,退出;6. 计算组合数,用递归实现;7, 计算以下和式,并估计其求和公式以及验证: 8,估计以下级数的和,并编程验证。 9,画一个国际象棋的棋盘;10,给个人编上号:,按顺序围成一个圈坐好,从号开始报数,报到的人退出,下一个人再从开始往下报数,重复这个过程,请问最后剩下的那个人的号数是多少?请编程实现,并取进行验证;11,求出之间的所有素数;12,求出所有的水仙花数(所谓水仙花数,是满足以下条件的三位数:各位数的立方之和等于它本身,例如,);13,将一个正整数进行质因数分解,例如:;14,求两个正整数的最小公倍数和最大公因数;15,有一个已排好序的数组,现在输入一个数,请按照原来的规律将此数插入到数组中;16,将一个数组逆序输出;五,实验过程原始记录(数据,图表,计算等)1. (1)脚本文件的程序:x=-10:10;a=input(input variable a:);b=input(input variable b:);c=input(input variable c:);y=a*x2+b*x+c;plot(x,y)当在编辑窗口输入f的时候,当a,b,c分别输入1,0,0的时候,有; finput variable a:1input variable b:0input variable c:0输出的图形如下: (2)函数文件的程序如下:function g(n)x=-n:0.1:n;a=input(input variable a:);b=input(input variable b:);c=input(input variable c:);y=a*x.2+b*x+c;plot(x,y)当在编辑窗口输入g(20)时候有: g(20)input variable a:1input variable b:2input variable c:0输出的图形如下: 2. 函数文件的程序如下:function y = h(x)if x0 y = x+1;elseif x h(-0.7)ans = 0.3000 h(0.5)ans = 1 h(1.5)ans = 2.25003.函数文件的程序如下:function y = mylog(n,x)if n=2 y=log2(x); else if n=3 y=log(x); else if n=10 y=log10(x); else y=log(x)/log(n); end endend输入(3,2),(2,4),(10,1000),(5,100)四个检验,检验出函数是正确的: mylog(3,2)ans = 0.6931 mylog(2,4)ans = 2 mylog(10,1000)ans = 3 mylog(5,100)ans = 2.86144. (1)函数文件的程序如下:function y=s(n)x=0;for i=1:1:n a=(-1)(i+1)*i; x=x+a;endy=x;当在编辑窗口分别输入1,2,3,4时,有: s(1)ans = 1 s(2)ans = -1 s(3)ans = 2 s(4)ans =-2(2).函数文件的程序如下:function y=s(n)x=0;for i=1:1:n a=(-1)(i+1)*(1/i); x=x+a;endy=x;当在编辑窗口分别输入1,2,3,4时,有: s(1)ans = 1 s(2)ans = 0.5000 s(3)ans = 0.8333 s(4)ans =0.58335.函数文件的程序如下:function y=f(n)s=1;for i=1:n s=s*i;endy=s;主程序如下: n=0;s=0;while (s y=sy =59136.函数文件的程序如下(递归法):function y=digui(n)if (n=1) | (n=0) y=1;else y=n*digui(n-1);End在编辑窗口输入k=1、n=3和k=4、n=10进行检验,检验结果如下: k=1; n=3; C=digui(n)/(digui(k)*digui(n-k)C = 3 k=4; n=10; C=digui(n)/(digui(k)*digui(n-k)C = 2107. (1)函数文件的程序如下:function y=sum1(n)s=0;for i=1:n s=s+i;endy=s;估计验证公式为:输入n=100进行验证,所以结果应该大概等于5000,验证证明结果是正确的: sum1(100)ans = 5050(2) 函数文件的程序如下:function y=sum2(n)s=0;for i=1:n s=s+i*i;endy=s;估计验证公式为:输入n=3进行验证,验证证明结果是正确的: sum2(3)ans = 14(3) 函数文件的程序如下:function y=sum3(n)s=0;for i=1:n s=s+i*i*i;endy=s;估计验证公式为:输入n=3进行验证,验证证明结果是正确的: sum3(3)ans = 368.(1)函数文件的程序如下:function y=sum5(n)x=0;for i=1:n s=1; for j=1:i s=s*j; end x=x+1/s;endy=x;在编辑窗口输入n=2和n=100进行检验,检验结果如下: sum5(2)ans = 1.5000 sum5(100)ans =1.7183很容易验证结果是正确的。(2) 估计公式为:函数文件的程序如下:function y=sum6(n)s=0;for i=1:n s=s+1/(i*(i+1);endy=s;在编辑窗口输入n=1000进行检验,检验结果如下: sum6(1000)ans =0.9990(3).函数文件的程序如下:function y=sum7(n)s=0;for k=1:n s=s+(-1)(k+1)/(2*k-1);endy=s;在编辑窗口输入n=1000进行检验,检验结果如下: sum7(1000)ans = 0.7851很容易看出结果是正确的。9.生成一个国际象棋棋盘的程序如下: x=zeros(100,100);x(1:50,1:50)=1;x(51:100,51:100)=1;y=repmat(x,5,5);figure;imshow(y);输出的图形如下: 10. 主程序如下; n=input(总人数:);m=input(数到第几个人开始出列:);num=1:n;f=zeros(1,n);a=1;j=1;ind=0;while a=n while jlength(num) ind=1; end j=j+1; endf(a)=num(ind); num(ind)=;ind=ind-1; j=1; a=a+1;endf(10)输入N=10、M=3进行验证,结果如下:总人数:10数到第几个人开始出列:3ans = 411. 主程序如下: clear alln=input(需要判断素数的个数: );count=0;for i=2:n j=2; k=sqrt(i); while j if rem(i,j)=0 break else j=j+1; end if jk fprintf(%5d,i) count=count+1; if rem(count,20)=0 fprintf(n) end break end endend输入n=100进行验证,结果如下:需要判断素数的个数: 1003 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 12. 主程序如下: for n=100:999 n1=fix(n/100); n2=rem(fix(n/10),10); n3=rem(n,10); if n=n13+n23+n33 fprintf(%5d,n); endend结果如下:153 370 371 407 13. 函数文件的程序如下:function y=factor2(n)d=n;fprintf(%d=,n);i=2;while i=d if mod(d,i)=0 if i=d fprintf(%d,i) elseif i factor2(90)90=2*3*3*5 14. 函数文件的程序如下:function gs=gbs(a,b)if a1, disp(参数必须为向量.);elsefor i=1:length(a) for j=2:length(a) if y(j-1)y(j) Q=y(j-1); y(j-1)=y(j); y(j)=Q; end endend endend降序的函数文件的程序如下:function y=sx(a)y=a;if length(size(a)=2 | min(size(a)1, disp(参数必须为向量.);else

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论