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

下载本文档

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

文档简介

1、;.桂林电子科技大学数学与计算科学学院实验报告院(系) 数学与计算科学学号姓名成绩课程数学应用软件实验实验项目实验三MATLAB的程序设计名称名称一 ,实验目的1.掌握建立与编辑函数文件和脚本文件的方法;2.掌握 MATLAB 编程语言的基本控制语句;3.掌握 MATLAB 程序的调试。二,实验原理MATLAB 有三种基本程序结构:顺序、选择和循环。主要的语句有if 语句、 switch 语句、 for循环语句和 while 循环。1.选择结构(1) if 语句:if 条件表达式执行语句elseif 条件表达式执行语句end(2) switch 语句switch 表达式case 表达式执行语句

2、case 表达式执行语句.otherwise执行语句end2. 循环结构(1) for 循环for循环变量= 表达式执行语句end其中表达式是一个矩阵,矩阵的列被一个一个的赋给循环变量,然后执行循环体内的语句。(2) while 循环while条件表达式;.'.执行语句End3. 其它流程控制函数continue : continue语句通常用在循环控制中,包括for 循环和while循环,用于结束当次循环,继续执行下一次循环,但是不结束当前循环。一般continue语句与if 语句相结合,当满足一定的条件时,执行continue语句。break:与 continue 相同的是, br

3、eak 函数也是用于循环控制, 中断当前循环。 与 continue 不同, break 跳出当前循环,不再执行该循环的任何操作。return :结束该程序的执行,返回到调用函数或者键盘。4. 创建M文件M 文件以.m 为扩展名,它有两种形式:脚本文件和函数文件。(1) 脚本文件的创建进入 MATLAB 命令窗口后, 选择 “ File”下拉菜单中的 “new ”选择“ M-file ”,或在 MATLAB命令窗口输入“edit M 文件名”,或点击工具栏中的“新建”按钮。在M 文件编辑窗口中,写入符合语法规则的。编写完命令文件后,选择“file ”下拉式菜单中的“save”项,然后依提示输入

4、一个文件名。至此,完成了脚本文件的创建。(2) 函数文件的创建函数文件的创建与脚本文件的创建方法完全一样,只是在函数文件的第一句可执行语句必须是 function 引导的定义语句,并且输入文件名时要与定义语句中的函数名相同。(3) 脚本文件与函数文件的调用创建了脚本文件后,只在命令窗口键入脚本文件名,再按回车键,就可以执行脚本文件中所包含的所有命令。函数文件一旦创建,就可以与其它的MATLAB函数一样调用了。5. 程序的调试在程序调试时,程序运行中变量的值为一个重要的线索。因此,查看变量值为程序调试的重要线索,由于在函数调用时只返回最后的输出参数,而不返回中间变量,因此,可以选择下面的方法查看

5、程序运行中的变量值。( 1)通过分析后,将可能出错的语句后面的分号( ;)删除,将结果显示在命令窗口中,与预期值进行比较;( 2)利用函数 disp 显示中间变量的值;( 3)在程序中的适当位置添加 keyboard 指令。当 MATLAB 执行至此处时将暂停,等待用户反应。当程序运行至此时将暂停, 在命令窗口中显示 k>>提示符,用户可以查看工作区中的变量,可以改变变量的值。输入return 指定返回程序,继续运行。( 4)在调试一个单独的函数时,可以将函数改写为脚本文件,此时可以直接对输入参数赋值,然后以脚本方式运行该 M 文件,这样可以保存中间变量,在运行完成后,可以查看中间

6、变量的值,对结果进行分析,查找错误所在。;.'.三,实验内容1. 分别用脚本文件和函数文件实现以下功能:输入参数 a,b,c ,画出函数yax2bxc 的图像;x1,x02.编 程 实 现 :输 入 x 的 值 ,计 算 函 数 f ( x) 的函 数 值 , 其 中 f (x)1,1x1 , 并 计算x2 , x1f ( 0.7), f (0.5), f (1.5)3. 编写一个函数mylog(n,x) 来计算实数x 的对数,其中,当n 取 10,计算以10 为底的对数;当n取 2 时,计算以2 为底的对数,当n 取 3 时,计算以自然底数为底的对数,当n 取其它数时候,用换底公式进

