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

下载本文档

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

文档简介

桂林电子科技大学 数学与计算科学学院实验报告院(系)数学与计算科学学号姓名成绩课程名称数学应用软件实验实验项目名 称实验三 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 文件,这样可以保存中间变量,在运行完成后,可以查看中间变量的值,对结果进行分析,查找错误所在。三,实验内容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)M脚本文件:a=input(a=);b=input(b=);c=input(c=);x=-5:5/1000:5;y=a.*x.2+b.*x+c;plot(x,y)结果输入: lx11a=1b=1c=1 图像:(2)M函数文件:function lx12(a,b,c)x=-5:5/1000:5;y=a.*x.2+b.*x+c;plot(x,y)运行函数:lx12(1,1,1)图像:2. 编程实现:输入的值,计算函数的函数值,其中,并计算M函数文件:function y =f(x)if x0 y=x+1;elseif x f(-0.7)ans = 0.3000 f(0.5)ans = 1 f(1.5)y = 2.2500ans = 2.25003. 编写一个函数mylog(n,x)来计算实数x的对数,其中,当n取10,计算以10为底的对数;当n取2时,计算以2为底的对数,当n取3时,计算以自然底数为底的对数,当n取其它数时候,用换底公式进行计算。M函数文件function y = mylog(n,x)if n=10 y=log10(x);elseif n=2 y=log2(x);elseif n=3 y=log(x);else y=log(x)/log(n);end结果: mylog(10,5)ans = 0.6990 mylog(2,5)ans = 2.3219 mylog(4,6)ans = 1.29254. 编程实现求和: (1)M函数文件:function Y=s(n)Y=0;for i=1:n Y=Y+(-1)(i+1)*i;end结果测试: s(4)ans =-2(2)function Y=s(n)Y=0;for i=1:n Y=Y+(-1)(i+1)*(1/i);end结果测试: s(4)ans = 0.58335. 计算和式,当和大于1000时,退出;function Y=s(n)Y=0;a=1;for i=1:n a=a*i; Y=Y+a; if Y1000 disp(S(n)1000,) break; endend程序测试: s(5)ans = 153 s(100)S(n)1000,退出循环ans = 59136. 计算组合数,用递归实现;M函数文件:function Y = c(k,n)if k0 | nn error(kn,put in again!);endif k=0 Y=1;elseif k=1&n=1 Y=1;elseif k c(0,0)ans = 1 c(0,1)ans = 1 c(3,4)ans = 47, 计算以下和式,并估计其求和公式以及验证: function Y=s(n)Y=0;for k=1:n Y=Y+k;end测试: s(3)ans = 6 function Y=s(n)Y=0;for k=1:n Y=Y+k2;end测试: s(3)ans = 14function Y=s(n)Y=0;for k=1:n Y=Y+k3;end测试: s(2)ans = 98,估计以下级数的和,并编程验证。 程序:a=1;S=0;for k=1:100000 a=a*k; S=S+1/a;enddisp(S);验证: s 1.7183 程序:S=0;for k=1:100000 S=S+1/(k*(k+1);enddisp(S);检验: s 1.0000 程序:S=0;for k=1:100000 S=S+(-1)(k+1)/(2*k-1);enddisp(S);检验: s 0.78549,画一个国际象棋的棋盘;10,给个人编上号:,按顺序围成一个圈坐好,从号开始报数,报到的人退出,下一个人再从开始往下报数,重复这个过程,请问最后剩下的那个人的号数是多少?请编程实现,并取进行验证;M函数文件: function x,y=Joseph0(N,M)a=1:N;t=1;k=1;while tl,k=size(a);if length(a)=1 disp(a); break; endif k Joseph0(10,3) 4 Joseph0(7,4) 211,求出之间的所有素数;M函数文件:function out = nprimes(N) A= 1:N;A(1)=0;i=2; while ii,1);end;out=nonzeros(A);检验: nprimes(20)ans = 2 3 5 7 11 13 17 1912,求出所有的水仙花数(所谓水仙花数,是满足以下条件的三位数:各位数的立方之和等于它本身,例如,);程序:for i=100:999 a=fix(i/100); b=fix(mod(i,100)/10); c=mod(i,10); if a3+b3+c3=i disp(i); endend结果: lx10 153 370 371 40713,将一个正整数进行质因数分解,例如:;function c=primfactor(a)b=2:sqrt(a);c=;while isempty(b) if mod(a,b(1) b(mod(b,b(1)=; continue; else c=c,b(1); a=a/b(1); b(bsqrt(a)=; endenddisp(该正整数的质因数为:);c=c,a; 测试:primfactor(90)该正整数的质因数为:ans = 2 3 3 514,求两个正整数的最小公倍数和最大公因数;M函数文件:function M,N=gcmlcm(m,n)t=min(m,n);while t if mod(m,t)=0 & mod(n,t)=0 disp(m,n的最大公约数:); disp(t); break; end t=t-1;end g=m*n/t; disp(m,n的最小公倍数:); disp(g); 程序测试:gcmlcm(4,6)m,n的最大公约数: 2m,n的最小公

温馨提示

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

评论

0/150

提交评论