收藏 分销(赏)

课程设计一和二.doc

上传人:仙人****88 文档编号:5861913 上传时间:2024-11-21 格式:DOC 页数:4 大小:51KB 下载积分:10 金币
下载 相关 举报
课程设计一和二.doc_第1页
第1页 / 共4页
课程设计一和二.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
课程设计名称: 设计一: MATALB入门(基础篇) 指导教师: 张莉 课程设计时数: 2 课程设计设备:安装了Matlab、C++软件的计算机 课程设计日期: 实验地点: 第五教学楼北802 课程设计目的: 掌握MATLAB的基本语法结构、工作环境、变量与数据操作等,能够利用MATLAB编程解决实际问题。 课程设计准备: 1. 在开始本实验之前,请回顾教科书的相关内容; 2. 需要一台准备安装Windows XP Professional操作系统和装有数学软件的计算机。 课程设计内容及要求 (1)编制m文件,等待键盘输入,输入密码123,密码正确,显示输入密码正确,程序结束;否则提示重入密码。 (2)输入x,y的值,并将它们的值互换后输出。 (3) 利用rand产生10个随机数,利用for循环对其进行排序(从大到小)。 (4)编制m文件,输入n(正整数),显示所有小于n的质数。 课程设计过程: 要求:设计过程必须包括问题叙述、问题分析、实验程序及注释、实验数据及结果分析和实验结论几个主要部分。 (1)问题叙述:密码验证问题即事先设定一个字符串作为密码,编写程序需提醒用户输入密码,甚至密码的格式等,待用户输入密码后能够判断密码是否正确,如果正确显示输入密码正确,否则提示用户密码错误,请重新输入。 问题分析:首先设定密码为123,待用户运行该程序时显示提示语“请输入密码;用if语句判断输入的字符串是否与密码相等,如果相等则输出密码正确程序结束;否则提醒用户重新输入密码。 实验程序及注释: 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)则提示用户重新输入,当多次输入仍不正确时程序将不断循环,不断提示用户重新输入密码,直到输入密码正确为止。 (2)问题叙述及分析:该问题要求编写程序将两个变量的值进行交换,首先两个变量的数值从键盘输入,这样当不同用户要交换的值不同时避免了修改程序。主程序引入一个临时变量来交换两变量的值,最后输出两变量交换后的值。 实验程序及注释: x=input('输入x的值\n'); y=input('输入y的值\n'); b=x; %将x的值赋给临时变量b x=y; %将y的值赋给x y=b; %将临时变量的值赋给y x,y 实验数据及结果分析:由键盘输入x、y的值,如输入7、9,交换后输出的结果为x=9、y=7。 (3)问题叙述:对随机产生的10个数按从大到小排序,编写程序需从第一个数开始逐一比较,一旦遇到比自己大的数即进行交换,这样使小数排在大数后面。 问题分析:程序利用两个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)<a(j+1) %如果前面的数小于后面的数则进行交换 temp=a(j); a(j)=a(j+1); a(j+1)=temp; end end end a 实验数据及结果分析;执行程序时MATLAB随机产生10个数,然后从第一个数开始与其后的9个数比较,遇到大于它的数即交换;再将第二个数与其后8个数比较,按从大到小的原则进行判断,依此类推,将前9个数都进行一次这样的比较,即可将小数下沉大数上浮。 (4)问题叙述:输入一个正整数n,找出小于n的质数,首先质数是除了1和本身不能整除其他数的数,所以编写程序要判断这个数能不能被1和本身以外的数整除,如果不能则该数为质数。 问题分析:由于偶数不可能为质数,该程序在寻找小于n的质数时只需判断小于n的奇数是否为质数即可。而判断的方法是用该数除以2和根号下自身之间的数,由于一个数总可以分解为一个大数和一个小数的乘积(除去平方的情况),所以只要该数不能被这之间的数整除则证明是质数。 实验程序及注释: n=input('n=\n'); prime=[2];k=0; %初始化数组 for i=3:n for m=2:fix(sqrt(i)) %m取2到i的平方根 if mod(i,m)==0 %若i除以m的余数为零,即i不是余数 k=1; %k用来表示i是不是质数,k等于1表示i不是质数 break; else k=0; end end if k==0 prime=[prime [i]]; %往数组里添加新找出的质数 end end prime 实验数据及结果分析:如输入n的值为25,定义一个数组来存储找出的质数,容易知道1不是质数,2是质数,所以将不再判断这两个数。直接将数组赋初值为[2],从3开始判断,在[2,]的区间内判断n能否被整除,得出25以内的质数有2、3、5、7、11、13、17、19、23。这样只判断2到根号n之间的数大大减小了程序的时间复杂度。 课程设计总结(由学生填写): 本次实验我学会了MATLAB中一些基本程序的应用。问题一是设置密码问题,用if语句判断输入的密码是否正确,若不正确则用while循环语句返回程序提醒用户重新输入密码。问题二只需借助一个临时变量,将其中一个数的值赋给临时变量,这样就实现了两个数的交换。问题三是冒泡排序法,利用两个for循环从第一个数到第九个数逐一与其后的数进行比较,实现小数排在后大数排在前。问题四在找小于n的质数时只需判断小于n的奇数是否为质数即可,对于判断一个数i是否为质数的方法,用i除以2到根号i以内的数,若都不能整除即为质数。本次实验难度不大,是MATLAB的入门知识,在完成该实验的过程中遇到了一些细节上的问题,今后会更加努力的学习MATLAB知识,在下一次遇到这些问题时能熟练的解决。 课程设计名称: 设计二: 开方算法 指导教师: 张莉 课程设计时数: 2 课程设计设备:安装了Matlab、C++软件的计算机 课程设计日期: 实验地点: 第五教学楼北802 课程设计目的: 掌握开方算法的基本思想,能够套用开方算法的基本公式,并在此基础上改进和创新开方算法。 课程设计准备: 1. 在开始本实验之前,请回顾教科书的相关内容; 2. 需要一台准备安装Windows XP Professional操作系统和装有数学软件的计算机。 课程设计内容及要求 利用平方法求解,在此基础上,请给出新的求解方法,并对结果进行适当地分析(速度和精度等)。 课程设计过程: 要求:设计过程必须包括问题叙述、问题分析、实验程序及注释、实验数据及结果分析和实验结论几个主要部分。 普通开方算法: 问题叙述:本题要求x=的解,相对于加减乘除等简单四则运算来说,开方算法无疑是比较复杂的,因此我们需要设计出一种算法,使复杂的开方算法归结为四则运算的重复,这样就能根据一步步检验求出该方程比较精确的解。 问题分析:开方算法的基本思想是,给出一个计算开方的迭代公式,对于任给的x0大于0,对k=0,1,2,…执行该算式,直到前后两项偏差小于一个给定的精度为止,最终获得的近似值即为所求。因此在编写程序时需要有执行迭代的语句,并有结束迭代的条件。 实验程序及注释: x0=input('input x0\n'); %设定迭代初值 a=3;er=1; n=0; %定义一个计数器记录循环次数 while er>0.00001 %当误差大于0.00001时执行 x=0.5*(x0+a/x0); %迭代公式 er=abs(x-x0); x0=x; %数值解 n=n+1; end x sqrta=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*i<=a) x0=i; end end while er>0.00001 %当误差大于0.00001时执行 x=0.5*(x0+a/x0); %迭代公式 er=abs(x-x0); x0=x; %数值解 n=n+1; end x sqrta=sqrt(a) %真实数值 n,er 课程设计总结(由学生填写): 通过本次实验我掌握了开方的普通算法,经过在预报值上加上一个校正值来导出迭代公式,利用误差小于某一精度的条件来终止程序,这样最终得到一个较好的近似值。对于开方算法的改进方法,通过一个for循环语句来确定初始值,这样不仅减少了计算的时间复杂度还提高了求解结果的精度。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服