7、行计算。4. 编程实现求和: s(n)1234.(1)n 1 ns(n)1111.(1)n 1 1234n5. 计算和式 S(n)1!2!.n! ,当和大于1000 时,退出;6. 计算组合数 Cnkn!k)!n Cnk 11 ,用递归实现;k!( nk7, 计算以下和式,并估计其求和公式以及验证:nS(n)k 1 23.nk1nk2122232n2S(n).k1nk3132333n3S(n).k18,估计以下级数的和,并编程验证。1111.1.S2!3!n!k 1 k ! 1!S11111.k 1 k(k 1)1 2 2 3 3 4n (n 1);.'.S( 1)k 11111. (

8、 1)k 1.k 12k 13572k 19,画一个国际象棋的棋盘;10,给 N 个人编上号: 1,2,3,., N ,按顺序围成一个圈坐好,从1号开始报数,报到 M ( M N )的人退出,下一个人再从1开始往下报数,重复这个过程,请问最后剩下的那个人的号数是多少?请编程实现,并取N10, M3 进行验证;11,求出 1 N 之间的所有素数;12,求出所有的水仙花数(所谓水仙花数,是满足以下条件的三位数:各位数的立方之和等于它本身,例如,135333153 );13,将一个正整数进行质因数分解,例如:902*3*3*5;14,求两个正整数m, n 的最小公倍数和最大公因数;15,有一个已排好

