MATLAB实验指导书
matlab实验指导2019-11-12

实验1 熟悉软件环境和基本的操作一、实验目的熟悉MATLAB运行环境和了解基本操作。
二、实验内容MATLAB的启动、操作界面组成1.熟悉MATLAB图形界面打开MATLAB,单击命令窗口菜单栏中的各个下拉菜单按钮,试使用各个按钮引出的选项;把光标移动到工具栏中各个图标上(不要按下),查看它们与菜单选项的对应情况。
2.熟悉MATLAB的基本命令。
在命令窗口中分别键入以下内容,以建立若干变量:A=[1 2;3 4;5 6]B=[7,8,9;10,11,12]C=[5 6 7;1 8 3];D=B+C问题1:如何输入一个矩阵变量的行元素和列元素?问题2:观察每行命令后是否加“;”,对显示执行结果有什么区别?键入以下命令或执行操作,查看效果,并体会命令功能:(1)工作空间管理。
whowhosclear A(2)路径编辑。
试用菜单File/Set Path将D盘根目录及其下的所有子目录和文件夹包含进来,设为搜索路径。
问题3:当前路径是什么?问题4:搜索路径是什么意思?(3)联机帮助help pausehelpwin(4)窗口清理。
先画出正弦函数在0-2π之间的图形,再用以下各种窗口清理命令,看每项命令都清除了什么。
figureplot(sin(0:0.1:6.28))claclfclose注意:figure为打开一幅图形图像窗口close为关闭当前图形图像窗口,而close all为关闭所有已打开的图形图像窗口。
(5)MATLAB基本矩阵操作演示playshow intro(6)MATLAB图形绘制演示playshow buckydem(7)MATLAB数学功能演示(快速傅氏变换)playshow fftdemo(8)MATLAB三维造型演示(茶壶演)playshow teapotdemo3.打开MATLAB命令窗口,键入demos,观看演示程序。
三、思考题1.将pi分别用15位数字格式、分数格式、十六进制格式、5位数字的科学计数法显示。
matlab计算方法实验指导误差分析

