1、课程设计名称: 设计一: MATALB入门(基础篇) 指导教师: 张莉 课程设计时数: 2 课程设计设备:安装了Matlab、C+软件的计算机 课程设计日期: 实验地点: 第五教学楼北802 课程设计目的:掌握MATLAB的基本语法结构、工作环境、变量与数据操作等,能够利用MATLAB编程解决实际问题。课程设计准备:1. 在开始本实验之前,请回顾教科书的相关内容;2. 需要一台准备安装Windows XP Professional操作系统和装有数学软件的计算机。课程设计内容及要求 (1)编制m文件,等待键盘输入,输入密码123,密码正确,显示输入密码正确,程序结束;否则提示重入密码。 (2)输
2、入x,y的值,并将它们的值互换后输出。 (3) 利用rand产生10个随机数,利用for循环对其进行排序(从大到小)。 (4)编制m文件,输入n(正整数),显示所有小于n的质数。课程设计过程: 要求:设计过程必须包括问题叙述、问题分析、实验程序及注释、实验数据及结果分析和实验结论几个主要部分。(1)问题叙述:密码验证问题即事先设定一个字符串作为密码,编写程序需提醒用户输入密码,甚至密码的格式等,待用户输入密码后能够判断密码是否正确,如果正确显示输入密码正确,否则提示用户密码错误,请重新输入。问题分析:首先设定密码为123,待用户运行该程序时显示提示语“请输入密码;用if语句判断输入的字符串是否
3、与密码相等,如果相等则输出密码正确程序结束;否则提醒用户重新输入密码。实验程序及注释: code=123; %设定密码a=input(please enter the code n); %输入提示while a=code a=input(please enter again n); %输入错误请重新输入 end if a=code disp(the code is right); %输入正确 end实验数据及结果分析:在MATLAB命令窗口中输入密码,若输入123则提示用户输入密码正确,程序结束;若密码不正确(如输入456)则提示用户重新输入,当多次输入仍不正确时程序将不断循环,不断提示用户重
4、新输入密码,直到输入密码正确为止。(2)问题叙述及分析:该问题要求编写程序将两个变量的值进行交换,首先两个变量的数值从键盘输入,这样当不同用户要交换的值不同时避免了修改程序。主程序引入一个临时变量来交换两变量的值,最后输出两变量交换后的值。实验程序及注释:x=input(输入x的值n);y=input(输入y的值n);b=x; %将x的值赋给临时变量bx=y; %将y的值赋给xy=b; %将临时变量的值赋给yx,y实验数据及结果分析:由键盘输入x、y的值,如输入7、9,交换后输出的结果为x=9、y=7。(3)问题叙述:对随机产生的10个数按从大到小排序,编写程序需从第一个数开始逐一比较,一旦遇
5、到比自己大的数即进行交换,这样使小数排在大数后面。问题分析:程序利用两个for循环语句来实现10个数的排序,第一个for循环表明共进行9趟比较,即前9个数和它后面的数做比较,第二个for循环表明每趟比较中进行10-i次两两比较,即第一个数和它后面的所有数比较,第二到第九个数只和它们之后的数比较,若发现前面的数比后面的数小的情况则交换两数。实验程序及注释:a=rand(1,10);for i=1:1:10 %共进行9趟比较 for j=1:1:10-i %每趟中进行10-i次两两比较 if a(j)0.00001 %当误差大于0.00001时执行 x=0.5*(x0+a/x0); %迭代公式 e
6、r=abs(x-x0); x0=x; %数值解 n=n+1;endxsqrta=sqrt(a) %真实数值n,er实验数据及结果:设定迭代初始值为1,求出根号3的解为1.73205080756888,与真实值基本相等。该程序运行的迭代次数为5次,误差值为2.44585e-009小于0.00001,执行结果较好。改进的开方算法:在普通的开方算法中,我们设定初始值为1,但当需要开方的数比较大时,它的根显然是大于1的,所以在改进的开方算法中我们通过一个for循环来确定初始值,这样就减少了计算的时间。实验程序及注释:a=3;er=1;n=0; %定义一个计数器记录循环次数for i=1:a if(i*i0.00001 %当误差大于0.00001时执行 x=0.5*(x0+a/x0); %迭代公式 er=abs(x-x0); x0=x; %数值解 n=n+1;endxsqrta=sqrt(a) %真实数值n,er课程设计总结(由学生填写): 通过本次实验我掌握了开方的普通算法,经过在预报值上加上一个校正值来导出迭代公式,利用误差小于某一精度的条件来终止程序,这样最终得到一个较好的近似值。对于开方算法的改进方法,通过一个for循环语句来确定初始值,这样不仅减少了计算的时间复杂度还提高了求解结果的精度。