9、序的数组,现在输入一个数,请按照原来的规律将此数插入到数组中;16,将一个数组逆序输出;四,实验结果分析或总结1. 分别用脚本文件和函数文件实现以下功能:输入参数 a,b,c ,画出函数yax2bxc 的图像;( 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

10、=-5:5/1000:5;y=a.*x.2+b.*x+c;plot(x,y)运行函数:lx12(1,1,1)图像:x1,x02.编 程 实 现: 输 入 x 的 值 ,计 算 函 数 f ( x) 的函 数 值 , 其 中 f (x)1,1x1 , 并 计算x2 , x1f ( 0.7), f (0.5), f (1.5)M 函数文件:;.'.function y =f(x)if x<0y=x+1;elseif x<1y=1;else y=x2end结果:>> f(-0.7)ans =0.3000>> f(0.5)ans =1>> f(1

11、.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=10y=log10(x);elseif n=2y=log2(x);elseif n=3y=log(x);elsey=log(x)/log(n);end结果:>> mylog(10,5) ans =0.6990>> mylog(2,5

12、) ans =2.3219>> mylog(4,6);.'.ans =1.29254. 编程实现求和: s(n)1234 .(1)n 1 ns(n)1111.(1)n 1 1234n(1)M 函数文件 :functionY=s(n)Y=0;for i=1:nY=Y+(-1)(i+1)*i;end结果测试 :> s(4)ans =-2(2)functionY=s(n)Y=0;for i=1:nY=Y+(-1)(i+1)*(1/i);end结果测试 :>> s(4)ans =0.58335. 计算和式 S(n) 1! 2!.n! ,当和大于1000 时,退出;

13、functionY=s(n)Y=0;a=1;for i=1:na=a*i;Y=Y+a;if Y>1000disp('S(n)>1000,í ?3?-? ·' )break ;endend程序测试 :>> s(5)ans =153>> s(100);.'.S(n)>1000, 退出循环ans =59136. 计算组合数 Cnkn!n Cnk11 ,用递归实现;k !(n k )!kM 函数文件 :functionY = c(k,n)if k<0 | n<0error('k or n is s

14、maller than 0,put in again !');return;elseifk>nerror('k>n,put in again!');endif k=0Y=1;elseifk=1&&n=1Y=1;elseifk<=nY=(n/k)*c(k-1,n-1);end程序测试 :>> c(0,0)ans =1>> c(0,1)ans =1>> c(3,4)ans =47, 计算以下和式,并估计其求和公式以及验证:nS(n)k 123.nk1functionY=s(n)Y=0;fork=1:nY=

15、Y+k;end测试 :>> s(3)ans =6;.'.nk2122232n2S(n).k1functionY=s(n)Y=0;for k=1:nY=Y+k2;end测试 :>> s(3)ans =14nk3132333n3S(n).k1functionY=s(n)Y=0;fork=1:nY=Y+k3;end测试 :>> s(2)ans =98,估计以下级数的和,并编程验证。11111S1!2!.k 1 k !3!n!程序 :a=1;S=0;for k=1:100000a=a*k;S=S+1/a;enddisp(S);验证 :>> s1.

16、7183S11111.k 1 k(k 1)1 2 2 3 3 4n (n 1)程序 :S=0;.'.fork=1:100000S=S+1/(k*(k+1);enddisp(S);检验 : >> s1.0000S( 1)k11 111.( 1)k 1.k 12k13572k1程序 :S=0;fork=1:100000S=S+(-1)(k+1)/(2*k-1);enddisp(S);检验 :>> s0.78549,画一个国际象棋的棋盘;10,给 N 个人编上号:1,2,3,., N ,按顺序围成一个圈坐好,从1号开始报数,报到M ( MN )的人退出,下一个人再从1

17、开始往下报数,重复这个过程,请问最后剩下的那个人的号数是多少?请编程实现,并取N10, M3 进行验证;M 函数文件 :functionx,y=Joseph0(N,M)a=1:N;t=1;k=1;whiletl,k=size(a);iflength(a)=1disp(a);break;endifk<Mwhilekiflength(a)=1break;endforr=1:(M-1)c=a(1);a(1)=;a=a c;.'.enda(1)=;k=k+1;endelsefori=1:(M-1)b(i)=a(i);enda(M)=;forj=1:(M-1)a(M-j)=;endfori

18、=1:(M-1)a=a b(i);endt=t+1;endend验证 :>> Joseph0(10,3)4>> Joseph0(7,4)211,求出 1 N 之间的所有素数;M 函数文件:functionout = nprimes(N)A= 1:N;A(1)=0;i=2;whilei<= floor(sqrt(N);forj= 2:fix(N/i)A(i*j) = 0;end ;i = A(find(A>i,1);end ;out=nonzeros(A);检验:>> nprimes(20) ans =23;.'.571113171912,

19、求出所有的水仙花数(所谓水仙花数,是满足以下条件的三位数:各位数的立方之和等于它本身,例如,135333153 );程序:fori=100:999a=fix(i/100);b=fix(mod(i,100)/10);c=mod(i,10);ifa3+b3+c3=idisp(i);endend结果:>> lx1015337037140713,将一个正整数进行质因数分解,例如:902*3*3*5;functionc=primfactor(a)b=2:sqrt(a);c=;whileisempty(b)ifmod(a,b(1)b(mod(b,b(1)=;continue;elsec=c,b

20、(1);a=a/b(1);b(b>sqrt(a)=;endenddisp(' 该正整数的质因数为:);c=c,a;测试:;.'.primfactor(90)该正整数的质因数为:ans =233514,求两个正整数m, n 的最小公倍数和最大公因数;M 函数文件:function M,N=gcmlcm(m,n)t=min(m,n);while tif mod(m,t)=0 & mod(n,t)=0disp('m,n 的最大公约数:');disp(t);break;endt=t-1;endg=m*n/t;disp('m,n 的最小公倍数:');disp(g);程序测试:gcmlcm(4,6)m,n 的最大公约数:2m,n 的最小公倍数:1215,有一个已排好序的数组,现在输入一个数,请按照原来的规律将此数插入到数组中;M 函数文件 :functiony=inshu

温馨提示

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

评论

0/150

提交评论