实验一 误差分析实验1(病态问题)实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。
对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。
通过本实验可获得一个初步体会。
数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。
病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。
问题提出:考虑一个高次的代数多项式)1.1()()20()2)(1()(201∏=-=---=k k x x x x x p显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。
现考虑该多项式的一个扰动)2.1(0)(19=+x x p ε其中ε是一个非常小的数。
这相当于是对(1.1)中19x 的系数作一个小的扰动。
我们希望比较(1.1)和(1.2)根的差别,从而分析方程(1.1)的解对扰动的敏感性。
实验内容:为了实现方便,我们先介绍两个MATLAB 函数:“roots ”和“poly ”。
roots(a)u =其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。
设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程01121=+++++-n n n n a x a x a x a的全部根;而函数 poly(v)b =的输出b 是一个n+1维向量,它是以n 维向量v 的各分量为根的多项式的系数。
可见“roots ”和“poly ”是两个互逆的运算函数。
))20:1((;)2();21,1(;000000001.0ve poly roots ess ve zeros ve ess +===上述简单的MATLAB 程序便得到(1.2)的全部根,程序中的“ess ”即是(1.2)中的ε。
实验要求:(1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。
现代控制理论-基于MATLAB的实验指导书课程设计指导书

现代控制理论基于MATLAB的实验指导书第一部分实验要求1.实验前做好预习。
2.严格按照要求操作实验仪器,用毕恢复原状。
3.实验完成后,由指导教师检查实验记录、验收仪器后,方可离开。
4.实验报告应包括以下内容:1)实验目的;2)实验原理图;3)实验内容、步骤;4)仿真实验结果(保留仿真实验波形,读取关键参数);5)仿真实验结果分析。
第二部分MATLAB平台介绍实际生产过程中,大部分的系统是比较复杂的,并且要考虑安全性、经济性以及进行实验研究的可能性等,这在现场实验中往往不易做到,甚至根本不允许这样做。
这时,就需要把实际系统建立成物理模型或数学模型进行研究,然后把对模型实验研究的结果应用到实际系统中去,这种方法就叫做模拟仿真研究,简称仿真。
到目前为止,已形成了许多各具特色的仿真语言。
其中美国Mathworks软件公司的动态仿真集成软件Simulink与该公司著名的MATLAB软件集成在一起,成为当今最具影响力的控制系统应用软件。
国内MA TLAB软件的著名论坛为“MATLAB中文论坛”,网址为:https:///forum.php,建议同学们注册并参与论坛相关内容的讨论。
图1 MA TLAB仿真环境第三部分 实验实验一线性系统的时域分析实验目的熟悉MATLAB 环境,掌握用MATLAB 控制系统工具箱进行线性定常系统的时域分析、能控性与能观性分析、稳定性分析的方法。
实验要求完成指导书规定的实验内容,记录并分析实验结果,写出实验报告。
实验内容1.已知系统的状态模型,求系统在单位阶跃输入下的各状态变量、输出响应曲线。
例:[]⎥⎦⎤⎢⎣⎡=⎥⎦⎤⎢⎣⎡+⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡--=⎥⎦⎤⎢⎣⎡2121214493.69691.1,0107814.07814.05572.0x x y u x x x x 。
键入:a = [-0.5572, -0.7814; 0.7814,0]; b = [1; 0]; c = [1.9691,6.4493]; d = 0;[y, x, t]=step(a, b, c, d); plot(t, y); grid (回车,显示输出响应曲线。
MATLAB及其应用实验指导书

实验一MATLAB软件使用初步一、实验目的∙学习MATLAB软件的安装过程,熟悉MA TLAB软件界面的组成及基本使用方法。
∙理解数组(Array)的分类,及标量(scalar)、矢量(vector)和矩阵(Matrix)的区别,熟悉数组与矩阵的构造方法,掌握数组与矩阵的基本运算法则。
二、实验要求1、掌握MATLAB软件的启动与退出的方法。
2、掌握MATLAB软件的桌面环境。
3、掌握MATLAB软件的基本使用方法。
4、掌握M文件编辑器的使用。
5、学会使用MATLAB的帮助系统。
6、掌握标量、矢量和矩阵的构造方法。
7、掌握数组的四则运算。
8、掌握矩阵的四则运算。
9、掌握基本的数据输入和输出函数。
三、实验内容1.通过桌面快捷图标或“开始—程序”菜单运行MATLAB,熟悉MA TLAB的桌面环境,如图1 所示。
图1 MATLAB 桌面环境2.浏览各个菜单项的内容,试着改变各个窗口的字体与字号。
3.熟悉matlab 中的特殊变量:i 、j 、pi 、ans 等等。
4.在实验报告中回答下面哪些赋值语句是正确的,如果不正确给出理由。
a=1a20=1.2;年薪=100000 (错,只能以字母开头,只能有字母数字下划线) _fee=20.0 (错,只能以字母开头,只能有字母数字下划线)coordinate.x=15.已知1u =,3v =,用MA TLAB 分别执行下列语句。
并在实验报告中记录语句和结果。
a. 43u vb. ()222v u v -+ c. 333v v u - d.243v π6. 运行以下命令并将运行结果与工作空间浏览器中的状态进行比较。
>> a=sin(pi); b=[1, 2]; c=[1; 2]; >> who>> whos在实验报告中回答:如下运行结果中,Size 下的1x1、1x2、2x1的含义>> whosName Size Bytes Classa 1x1 8 double arrayb 1x2 16 double arrayc 2x1 16 double array7.通过工作目录浏览器(Current Directory Browser )或者“File ”菜单中相应菜单项改变当前工作 目录。
matlab与通信仿真实验指导书(上)

《Matlab与通信仿真》实验指导书(上) 刘毓杨辉徐健和煦黄庆东吉利萍编著通信与信息工程学院2009-12目录第一章 MALTAB基础知识 (1)1.1MATLAB基础知识 (1)1.2MATLAB基本运算 (2)1.3MATLAB程序设计 (7)第二章 MATLAB计算结果可视化和确知信号分析 (13)2.1计算结果可视化 (13)2.2确知信号分析 (17)第三章随机信号与数字基带仿真 (24)3.1基本原理和实现示例 (24)3.2蒙特卡罗算法 (31)第四章模拟调制MATLAB实现 (35)4.1模拟调制 (35)4.2AM调制解调的MATLAB实现 (36)第五章模拟信号的数字传输 (45)5.1脉冲编码调制 (45)5.2低通抽样定理 (45)5.3均匀量化原理 (46)5.4非均匀量化 (48)第六章数字频带传输系统 (52)6.1数字频带传输原理 (52)6.2信道加性高斯白噪声功率的讨论 (53)6.3仿真分析 (54)第七章通信系统仿真综合实验 (68)7.1基本原理 (68)7.2实验内容 (68)第一章 MALTAB基础知识本章目标●了解MATLAB 程序设计语言的基本特点,熟悉MATLAB软件运行环境●掌握创建、保存、打开m文件及函数的方法●掌握变量等有关概念,具备初步的将一般数学问题转化为对应的计算机模型并进行处理的能力1.1 MATLAB基础知识1.1.1 MATLAB程序设计语言简介MATLAB,Matrix Laboratory的缩写,是由MathWorks公司开发的一套用于科学工程计算的可视化高性能语言,具有强大的矩阵运算能力。
与大家常用的Fortran和C等高级语言相比,MATLAB的语法规则更简单,更贴近人的思维方方式,被称为“草稿纸式的语言”。
MATLAB软件主要由主包、仿真系统(simulink)和工具箱(toolbox)三大部分组成。
1.1.2 MATLAB界面及帮助MATLAB基本界面如图1-1所示,命令窗口包含标题栏、菜单栏、工具栏、命令行区、状态栏、垂直和水平波动条等区域。
MATLAB实验指导

MATLAB基础教程实验指导书实验一:Desktop操作桌面基础一、实验目的及要求1、熟悉MATLAB系统的安装流程,掌握MATLAB的启动和退出。
2、掌握MATLAB系统的各命令窗口的功能,熟悉常用选项和工具栏的功能和用途。
3、熟悉简单程序的输入、运行、调试及结果的显示过程。
二、实验内容1、认识MATLAB集成环境:熟悉个操作窗口的功能和用途。
掌握File(文件)、Edit(编辑)、View(显示)、Web(网络)、Window(窗口)和Help(帮助) 等菜单命令的使用。
2、启动和退出MATLAB(1)启动MATLAB的M文件。
在启动MATLAB时,系统可自动执行主M文件matlabrc.m,在matlabrc.m的末尾还会检测是否存在startup.m,如存在则会自动执行它。
在网络系统中,matlabrc.m保留给系统管理员,而各个用户可利用startup.m进行初始设置。
(2)、终止或退出MATLAB。
quit命令可终止MATLAB,但不保存工作空间的内容。
为保存工作空间的内容,可使用save命令。
1、利用save、load命令,保存和恢复工作空间。
用clear命令可清空工作空间。
(1)、工作空间中的变量可以用save命令存储到磁盘文件中。
(2)、用load命令可将变量从磁盘文件读入MATLAB的工作空间。
(3)、用clear命令可清除工作空间中现存的变量。
4、MATLAB的所有图形工具窗体都可以嵌入MATLAB窗体(Dock),也可以从MATLAB窗体中弹出(Undock),例如在MATLAB默认的图形窗体环境下,单击命令行窗体左上角按钮,就可以将MATLAB命令行窗体弹出。
要求分别将命令行窗体(Command Window)、命令行历史窗体(Command History)、当前路径查看器(Current Directory)、工作空间浏览器(Workspace Browser)、帮助(Help)、MATLAB性能剖析工具(Profiler) 从MATLAB窗体中弹出和嵌入MATLAB窗体(Dock)。
matlab及应用实验指导书08.9

data=[3 9 45 6; 7 16 -1 5] for n=data x=n(1)-n(2) end
(3)For 循环可按需要嵌套。
for n=1:5 for m=1:5 A(n,m)=n^2+m^2 end disp(n) end x=zeros(1,10); for n=1:10 x(n)=sin(n*pi/10); end
x=0:0.1:2*pi; y=sin(x); x1 =0:0.1:pi/2; y1= sin(x1); plot(x,y,'-r') hold on fill([x1,pi/2],[y1,0],'b')
将上面最后一句分别改为 fill(x1,y1,’b’),情况如何变化。
(二) 三维曲线图
格式 plot3(X,Y,Z,S)
x=linspace(0,2*pi,30); y=sin(x);plot(x,y)
(3)绘制 y=sin(x)图形
x=0:0.1:2*pi; y=sin(x); plot(x,y)
可以给图形加标记,格栅线
x =0:0.1:2*pi; y=sin(x); plot(x,y,'r-') title('正弦曲线') xlabel('自变量 x') ylabel('函数 y=sinx') text(5.5,0,' y=sinx') grid
1
实验一 熟悉 MATLAB 环境
一、实验目的 1、熟悉 MATLAB 主界面,并学会简单的菜单操作; 2、学会简单的矩阵输入与运算符; 3、掌握部分绘图函数。
二、实验原理 MATLAB 是以复杂矩阵作为基本编程单元的一种程序设计语言。它提供了各
MATLAB程序设计实验指导书

MATLAB程序设计实验指导书MATLAB是集数值计算、符号运算及图形处理等强大功能于一体的科学计算语言。
作为强大的科学计算平台,它几乎能满足所有的计算需求。
在美国及其他发达国家的理工科院校里,MATLAB已经作为一门必修的课程;在科研院所、大型公司或企业的工程计算部门,MATLAB也是最普遍的计算工具之一。
有鉴于此,我院开设了《MATLAB程序设计》这门课程,它需要一定的理论基础,同时又具有很强的实践性。
如何加强理论课程的学习、加深学生对本课程中的基本理论知识及基本方法的理解,如何培养学生实践动手能力是教学的当务之急。
而MATLAB程序设计实验课程就是一种重要的教学手段和途径。
实验将MATLAB程序设计的基本方法灵活地运用在数学、电路等课程中,重点突出,内容丰富。
同时,注重理论分析与实际动手相结合,以理论指导实践,以实践验证基本原理,旨在提高学生分析问题、解决问题的能力及动手能力,使学生进一步巩固基本理论知识,建立比较全面的MATLAB程序设计的概念。
实验注意事项1、实验系统接通电源前请确保电源插座接地良好。
2、完成实验后请确保关闭电脑电源及插座电源。
实验一 矩阵及其运算一、实验目的1、熟悉MATLAB 工作环境2、掌握矩阵和数组的创建、寻访和运算 二、实验内容验证欧姆定律:iur ,其中i u r , ,分别是电阻(欧姆)、电压(伏特)、电流(安培)。
已知u=[0.89, 1.20, 3.09, 4.27, 3.62, 7.71, 8.99, 7.92, 9.70, 10.41],i=[0.028, 0.040, 0.100, 0.145, 0.118, 0.258, 0.299, 0.257, 0.308, 0.345]。
三、实验器材PC 机 (装有 MA TLAB 软件 ) 1台 四、实验原理 4.1 Desktop 简介MATLAB R2006a 版的Desktop 操作桌面,是一个高度集成的MATLAB 工作界面。
matlab实验书

MATLAB程序设计语言实验教学大纲(实验课程)◆课程编号:131089◆课程英文名称:Experiment of MATLAB Language◆课程类型:☐通识通修☐通识通选☐学科必修☐学科选修☐跨学科选修☐专业核心☑专业选修(学术研究)☐专业选修(就业创业)◆适用年级专业(学科类):三年级通信工程、电子信息工程、生物医学工程◆先修课程:C语言程序设计◆总学分:0.5◆总学时:18一、课程简介与教学目标《MATLAB程序设计语言实验》是配合电子信息工程和通信工程专业的专业选修课——《MATLAB程序设计语言》而开设的实验课程。
上机实验操作是十分重要的环节,只有通过上机实习,才能真正领会仿真技术的实现方法和MATLAB软件的强大功能,才能更好地应用于今后从事的生产和研究工作中。
二、教学方式与方法采用以上机练习为主的教学方式,通过讲解实验重点及其中包含的理论知识引导学生获得正确的实验和理论思路,从而成为理论课的有益补充,使理论和实践相结合。
三、教学重点与难点(一)教学重点教学重点是MATLAB软件的基本操作方法、MATLAB进行科学计算、图形绘制以及MATLAB的应用领域和GUI的界面设计方法。
(二)教学难点教学难点在于灵活运用各种MATLAB的程序设计方法以及调试。
四、学时分配计划五、教材与教学参考书(一)教材自编MATLAB程序设计语言实验指导书(二)教学参考书1.John G.Proakis 等著,刘树棠译.现代通信系统(MATLAB 版)(第二版) 电子工业出版社2.郭文斌,桑林.通信原理—基于MATLAB 的计算机仿真 北京邮电大学出版社六、课程考核与成绩评定【考核类型】☐ 考试 ☑ 考查【考核方式】☐ 开卷(Open-Book ) ☐ 闭卷(Close-Book ) ☐ 项目报告/论文☑ 其它: 上机 (填写具体考核方式)【成绩评定】平时成绩占(60-70)%,考试成绩占(30-40)%七、课程内容概述实验一MATLAB 基本操作(一)教学要求1、了解MATLAB 软件的使用方法以及系统组成2、掌握MATLAB 的工作空间、搜索路径以及一些常用的命令3、掌握表达式的构成4、掌握矩阵的各种输入方法、逻辑运算符和关系运算符以及矩阵的操作方法 (二)知识点提示主要知识点:矩阵的操作符以及各种操作方法 重点:矩阵输入的各种方法、各种矩阵运算 难点:矩阵的操作以及各种基本数学函数 (三)教学内容1.1 建立工作目录MYBIN 和MYDATA 。
控制系统MATLAB仿真实验指导书

2.4 MATLAB
下面的实验中,我们将较为详细地学习使用MATLAB的语言基础和控制系统仿真,但是MATLAB的内容及其丰富,在学习和使用中,可以利用MATLAB的联机帮助功能。
MATLAB的联机帮助既可以由help命令来直接获得,又可以由MATLAB图形界面下的Help菜单来查询,还可以用lookfor命令查询有关的关键词:
r
绿色
g
蓝色
b
白色
w
无色
i
参见plot的帮助文件。
7.自动绘图算法
在MATLAB中,图形是自动定标的。在另一幅图形画出之前,这幅图形作为现行图将保持不变,但是在另一幅图形画出后,原图形将被删除,坐标轴自动地重新定标。
8.手工坐标定标
如果需要在下列语句指定的范围内绘制曲线:
V=[x-min x-max y-min y-max]
>>help plot
>>lookfor plot
3.1
一、实验目的
1.学习了解MATLAB语言环境;
2.练习MATLAB命令的基本操作;
3.练习m文件的基本操作。
二、实验内容
1. 学习了解MATLAB语言环境
(1)MATLAB语言操作界面
开机双击相应图标即可进入MATLAB命令窗口,如图1.1所示。在命令提示符位置键入命令,完成下述练习。
图1.1MATLAB窗口
(2)练习DOS相似命令
MATLAB语言与DOS操作系统有如下相似的命令,在操作界面上练习这些命令。
dirdir('c:\windows')
typetypeexpm.m
《控制工程基础》实验指导书(8学时)

《控制工程基础》实验指导书机械与车辆学院2013实验一matlab软件使用一、实验目的1.掌握MATLAB软件使用的基本方法;2.熟悉MATLAB的数据表示、基本运算和程序控制语句;3.熟悉MATLAB程序设计的基本方法。
4.学习用MATLAB创建控制系统模型。
二、实验原理1.MATLAB的基本知识MATLAB是矩阵实验室(Matrix Laboratory)之意。
MATLAB具有卓越的数值计算能力,具有专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学,与工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多。
当MATLAB 程序启动时,一个叫做MATLAB 桌面的窗口出现了。
默认的MATLAB 桌面结构如下图所示。
在MATLAB 集成开发环境下,它集成了管理文件、变量和用程序的许多编程工具。
在MATLAB 桌面上可以得到和访问的窗口主要有:命令窗口(The Command Window):在命令窗口中,用户可以在命令行提示符(>>)后输入一系列的命令,回车之后执行这些命令,执行的命令也是在这个窗口中实现的。
命令历史窗口(The Command History Window):用于记录用户在命令窗口(The Command Windows),其顺序是按逆序排列的。
即最早的命令在排在最下面,最后的命令排在最上面。
这些命令会一直存在下去,直到它被人为删除。
双击这些命令可使它再次执行。
要在历史命令窗口删除一个或多个命令,可以先选择,然后单击右键,这时就有一个弹出菜单出现,选择Delete Section。
任务就完成了。
工作台窗口(Workspace):工作空间是MATLAB用于存储各种变量和结果的内存空间。
在该窗口中显示工作空间中所有变量的名称、大小、字节数和变量类型说明,可对变量进行观察、编辑、保存和删除。
1_7787837_湖北汽车工业学院《MATLAB及应用》实验指导书

试用一个二维矩阵 STU 表示上述数据,并请计算出下列各数值: (1) 汽车系在 2002~2006 年之间的每年平均新生、毕业生人数。 (2) 5 年来汽车系共有多少毕业生? (3) 在哪几年,新生数目比毕业生多? (4) 5 年来每年的毕业生对新生的比例平均值为何?
STU=[2001,102,85;2003,120,100;2004,98,94;2005,105,97;2006,121,110 ]; sumg=sum(STU) r=(STU(:,2)>STU(:,3)) S=STU(:,3)./STU(:,2) aver=sum(S)/5 sumg = 10019 546 486 r = 1
二、 实验内容(任选 6 题)
1. 利用 rand 等函数产生下列矩阵:产生一个均匀分布在(-5,5)之间的随机阵(50×2), 要求显示精度为精确到小数点后一位(精度控制指令为 format)。
format S=-5+10.*rand(50,2) digits(2) a=vpa(s)
2.
T
在一个已知的测量矩阵 T(100×100)中,删除整行数据全为 0 的行,删除整列数据全 为 0 的列(判断某列元素是否为 0 方法:检查 T(: , i) .* (T(: , i))是否为 0)。
A=randn(10) B=(A+A')./2 eig(B) A = Columns 1 0.2112 -0.0494 -0.0328 0.3467 -0.4365 0.1076 0.2788 0.4743 0.2592 -1.2256 -1.0162 -2.2547 0.1527 -0.0935 2.6412 -1.1164 0.4963 -0.1108 1.4665 0.3620 Columns 9 -1.4463 -1.7908 -0.9651 -0.8737 -0.2257 -0.2851 1.0172 -0.1485 0.7372 -0.2668 B = Columns 1 0.2112 1.2959 0.1281 0.0852 -0.2321 -0.5427 -0.5429 -0.5745 -0.8550
电力拖动Matlab仿真实验指导书.docx

实验一转速反馈控制(单闭环)直流调速系统仿真一.实验目的1.研究直流电动机调速系统在转速反馈控制下的工作。
2.研究直流调速系统中速度调节器ASR的工作及其对系统响应特性的影响。
3.观察转速反馈直流调速系统在给定阶跃输入下的转速响应。
二、实验设备1.计算机;2.模拟实验装置系统;3.A/D & D/A 接口卡、扁平电缆(如下图所示)。
总线槽扁平电缆计算机A/D & D/A接口卡模拟实验装置系统三、实验原理直流电动机:额定电压UN220V ,额定电流IdN,55 A额定转速 n N1000r/ min,电动机电势系数 C e 0.192V min/ r 晶闸管整流装置输出电流可逆,装置的放大系数 K s =44,滞后时间常数 T s=0.00167s 。
电枢回路总电阻 R=1.0 Ω,电枢回路电磁时间常数 T1=0.00167s ,电力拖动系统机电时间常数 T m =0.075s 。
转速反馈系数α=0.01 V ·min/r。
对应额定转速时的给定电压 U n*10V图 1比例积分控制的直流调速系统的仿真框图四、实验内容1.仿真模型的建立进入 MATLAB,单击 MATLAB命令窗口工具栏中的SIMULINK图标,图2 SIMULINK 模块浏览器窗口(1)打开模型编辑窗口:通过单击 SIMULINK 工具栏中新模型的图标或选择 File →New→ Model 菜单项实现。
(2)复制相关模块:双击所需子模块库图标,则可打开它,以鼠标左键选中所需的子模块,拖入模型编辑窗口。
在本例中拖入模型编辑窗口的为:Source 组中的 Step 模块; Math Operations 组中的Sum模块和 Gain 模块; Continuous 组中的 Transfer Fcn模块和Integrator模块;Sinks 组中的Scope 模块;图 3模型编辑窗口(3)修改模块参数:双击模块图案,则出现关于该图案的对话框,通过修改对话框内容来设定模块的参数。
MATLAB与控制系统仿真实验指导书

《MATLAB与控制系统仿真》实验指导书(2011年第一版)西安邮电学院自动化学院2011年6月目录前言 (1)MATLAB语言实验项目 (3)实验一熟悉MATLAB集成环境与基础运算 (3)实验二 MATLAB的基本计算 (7)实验三 MATLAB图形系统 (9)实验四 MATLAB程序设计 (13)实验五 MATLAB函数文件 (15)实验六MATLAB数据处理与多项式计算 (17)实验七 SIMULINK仿真实验 (21)前言MATLAB 产品家族是美国 MathWorks公司开发的用于概念设计、算法开发、建模仿真、实时实现的理想的集成环境。
是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和SIMULINK两大部分。
MATLAB由于其完整的专业体系和先进的设计开发思路,使得 MATLAB 在多种领域都有广阔的应用空间,特别是在科学计算、建模仿真以及系统工程的设计开发上已经成为行业内的首选设计工具,它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB软件工具在自动化专业、测控技术与仪器和电气工程及其自动化等专业的本科生学习中,经常用来计算、仿真和设计,尤其是MATLAB软件的仿真功能,能使学生对所学知识有更加深入的理解和分析。
《MATLAB与控制系统仿真》课程,和《自动控制原理》、《现代控制理论》、《数字信号处理》、《电力电子技术》等重要的专业课程相互支撑、相辅相成,同时也有利于学生完成课程设计和毕业设计等实践教学环节。
Matlab基础及应用实验指导书

Matlab 基础及应用实验指导书实验一Matlab的基本操作实验目的:掌握Matlab的基本操作方法实验内容:1、使用变量与基本运算;2、向量与矩阵的处理;3、程序流程控制;4、M 文件编辑。
参照教材相关内容向量生成:x=linspace(0,2*pi);y=sin(x);plot(x,y)plot(x,sin(x),'o',x,cos(x),'x',x,sin(x)+cos(x),'*');数据导入1.菜单File—Import—Data,支持Excel、txt等;2.在Workspace窗口中双击数据表名,在Array Editor中将数据复制进去即可。
绘图1将数据表的各列数值分别赋予变量x、y、z等,格式如下:x=sheetname(:,1), y=sheetname(:,2), z=sheetname(:,3);2用命令plot(x,y,’XXXX’)绘制图形,单引号中的符号表示点线的属性,如线形、颜色、点的形状等,若用双对数坐标画图则命令为loglog(x,y);3在弹出的绘图界面中用菜单View—Property Editor编辑图形属性,如字体大小、数据点形状、横纵坐标名称、绘图区域颜色等;4绘图方法2:在数组编辑器上点击Plot Selection按钮,选择图形的类型即可;5绘图方法3:菜单File—New—Figure创建新的图形,在图形编辑器中Figure Palette面板点击2D Axes,点击右下角Add Data选择图表类型和坐标轴的数据源,度分布图将坐标轴由线形改为对数即可。
6hold on/off命令:叠绘命令,切换绘图的保持功能;7绘制双纵轴:7.1plotyy(x1,y1,x2,y2):分别用左/右侧y轴表示两条曲线;7.2plotyy(x1,y1,x2,y2,FUN):FUN是字符串格式,用来指定绘图的函数名,可以由多个。
控制工程(MATLAB)实验

《机电控制工程基础》实验指导书适用专业:机械设计制造及其自动化机械电子工程太原工业学院机械工程系实验一 系统时间响应分析实验课时数:2学时 实验性质:设计性实验 实验室名称:数字化实验室(机械工程系)一、实验项目设计内容及要求1. 实验目的本实验的内容牵涉到教材的第3、4、5章的内容。
本实验的主要目的是通过试验,能够使学生进一步理解和掌握系统时间响应分析的相关知识,同时也了解频率响应的特点及系统稳定性的充要条件。
2. 实验内容完成一阶、二阶和三阶系统在单位脉冲和单位阶跃输入信号以及正弦信号作用下的响应,求取二阶系统的性能指标,记录试验结果并对此进行分析。
3. 实验要求系统时间响应分析试验要求学生用MATLAB 软件的相应功能,编程实现一阶、二阶和三阶系统在几种典型输入信号(包括单位脉冲信号、单位阶跃信号、单位斜坡信号和正弦信号)作用下的响应,记录结果并进行分析处理:对一阶和二阶系统,要求用试验结果来分析系统特征参数对系统时间响应的影响;对二阶系统和三阶系统的相同输入信号对应的响应进行比较,得出结论。
4. 实验条件利用数字化实验室的计算机,根据MATLAB 软件的功能进行简单的编程来进行试验。
二、具体要求及实验过程1.系统的传递函数及其MATLAB 表达 (1)一阶系统 传递函数为:1)(+=Ts Ks G 传递函数的MATLAB 表达: num=[k];den=[T,1];G(s)=tf(num,den) (2)二阶系统传递函数为:2222)(nn nw s w s w s G ++=ξ传递函数的MATLAB 表达: num=[2n w ];den=[1,n w ξ2,2n w ];G(s)=tf(num,den)(3)任意的高阶系统传递函数为:nn n nmm m m a s a s a s a b s b s b s b s G ++++++++=----11101110)( 传递函数的MATLAB 表达:num=[m m b b b b ,,,110- ];den=[nn a a a a ,,,110- ];G(s)=tf(num,den) 若传递函数表示为:)())(()())(()(1010nm p s p s p s z s z s z s K s G ------=则传递函数的MATLAB 表达:z=[m z z z ,,,10 ];p=[n p p p ,,,10 ];K=[K];G(s)=zpk(z,p,k) 2.各种时间输入信号响应的表达(1)单位脉冲信号响应:[y,x]=impulse[sys,t] (2)单位阶跃信号响应:[y,x]=step[sys,t] (3)任意输入信号响应:[y,x]=lsim[sys,u,t]其中,y 为输出响应,x 为状态响应(可选);sys 为建立的模型;t 为仿真时间区段(可选)实验方案设计可参考教材相关内容,相应的M 程序可参考教材(杨叔子主编的《机械工程控制基础》第五版)提供的程序,在试验指导教师的辅导下掌握M 程序的内容和格式要求,并了解M 程序在MATLAB 软件中的加载和执行过程。
数值计算方法实验指导(Matlab版)讲解

《数值计算方法》实验指导(Matlab版)肇庆学院数学与统计学学院计算方法课程组《数值计算方法》实验1报告班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:1. 实验名称实验1 算法设计原则验证(之相近数相减、大数吃小数和简化计算步骤) 2. 实验题目(1) 取1610=z ,计算z z -+1和)1/(1z z ++,验证两个相近的数相减会造成有效数字的损失.(2) 按不同顺序求一个较大的数(123)与1000个较小的数(15310-⨯)的和,验证大数吃小数的现象.(3) 分别用直接法和秦九韶算法计算多项式n n n n a x a x a x a x P ++++=--1110)(在x =1.00037处的值.验证简化计算步骤能减少运算时间.对于第(3)题中的多项式P (x ),直接逐项计算需要2112)1(+=+++-+n n n 次乘法和n 次加法,使用秦九韶算法n n a x a x a x a x a x P ++++=-)))((()(1210则只需要n 次乘法和n 次加法. 3. 实验目的验证数值算法需遵循的若干规则. 4. 基础理论设计数值算法时,应避免两个相近的数相减、防止大数吃小数、简化计算步骤减少运算次数以减少运算时间并降低舍入误差的积累.两相近的数相减会损失有效数字的个数,用一个大数依次加小数,小数会被大数吃掉,乘法运算次数太多会增加运算时间. 5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab6. 实验过程(1) 直接计算并比较;(2) 法1:大数逐个加1000个小数,法2:先把1000个小数相加再与大数加; (3) 将由高次项到低次项的系数保存到数组A[n]中,其中n 为多项式次数.7. 结果与分析(1) 计算的z z -+1= ,)1/(1z z ++ .分析:(2) 123逐次加1000个6310-⨯的和是 ,先将1000个6310-⨯相加,再用这个和与123相加得.分析:(3) 计算次的多项式:直接计算的结果是,用时;用秦九韶算法计算的结果是,用时.分析:8. 附录:程序清单(1) 两个相近的数相减.%*************************************************************%* 程序名:ex1_1.m *%* 程序功能:验证两个相近的数相减会损失有效数字个数*%*************************************************************z=1e16;x,y======================================================================(2) 大数吃小数%*************************************************************%* 程序名:ex1_2.m *%* 程序功能:验证大数吃小数的现象. *%*************************************************************clc; % 清屏clear all; % 释放所有内存变量format long; % 按双精度显示浮点数z=123; % 大数t=3e-15; % 小数x=z; % 大数依次加小数% 重复1000次给x中加上ty=0; % 先累加小数% 重复1000次给y中加上ty=z + y; % 再加到大数x,y======================================================================(3) 秦九韶算法%*************************************************************%* 程序名:ex1_3.m *%* 程序功能:验证秦九韶算法可节省运行时间. *%*************************************************************clc; % 清屏clear all; % 释放所有内存变量format long; % 按双精度显示浮点数A=[8,4,-1,-3,6,5,3,2,1,3,2,-1,4,3,1,-2,4,6,8,9,50,-80,12,35,7,-6,42,5,6,23,74,65,55,80,78,77,98,56]; A(10001)=0; % 扩展到10001项,后面的都是分量0% A为多项式系数,从高次项到低次项x=1.00037;n=9000; % n为多项式次数% 直接计算begintime=clock; % 开始执行的时间% 求x的i次幂% 累加多项式的i次项endtime=clock; % 结束执行的时间time1=etime(endtime,begintime); % 运行时间disp('直接计算');disp(['p(',num2str(x),')=',num2str(p)]);disp([' 运行时间: ',num2str(time1),'秒']);% 秦九韶算法计算begintime=clock; % 开始执行的时间% 累加秦九韶算法中的一项endtime=clock; % 结束执行的时间time2=etime(endtime,begintime); % 运行时间disp(' ');disp('秦九韶算法计算');disp(['p(',num2str(x),')=',num2str(p)]);disp([' 运行时间: ',num2str(time2),'秒']);《数值计算方法》实验1报告班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:1. 实验名称实验1 算法设计原则验证(之数值稳定性) 2. 实验题目 计算定积分⎰==-1110,1,0,d n x e xI x nn ,分别用教材例1-7推导出的算法A 和B ,其中:算法A :⎩⎨⎧≈-=-6321.0101I nI I n n 算法B :⎪⎩⎪⎨⎧≈-=-0)1(1101I I nI n n 验证算法不稳定时误差会扩大.3. 实验目的验证数值算法需遵循的若干规则. 4. 基础理论设计数值算法时,应采用数值稳定性好的算法.数值稳定的算法,误差不会放大,甚至会缩小;而数值不稳定的算法会放大误差. 5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab6. 实验过程分别用数组IA[ ]和IB[ ]保存两种算法计算的结果. 7. 结果与分析8. 附录:程序清单%*************************************************************%* 程序名:ex1_4.m *%* 程序功能:验证数值稳定性算法可控制误差. *%*************************************************************clc; % 清屏clear all; % 释放所有内存变量format long; % 按双精度显示浮点数I=[0.63212055882856, 0.36787944117144, 0.26424111765712, 0.20727664702865, ...0.17089341188538, 0.14553294057308, 0.12680235656154, 0.11238350406938, ... 0.10093196744492, 0.09161229300662, 0.08387707010843];% 保留14位小数的精确值, …是Matlab中的续行符% 算法AIA(1) = 0.6321; % Matlab下标从1开始,所以要用IA(n+1)表示原问题中的I(n)% 算法Bdisp('n 算法A 算法B 精确值');for n=1:11fprintf('%2d %14.6f %14.6f %14.6f\n',n-1,IA(n),IB(n),I(n));end% n显示为2位整数, 其它显示为14位其中小数点后显示6位的小数《数值计算方法》实验1报告班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:1. 实验名称实验1 算法设计原则(除数绝对值不能太小) 2. 实验题目将线性方程组增广矩阵利用初等行变换可化为⎪⎪⎭⎫⎝⎛→-⎪⎪⎭⎫ ⎝⎛→-⎪⎪⎭⎫ ⎝⎛''0'0''02221112'12221121112222211121122121121b a b a r r b a b a a r r b a a b a a a a a a 由此可解得'/',/'22221111a b x a b x ==.分别解增广矩阵为161011212-⎛⎫ ⎪⎝⎭和162121011-⎛⎫⎪⎝⎭的方程组,验证除数绝对值远小于被除数绝对值的除法会导致结果失真. 3. 实验目的验证数值算法需遵循的若干规则. 4. 基础理论设计数值算法时,应避免除数绝对值远小于被除数绝对值的除法,否则绝对误差会被放大,使结果失真. 5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab6. 实验过程用二维数组A 和B 存放方程组的增广矩阵,利用题目所给初等行变换求解方程组. 7. 结果与分析第1种顺序的方程组的解为x = ,y = ;第2种顺序的方程组的解为x = ,y = . 分析:8. 附录:程序清单%************************************************************* %* 程 序 名:ex1_5.m * %* 程序功能:验证除数的绝对值太小可能会放大误差. * %*************************************************************clc;A=[1e-16, 1, 1; 2, 1, 2];B=[2, 1, 2; 1e-16, 1, 1]; % 增广矩阵% 方程组A% m = - a_{21}/a_{11} 是第2行加第1行的倍数% 消去a_{21}% m = - a_{12}/a_{22} 是第1行加第2行的倍数% 消去a_{12}, 系数矩阵成对角线% 未知数x1的值% 未知数x2的值disp(['方程组A的解: x1=',num2str(A(1,3)),', x2=',num2str(A(2,3))]);disp(' ');% 方程组B% m = - b_{21}/b_{11} 是第2行加第1行的倍数% 消去b_{21}% m = - b_{12}/b_{22} 是第1行加第2行的倍数% 消去b_{12}, 系数矩阵成对角线% 未知数x1的值% 未知数x2的值disp(['方程组B的解: x1=',num2str(B(1,3)),', x2=',num2str(B(2,3))]);《数值计算方法》实验2报告班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:1. 实验名称实验2 非线性方程的迭代解法(之简单迭代法) 2. 实验题目用简单迭代法求方程010423=-+x x 在区间[1,2]内的一个实根,取绝对误差限为410-.3. 实验目的掌握非线性方程的简单迭代法. 4. 基础理论简单迭代法:将方程0)(=x f 改写成等价形式)(x x ϕ=,从初值0x 开始,使用迭代公式)(1k k x x ϕ=+可以得到一个数列,若该数列收敛,则其极限即为原方程的解.取数列中适当的项可作为近似解. 5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程7. 结果与分析8. 附录:程序清单班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:1. 实验名称实验2 非线性方程的迭代解法(之Newton 迭代法) 2. 实验题目用Newton 迭代法求方程010423=-+x x 在区间[1,2]内的一个实根,取绝对误差限为410-.3. 实验目的掌握求解非线性方程的Newton 迭代法. 4. 基础理论Newton 迭代法:解方程0)(=x f 的Newton 迭代公式为)(')(1k k k k x f x f x x -=+.5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程7. 结果与分析8. 附录:程序清单班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:1. 实验名称实验2 非线性方程的迭代解法(之对分区间法) 2. 实验题目用对分区间法求方程310x x --=在区间[1, 1.5]内的一个实根,取绝对误差限为410-. 3. 实验目的掌握求解非线性方程的对分区间法. 4. 基础理论对分区间法:取[a ,b ]的中点p ,若f (p ) ≈ 0或b – a < ε,则p 为方程0)(=x f 的近似解; 若f (a ) f (p ) < 0,则说明根在区间取[a ,p ]中;否则,根在区间取[p ,b ]中.将新的有根区间记为 [a 1,b 1],对该区间不断重复上述步骤,即可得到方程的近似根. 5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程用宏定义函数f (x );为了循环方便,得到的新的有根区间始终用[a ,b ]表示; 由于新的有根区间可能仍以a 为左端点,这样会反复使用函数值f (a ),为减少运算次数,将这个函数值保存在一个变量fa 中;同样在判断新的有根区间时用到函数值f (p ),若新的有根区间以p 为左端点,则下一次用到的f (a )实际上就是现在的f (p ),为减少运算次数,将这个函数值保存在一个变量fp 中.算法的伪代码描述:Input :区间端点a ,b ;精度要求(即误差限)ε;函数f (x );最大对分次数N7. 结果与分析8. 附录:程序清单说明: 源程序中带有数字的空行,对应着算法描述中的行号%**********************************************************%* 程序名:Bisection.m *%* 程序功能:使用二分法求解非线性方程. *%**********************************************************f=inline('x^3-x-1'); % 定义函数f(x)a=input('有根区间左端点: a=');b=input('右端点:b=');epsilon=input('误差限:epsilona=');N=input('最大对分次数: N=');1 % 对分次数计数器n置12 % 左端点的函数值给变量fafprintf('\n k p f(p) a(k) f(a(k))');fprintf(' b(k) b-a\n');% 显示表头fprintf('%2d%36.6f%12.6f%12.6f%12.6f\n',0,a,fa,b,b-a);% 占2位其中0位小数显示步数0, 共12位其中小数6位显示各值3 % while n≤ N4 % 取区间中点p5 % 求p点函数值给变量fpfprintf('%2d%12.6f%12.6f',n,p,fp); % 输出迭代过程中的中点信息p和f(p)6 % 如果f(p)=0或b-a的一半小于误差限εfprintf('\n\n近似解为:%f\n',p); % 则输出近似根p (7)return; % 并结束程序(7)89 % 计数器加110 % 若f(a)与f(p)同号11 % 则取右半区间为新的求根区间, 即a取作p12 % 保存新区间左端点的函数值13 % 否则14 % 左半区间为新的求根区间, 即b取作p15fprintf('%12.6f%12.6f%12.6f%12.6f\n',a,fa,b,b-a);% 显示新区间端点及左端函数值、区间长度16fprintf('\n\n经过%d次迭代后未达到精度要求.\n',N); % 输出错误信息(行17)《数值计算方法》实验2报告班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:1. 实验名称实验2 非线性方程的迭代解法(之Aitken-Steffensen 加速法) 2. 实验题目用Aitken-Steffensen 加速法求方程010423=-+x x 在区间[1,2]内的一个实根,取绝对误差限为410-.3. 实验目的熟悉求解非线性方程的Aitken-Steffensen 加速法. 4. 基础理论将方程0)(=x f 改写成等价形式)(x x ϕ=,得到从初值0x 开始的迭代公式)(1k k x x ϕ=+后,基于迭代公式)(1k k x x ϕ=+的Aitken-Steffensen 加速法是通过“迭代-再迭代-加速”完成迭代的,具体过程为kk k k k k k k k k k x y z z y x x y z x y +---===+2)(),(),(21ϕϕ. 5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程为了验证Aitken-Steffensen 加速法可以把一些不收敛的迭代加速成迭代收敛,我们使用将方程组变形为31021x x -=,取迭代函数31021)(x x -=ϕ,并利用宏定义出迭代函数.由于不用保存迭代过程,所以用x0表示初值同时也存放前一步迭代的值,y 和z 是迭代过程中产生的y k 和z k ,x 存放新迭代的结果.算法的伪代码描述:Input :初值x 0;精度要求(即误差限)ε;迭代函数φ(x );最大迭代次数N7. 结果与分析8. 附录:程序清单%*************************************************************%* 程序名:Aitken_Steffensen.m *%* 程序功能:用Aitken-Steffensen加速法求方程. *%*************************************************************clc;clear all;phi=inline('0.5 * sqrt( 10 - x^3)'); % 迭代函数x0=input('初值: x0 = ');epsilon=input('误差限: epsilon=');N=input('最大迭代次数: N=');disp(' n 迭代中间值y(n-1) 再迭代结构z(n-1) 加速后的近似值x(n)');fprintf('%2d%54.6f\n',0,x0);% 占2位整数显示步数0, 为了对齐, 占54位小数6位显示x01 % n是计数器2 % while n<=Ny= 3 ; % 迭代z= 3 ; % 再迭代x= 3 ; % 加速% x0初值及前一步的近似值, y和z是中间变量, x是下一步的近似值fprintf('%2d%18.6f%18.6f%18.6f\n',n,y,z,x);% 显示中间值和迭代近似值6 % 如果与上一步近似解差的绝对值不超过误差限fprintf('\n\n 近似解x≈x(%d)≈%f\n',n,x);% 则输出近似根(7),可简略为: fprintf('\n\n近似解x=%f',x);return; % 并结束程序(7)8 % 相当于endif9 % 计数器加110 % 新近似值x作为下一次迭代的初值11fprintf('\n 迭代%d次还不满足误差要求.\n\n',N); %输出错误信息(12)《数值计算方法》实验2报告班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:1. 实验名称实验2 非线性方程的迭代解法(之Newton 下山法) 2. 实验题目用Newton 下山法求方程010423=-+x x 在区间[1,2]内的一个实根,取绝对误差限为410-.3. 实验目的熟悉非线性方程的Newton 下山法. 4. 基础理论Newton 下山法:Newton 下山法公式为)(')(1k k kk k x f x f x x λ-=+,使|)(||)(|1k k x f x f <+,其中10≤<k λ.5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程定义函数f(x)和df(x),其中df(x)是f(x)的导函数.每步迭代时先取下山因子为1,尝试迭代,判断尝试结果是否满足下山因子,若满足则作为这步的迭代结果;否则将下山因子减半,然后再尝试.为防止当前的x k 是极小值点,附近不会有满足下述条件的其它点,使尝试陷入死循环,同时计算机中能表示出的浮点数也有下界,因此我们设置了最大尝试次数.当超过最大尝试次数时,不再进行下山尝试.由于反复尝试迭代且要判断下山条件,所以f (x 0)和f ‘(x 0)会反复使用,为避免重复计算浪费运行时间,将这两个值分别保存在变量fx0和dfx0.而尝试产生的节点,判断下山条件时要用到它的函数值,若尝试成功,这个点会作为下一步的初值再使用,所以把该点的函数值也保存在变量fx 中.算法的伪代码描述:Input :初值x 0;精度要求(即误差限)ε;函数及其导函数f (x )和f’(x);最大迭代次数N ;K 下山尝试最大次数7. 结果与分析8. 附录:程序清单%************************************************************* %* 程序名:NewtonDownhill.m * %* 程序功能:用Newton下山法求解非线性方程. * %*************************************************************clc;clear all;f=inline('x^3-x-1'); % 函数f(x)df=inline('3*x^2-1'); % 函数f(x)的导函数x0=input('初值: x0 = ');epsilon=input('误差限: epsilon=');N=input('最大迭代次数: N=');K=input('最大下山尝试次数: K=');1 % 迭代次数计数器2 % 存x0点函数值fprintf('\n\n n x(n) f(x(n))\n'); % 显示表头fprintf('%2d%14.6f%14.6f\n',0,x0,fx0); % 2位整数显示0, 共14位小数6位显示x0和fx03 % while n ≤ Ndisp(''); % 换行显示下山尝试过程的表头disp(' 下山因子尝试x(n) 对应f(x(n)) 满足下山条件');disp('');4 % 存x0点导数值, 每次下山尝试不用重新计算if dfx0==0 % 导数为0不能迭代disp(‘无法进行Newton迭代’);return;endlambda=1.0; % 下山因子从1开始尝试k=1; % k下山尝试次数计数器while k<=K % 下山最多尝试K次% 下山公式fx=f(x); % 函数值fprintf('%22.6f%14.6f%14.6f',lambda,x,fx); % 显示尝试结果if (abs(fx)<abs(fx0)) % 判断是否满足下山条件fprintf(' 满足\n');break; % 是, 则退出下山尝试的循环elsefprintf(' 不满足\n');endlambda=lambda/2; % 不是, 则下山因子减半k=k+1; % 计数器加1endif k>Kfprintf('\n 下山条件无法满足, 迭代失败.\n\n');return;endfprintf('%2d%14.6f%14.6f\n',n,x,fx);% 2位整数显示步数n, 共14位小数6位显示下步迭代结果22 % 达到精度要求否fprintf('\n\n 方程的近似解为: x≈%f\n\n',x); % (23)return; % 达到, 则显示结果并结束程序(23) end % (24)% 用x0,fx0存放前一步的近似值和它的函数值, 进行循环迭代25262728fprintf('\n 迭代%d次还不满足误差要求.\n\n',N);《数值计算方法》实验2报告班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:1. 实验名称实验2 非线性方程的迭代解法(之弦截法) 2. 实验题目用弦截法求方程010423=-+x x 在区间[1,2]内的一个实根,取绝对误差限为410-. 3. 实验目的熟悉非线性方程的弦截法. 4. 基础理论将Newton 迭代法中的导数用差商代替,得到弦截法(或叫正割法)公式)()()(111k k k k k k k x f x f x f x x x x --+---=.5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程不保存迭代过程,所以始终以x 0和x 1分别存放x k -1和x k ,而x 存放新产生的迭代值x k +1,这样,下一次迭代时需要把上一步的x 1(即x k )赋值于x 0(做新的x k -1).这些点的函数值会重复用到,在迭代公式中也要用到,上一步的x 1作为下一步的x 0也会再一次用它的函数值,为减少重新计算该点函数值的运行时间,将x 1点的函数值保存在变量fx1中.算法的伪代码描述:Input :初值x 0,x 1;精度要求(即误差限)ε;函数f (x );最大迭代次数N7. 结果与分析8. 附录:程序清单%*************************************************************%* 程序名:SecantMethod.m *%* 程序功能:用弦截法求解非线性方程. *%*************************************************************clc;clear all;f=inline('2*x^3-5*x-1'); % 函数f(x)x0=input('第一初值: x0 = ');x1=input('第二初值: x1 = ');epsilon=input('误差限: epsilon=');N=input('最大迭代次数: N=');fprintf('\n n x(n)\n'); % 显示表头fprintf('%2d%14.6f\n', 0, x0); % 占2位显示步数0, 共14位其中小数6位显示x0 fprintf('%2d%14.6f\n', 1, x1); % 占2位显示步数1, 共14位其中小数6位显示x11 % 存x0点函数值2 % 存x1点函数值3 % 迭代计数器4 % while n ≤ N% 弦截法公式fprintf('%2d%14.6f\n', n, x); % 显示迭代过程6 % 达到精度要求否fprintf('\n\n 方程的近似解为: x≈%f\n\n', x);return; % 达到, 则显示结果并结束程序89 % 原x1做x0为前两步的近似值10 % 现x做x1为一两步的近似值11 % x0点函数值12 % 计算x1点函数值, 为下一次循环13 % 计数器加114fprintf('\n 迭代%d次还不满足误差要求.\n\n',N);《数值计算方法》实验3报告班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:1. 实验名称实验3 解线性方程组的直接法(之Gauss 消去法) 2. 实验题目用Gauss 消去法求解线性方程组⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎭⎫ ⎝⎛--000.3000.2000.1643.5072.1000.2623.4712.3000.1000.3000.2001.0321x x x . 3. 实验目的掌握解线性方程组的Gauss 消去法. 4. 基础理论Gauss 消去法是通过对增广矩阵的初等行变换,将方程组变成上三角方程组,然后通过回代,从后到前依次求出各未知数.Gauss 消去法的第k 步(1≤k≤n -1)消元:若0≠kk a ,则依次将增广矩阵第k 行的kkik a a /-倍加到第i 行(k+1≤i≤n ),将第k 列对角线下的元素都化成0. 5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程7. 结果与分析8. 附录:程序清单班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:1. 实验名称实验3 解线性方程组的直接法(之Gauss 列主元消去法) 2. 实验题目用Gauss 列主元消去法求解线性方程组⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎭⎫ ⎝⎛--000.3000.2000.1643.5072.1000.2623.4712.3000.1000.3000.2001.0321x x x . 3. 实验目的掌握解线性方程组的Gauss 列主元消去法. 4. 基础理论Gauss 列主元消去法也是通过对增广矩阵的初等行变换,将方程组变成上三角方程组,然后通过回代,从后到前依次求出各未知数.Gauss 列主元消去法的第k 步(1≤k≤n -1)消元:先在nk k k kk a a a ,,,,1 +中找绝对值最大的,将它所在的行与第k 行交换,然后将第k 行的kk ik a a /-倍加到第i 行(k+1≤i≤n ),将第k 列对角线下的元素都化成0. 5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程7. 结果与分析8. 附录:程序清单班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:1. 实验名称实验3 解线性方程组的直接法(之Doolittle 分解) 2. 实验题目对矩阵A 进行Doolittle 分解,其中⎪⎪⎪⎪⎪⎭⎫⎝⎛----=3101141101421126A .3. 实验目的掌握矩阵的Doolittle 分解. 4. 基础理论矩阵的Doolittle 分解是指将矩阵n n ij a A ⨯=)(可以分解为一个单位下三角矩阵和一个上三角矩阵的乘积.若设⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛=⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛=nn n n n n n n u u u u u u u u u u U l l ll l l L000000,1010010001333223221131211321323121则可依如下顺序公式计算⎪⎪⎩⎪⎪⎨⎧++=-=+=-=∑∑-=-=1111,,2,1,/)(,,1,,k t kk tk it ik ik k r rj kr kj kj nk k i u u l a l nk k j u l a u其中k = 1,2,…,n .5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程(1)按计算公式依次计算一行u 同时计算一列l ;(2)因为计算完u ij (或l ij )后,a ij 就不再使用,为节省存储空间,将计算的u ij (和l ij )仍存放在矩阵A 中的相应位置;(3)使用L 矩阵和U 矩阵时需要根据元素所在位置取固定值或A 中相应位置的值.L 对角线上的元素为1,上三角部分为0,下三角部分为A 中对应的元素;U 的下三角部分为0,上三角部分为A 中对应的元素.算法的伪代码描述:Input:阶数n;矩阵A7. 结果与分析8. 附录:程序清单%****************************************************% 程序名: Doolittle.m *% 程序功能: 矩阵LU分解中的Doolittle分解. *%****************************************************clc;clear all;n=4; % 矩阵阶数A=[6 2 1 -1;2 4 1 0; 1 1 4 -1; -1 0 -1 3]disp('A=');disp(A);% LU分解(Doolittle分解)for k=1:n% 计算矩阵U的元素u_{kj}% (可参照下面l_{ik}的公式填写)% 计算矩阵L的元素l_{ik}% L在A下三角, U在上三角(对角线为1) enddisp('分解结果:');disp('L=');for i=1:nfor j=1:nif i>j % 在下三角部分, 则取A对于的元素显示fprintf(' %8.4f',A(i,j));elseif i==j % 在对角线上, 则显示1fprintf(' %8d',1);else % 在上三角部分, 则显示0fprintf(' %8d',0);endendfprintf('\n'); % 换行enddisp('U=');for i=1:nfor j=1:nif i<=j % 在上三角部分或对角线上, 则取A对于的元素显示fprintf(' %8.4f',A(i,j));else % 在下三角部分, 则显示0fprintf(' %8d',0);endendfprintf('\n'); % 换行end《数值计算方法》实验3报告班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:1. 实验名称实验3 解线性方程组的直接法(之LU 分解法) 2. 实验题目用LU 分解(Doolittle 分解)法求解线性方程组⎪⎩⎪⎨⎧=++=++=++104615631552162321321321x x x x x x x x x 3. 实验目的熟悉解线性方程组LU 分解法. 4. 基础理论若将矩阵A 进行了Doolittle 分解,A = LU ,则解方程组b x A=可以分解求解两个三角方程组b y L =和y x U=.它们都可直接代入求解,其中b y L =的代入公式为∑-==-=11,,2,1,k j j kj k k n k y l b y而y x U=的代入公式为∑+=-=-=nk j kk j kjk k n n k u x uy x 11,,1,,/)( .5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程(1)Doolittle 分解过程依次计算一行u 同时计算一列l 完成,并将计算的u ij (和l ij )仍存放在矩阵A 中的相应位置;(2)求解方程组的代入公式中用到的u ij 和l ij 都直接在A 的相应位置取值即可. 算法的伪代码描述:Input :阶数n ;矩阵A ;常数项向量b5 for k ← 1 to n6 ∑+=-=-=nkjkkjkjk knnkuxuyx11,,1,,/)( 回代求解Ux=y7 endfor8 return x1,…,x n7. 结果与分析8. 附录:程序清单%****************************************************% 程序名: LinearSystemByLU.m *% 程序功能: 利用LU分解(Doolittle分解)解方程组. *%****************************************************clc;clear all;n=3; % 矩阵阶数A=[1 2 6; 2 5 15; 6 15 46];b=[1;3;10];% LU分解(Doolittle分解)for k=1:n% 计算矩阵U的元素u_{kj}% (可参照下面l_{ik}的公式填写)% 计算矩阵L的元素l_{ik}% L在A下三角, U在上三角(对角线为1)endfor k=1:n % 用代入法求解下三角方程组Ly=by(k)=b(k);3%∑-==-=11,,2,1,k j j kjk k n k y lb y3 3enddisp('方程组Ly=b 的解:y='); disp(y');for k=n:-1:1 % 回代求解上三角方程组Ux=y x(k)=y(k);6%∑+=-=-=nk j j kjk k n n k x uy x 11,,1,,66 6enddisp('原方程组的解:x='); disp(x');《数值计算方法》实验3报告班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:1. 实验名称实验3 解线性方程组的直接法(之Cholesky 分解) 2. 实验题目对矩阵A 进行Cholesky 分解,其中⎪⎪⎪⎪⎪⎭⎫⎝⎛----=3101141101421126A .3. 实验目的理解矩阵的Cholesky 分解. 4. 基础理论矩阵的Cholesky 分解是指将矩阵n n ij a A ⨯=)(可以分解为一个下三角矩阵L 和L 转置的乘积,即A =LL T ,其中L 各元素可依如下顺序公式计算⎪⎪⎩⎪⎪⎨⎧++=-=-=∑∑-=-=11112,,2,1,/)(k t kktk it ik ik k r kr kk kk nk k i l l l a l l a l其中k = 1,2,…,n .5. 实验环境操作系统:Windows xp ; 程序设计语言:VC++ 6. 实验过程(1)按计算公式依次先计算一列对角线上的元素l kk ,再计算这列其他元素l ik ,且对称位置的元素也取同一个值;(2)因为计算完l ij 后,a ij 就不再使用,为节省存储空间,将计算的l ij 仍存放在矩阵A 中的相应位置;(3)使用L 矩阵时需要根据元素所在位置取固定值或A 中相应位置的值.L 上三角部分为0,对角线和下三角部分为A 中对应的元素.算法的伪代码描述: Input :阶数n ;矩阵AOutput :矩阵L (合并存储在数组A 中)2∑-=-=112k r kr kk kk l a l3 for i ← k to n4 ∑-=-=11/)(k t kk tk it ik ik l l l a l计算结果存放在a ij 5 endfor 6 endfor 7return L输出L7. 结果与分析8. 附录:程序清单%************************************************************* %* 程 序 名:Cholesky.m * %* 程序功能:对称正定矩阵的Cholesky 分解. * %*************************************************************n=4; % 矩阵阶数 A=[6,2,1,-1; 2,4,1,0; 1,1,4,-1; -1,0,-1,3];disp('A ='); for i=1:n for j=1:nfprintf('%10.4f',A(i,j)); % 共占14位end fprintf('\n');% 一行结束换行end% Cholesky 分解for k=1:n% 计算对角线上的l _{kk}% 计算其他的l _{ik} % 和l _{ki}end % L在A下三角, L^T在上三角disp('分解结果:');disp('L=');for i=1:nfor j=1:nif i>=j % 在下三角部分或对角线上, 则取A对于的元素显示fprintf('%10.4f',A(i,j));else % 在上三角部分, 则显示0fprintf('%10d',0);endendfprintf('\n'); % 换行end《数值计算方法》实验3报告班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:1. 实验名称实验3 解线性方程组的直接法(之改进的Cholesky 分解) 2. 实验题目对矩阵A 进行改进的Cholesky 分解,其中⎪⎪⎪⎪⎪⎭⎫⎝⎛----=3101141101421126A .3. 实验目的理解矩阵改进的Cholesky 分解. 4. 基础理论矩阵的改进的Cholesky 分解是指将矩阵n n ij a A ⨯=)(可以分解为一个单位下三角矩阵L 和对角矩阵D 及L 转置的乘积,即A =LDL T ,其中L 和D 各元素可依如下顺序公式计算⎪⎪⎩⎪⎪⎨⎧++=-=-=∑∑-=-=11112,,2,1,/)(k t k kt it t ik ik k r kr r kk k nk k i d l l d a l l d a d其中k = 1,2,…,n .5. 实验环境操作系统:Windows xp ; 程序设计语言:VC++ 6. 实验过程(1)按计算公式依次先计算D 的一个元素d k ,再计算L 中这列的元素l ik ,且对称位置的元素也取同一个值;(2)因为计算完d k 和l ij 后,a kk 或a ij 就不再使用,为节省存储空间,将计算的a kk 或l ij仍存放在矩阵A 中的相应位置;(3)使用L 矩阵时需要根据元素所在位置取固定值或A 中相应位置的值.L 对角线和上三角部分为0,下三角部分为A 中对应的元素;D 对角线为A 中对应的元素,其余都是0.算法的伪代码描述: Input :阶数n ;矩阵AOutput :矩阵L (合并存储在数组A 中)2 ∑-=-=112k r kr r kk k l d a d3 for i ← k to n4 ∑-=-=11/)(k t k kt it t ik ik d l l d a l计算结果存放在a ij 5 endfor 6 endfor7return L, D输出L 和D7. 结果与分析8. 附录:程序清单%************************************************************* %* 程 序 名:ImprovedCholesky.m * %* 程序功能:对称正定矩阵的改进的Cholesky 分解. * %*************************************************************n=4; % 矩阵阶数 A=[6,2,1,-1; 2,4,1,0; 1,1,4,-1; -1,0,-1,3];disp('A ='); for i=1:n for j=1:nfprintf('%10.4f',A(i,j)); % 共占14位end fprintf('\n');% 一行结束换行end% Cholesky 分解 for k=1:n% 计算D 对角线上的u _{kk}% 计算L 的元素l _{ik} % 和L 转置的元素l _{ki}end % L在A下三角, D在对角线disp('分解结果:');disp('L=');for i=1:nfor j=1:nif i>j % 在下三角部分, 则取A对于的元素显示fprintf('%10.4f',A(i,j));elseif i==j % 在对角线上, 则显示1fprintf('%10d',1);else % 在上三角部分, 则显示0fprintf('%10d',0);endendfprintf('\n'); % 换行enddisp('D=');for i=1:nfor j=1:nif i==j % 在对角线上, 则取A对于的元素显示fprintf('%10.4f',A(i,j));else % 其余显示0fprintf('%10d',0);endendfprintf('\n'); % 换行end《数值计算方法》实验3报告班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:1. 实验名称实验3 解线性方程组的直接法(之追赶法) 2. 实验题目用追赶法求解线性方程组⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎭⎫ ⎝⎛-----101053001210023100124321x x x x 3. 实验目的熟悉解线性方程组的追赶法. 4. 基础理论对于系数矩阵为三对角矩阵的方程组,其Crout 分解可分解为⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛=⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛=------11111211122111122211n n nn n n n n n n t t t s a s a s a s b a c b a c b a c b A这样,解方程组可以由如下2步完成:“追”:,,,3,2,/)(,,/,/,1111111111n i s y a f y t a b s s c t s f y b s i i i i i i i i i i i i =-=-====-----其中:Tn f f ),,(1 为方程组的常数项,n t 没用;“赶”:.1,,2,1,,1 --=-==+n n i x t y x y x i i i i n n5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程在“追”的过程中,向量s 和y 都有n 个元素,t 只有n -1个元素,又1s 和1y 的计算公式与其它i s 和i y 不同,所以先单独计算1s 和1y ,然后在一个n -1次循环中,求其它i s 和i y 以及i t .由于在“追”的过程中,i b ,i c 和i f 在分别计算完对应的i s ,i t 和i y 后就不再使用,所以借用数组b ,c 和f 存储向量s ,t 和y ;同样在“赶”的过程中,i y 在计算完对应的i x 后就不再使用,所以再一次借用数组f 存储向量x .追赶法算法的伪代码描述:Input :阶数n ;三对角矩阵的三条对角线向量a ,b ,c ,常数项向量f Output :方程组的解x改进的追赶法算法的伪代码描述:Input :阶数n ;三对角矩阵的三条对角线向量a ,b ,c ,常数项向量f Output :方程组的解x7. 结果与分析8. 附录:程序清单%*************************************************************%* 程序名:ChaseAfter.m *%* 程序功能:用追赶法求解三对角线性方程组. *%*************************************************************clc;clear all;n=4;a=[0,-1,-1,-3];b=[2, 3, 2, 5];c=[-1, -2, -1, 0];f=[0, 1, 0, 1];% "追"s(1) = b(1);y(1) = f(1); % 先单独求s_1和y_1for k = 1 : n-1% 再求t_i(i=1,2,…,n-1)% s_i(i=2,3,…,n)% y_i(i=2,3,…,n)end% "赶"x(n) = y(n); % 先单独求x_nfor k = n-1 : -1 : 1% 再求x_i(i=n-1,n-2, (1)endx=x' % 输出解向量------------------------------------------------------------------------------------------------------------------- 改进的程序:%*************************************************************%* 程序名:ChaseAfter.m *%* 程序功能:用追赶法求解三对角线性方程组. *%*************************************************************clc;clear all;n=4;a=[0,-1,-1,-3];b=[2, 3, 2, 5];c=[-1, -2, -1, 0];f=[0, 1, 0, 1];% "追"% b(1)=b(1); % s_1仍在b_1中,不用重新计算y(1)=f(1)/b(1); % 先单独y_1for k=1:n-1% 再求t_i(i=1,2,…,n-1)% s_i(i=2,3,…,n)% y_i(i=2,3,…,n)end% "赶"% f(n)=f(n); % x_n等于y_n仍在f_n中for k=n-1:-1:1% 再求x_i(i=n-1,n-2, (1)endx=f' % 输出解向量班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:1. 实验名称实验4 解线性方程组的迭代法(之Jacobi 迭代) 2. 实验题目用Jacobi 迭代法求解线性方程组1231231232251223x x x x x x x x x +-=⎧⎪++=⎪⎨++=⎪⎪⎩任取3. 实验目的掌握解线性方程组的Jacobi 迭代法. 4. 基础理论将第i (n i ≤≤1)个方程i n in i i b x a x a x a =+++ 2211移项后得到等价方程ii n in i i i i i i i i i a x a x a x a x a b x /)(11,11,11------=++--便可构造出Jacobi 迭代公式,1,0,/)()()(11,)(11,)(11)1(=------=++--+k a x a x a x a x a b x ii k n in k i i i k i i i k i i k i . 5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程7. 结果与分析8. 附录:程序清单班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:1. 实验名称实验4 解线性方程组的迭代法(之Gauss-Seidel 迭代) 2. 实验题目用Gauss-Seidel 迭代法求解线性方程组⎪⎪⎩⎪⎪⎨⎧=+-=-+-=+-+-=+-15831110225311621043243214321321x x x x x x x x x x x x x x3. 实验目的掌握解线性方程组的Gauss-Seidel 迭代法. 4. 基础理论将第i (n i ≤≤1)个方程i n in i i b x a x a x a =+++ 2211移项后得到等价方程ii n in i i i i i i i i i a x a x a x a x a b x /)(11,11,11------=++--便可构造出Jacobi 迭代公式,1,0,/)()()(11,)(11,)(11)1(=-----=++--+k a x a x x a x a b x ii k n in k i i i k i i i k i i k i 和Gauss-Seidel 迭代公式,1,0,/)()()(11,)1(11,)1(11)1(=-----=+++--++k a x a x a x x a b x ii k n in k i i i k i i i k i i k i . 5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程7. 结果与分析8. 附录:程序清单。