MATLAB(第四章和第八章)
- 格式:doc
- 大小:1.12 MB
- 文档页数:17
第4章MATLAB程序设计4.1、M文件介绍二、M文件的创建MATLAB菜单中创建m文件使用记事本创建m文件4.1、M文件介绍MATLAB自带的m文件编辑器三、M文件的类型、命令文件未修改前的旧文件!在调试程序时一定要注意这一点,修改之后先保存,再运4.2、程序的流程控制二、条件语句2.if-else-end语句三、分支语句4.2、程序的流程控制四、检测语句4.2、程序的流程控制五、其他语句第(1)种情况4.2、程序的流程控制五、其他语句第(2)种情况4.2、程序的流程控制五、其他语句第(3)种情况一、函数的定义5、几种定义出错的情况直接在命令窗口定义函数是错误的,应新建m文件然后再定义,要注意系统的出错提示,了解出错的原因。
EVAL是一个函数,把字符串当命令执行,格式如下EVAL(s):s为一个字符串,感兴趣的同学可以查help EVAL一、函数的定义5、几种定义出错的情况下面来看一下某个同学用MATLAB定义函数的过程。
一、函数的定义5、几种定义出错的情况下面来看一下某个同学用MATLAB定义函数的过程。
运行出错!系统提示:不能在脚本文件中定义函数。
原因:函数定义语句前可以有注释,但不能有其他命令。
5、几种定义出错的情况下面来看一下某个同学用MATLAB定义函数的过程。
删除第一行,另存为myplus1.m这里又犯了一个错误,函数文件名和函数不一致!一、函数的定义5、几种定义出错的情况下面来看一下某个同学用MATLAB定义函数的过程。
运行继续出错,因为刚才函数文件保存为myplus1.m,该同学灵机一动,试了一下c=myplus1(1,2)一、函数的定义5、几种定义出错的情况下面来看一下某个同学用MATLAB定义函数的过程。
这一次系统竟然没有报错!但这种做法在高版本的MATLAB仍会报错!4.3、M文件函数三、函数的参数4.3、M文件函数四、函数的调用4.4、程序的调试与优化三、断点调试4.4、程序的调试与优化三、断点调试3、断点调试为什么要输入两次return?因为在程序中设置了3个断点,刚才程序运行过程中碰到了2个,所以要输入两次return才能返回系统。
MATLAB编程指南第一章:MATLAB简介1.1 MATLAB的历史和发展1.2 MATLAB的功能和特点1.3 MATLAB的应用领域第二章:MATLAB环境搭建2.1 安装MATLAB软件2.2 MATLAB环境的基本组成2.3 MATLAB界面和工具栏介绍第三章:MATLAB基础知识3.1 MATLAB变量和数据类型3.2 MATLAB运算符和表达式3.3 MATLAB函数和脚本文件3.4 MATLAB编程规范第四章:矩阵和向量操作4.1 加载、创建和操作矩阵4.2 矩阵运算和元素操作4.3 向量操作和索引4.4 矩阵和向量函数第五章:MATLAB图形绘制 5.1 绘制二维图形5.2 绘制三维图形5.3 自定义图形属性5.4 图形输出和保存第六章:数据处理和分析6.1 数据输入和输出6.2 数据编辑和处理6.3 统计分析和建模6.4 数据可视化和结果解释第七章:符号计算与数值计算7.1 符号计算的基本概念7.2 符号计算和代数运算7.3 数值计算和近似方法7.4 符号计算和数值计算的结合第八章:MATLAB应用开发8.1 MATLAB GUI设计和界面编程 8.2 MATLAB应用程序开发8.3 MATLAB与其他编程语言的接口 8.4 MATLAB应用案例分析第九章:MATLAB并行计算9.1 并行计算的基本概念9.2 MATLAB并行计算工具箱9.3 并行计算的案例应用9.4 并行计算的优化和调试第十章:MATLAB调试与优化10.1 MATLAB调试工具的使用10.2 MATLAB代码调试技巧10.3 MATLAB优化方法和技巧10.4 MATLAB性能分析与改进第十一章:常见问题解答11.1 MATLAB常见错误和解决方法11.2 MATLAB使用技巧和经验分享11.3 MATLAB在线资源和社区11.4 MATLAB学习和进阶指南通过以上章节的内容,本文旨在提供一份全面的MATLAB编程指南,以帮助读者迅速入门和深入理解MATLAB编程。
第四章 线性代数问题的计算机求解一、实验内容:题目1.Jordan 矩阵是矩阵分析中一类很实用的矩阵,其一般形式为J= ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡--ααα 000010001-,例如J1= ⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡-----5000015000015000015000015 试利用diag()函数给出构造J1的语句。
【分析】该题为对角矩阵的问题。
对J 要利用diag()能够构造对角矩阵和次对角矩阵的性质。
J1只需对角矩阵和次对角矩阵相加即可。
这里需要对diag()函数的调用。
如A=diag(V)---已知向量生成对角矩阵,A=diag(V,k)—生成主对角线上第k 条对角线为V 的矩阵(其中k 可为正负)【解答】:输入如下语句:>>J1=diag([-5 -5 -5 -5 -5])+diag([1 1 1 1],1) 按ENTER 键,显示如下: J1=-5 1 0 0 0 0 -5 1 0 0 0 0 -5 1 0 0 0 0 -5 1 0 0 0 0 -5题目5.试求出Vandermonde 矩阵A=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡11111234234234234234ee e e d d d d c c c c b b b ba a a a ,的行列式,并以最简的形式显示结果。
【求解】该问题有两个知识点。
一个构造是Vandermonde 矩阵,另一个是求矩阵的行列式。
前者可以利用书中编写的面向符号矩阵的vander()函数构造出Vandermonde 矩阵。
需要用到V=vander(C)来调用。
后者可以用MATLAB 的det()函数来求解,他会自动采用解析解法求出其行列式的值。
需要注意运用det()的前提是符号矩阵,本题中A 已是符号矩阵,所以不用转换。
最后,用simple()函数简化一下即可。
【解答】:(1)构造矩阵:输入如下语句:>>syms a b c d e; A=vander([a b c d e])按ENTER 键,显示如下: A=[ a^4, a^3, a^2, a, 1] [ b^4, b^3, b^2, b, 1] [ c^4, c^3, c^2, c, 1] [ d^4, d^3, d^2, d, 1] [ e^4, e^3, e^2, e, 1](2)以最简单的形式输出行列式: 输入如下语句:>>det(A),simple(ans) 按ENTER 键,显示如下: ans=(c-d)*(b-d)*(b-c)*(a-d)*(a-c)*(a-b)*(-d+e)*(e-c)*(e-b)*(e-a)15. 试求出线性代数方程组X ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡6246551223177967=⎥⎦⎤⎢⎣⎡21301012,并验证解的正确性 【分析】:该题为线性方程的计算机求解问题。
需要考虑的是X=B*A -1,在MATLAB 中,需要调用inv(A)*B 函数,来得出方程的解。
同时需要用到逆运算。
【解答】:(1)输入如下语句:>> A=[7,6,9,7;7,1,3,2;2,1,5,5;6,4,2,6];B=[2,1,0,1;0,3,1,2];A=A',B=B'; x=inv(A)*B,e1=norm(A*x-B),x1=inv(sym(A))*B,e2=norm(double(A*x1-B)) 语句运行后,显示如下: x =-0.0057 0.4511 0.1034 -0.6207 -0.1609 -0.3678 0.2730 0.3204 e1 =1.5879e-015 x1 =[ -1/174, 157/348] [ 3/29, -18/29] [ -14/87, -32/87] [ 95/348, 223/696] e2 = 0(2)对X 进行逆运算,输入以下语句:>> x1=x1'; x1*A'语句运行后,显示如下:ans =[ 2, 1, 0, 1] [ 0, 3, 1, 2]二、实验心得这次是第三次上高等应用数学问题的MA TLAB 求解课程。
通过老师上课的细心讲解与演示,我对MA TLAB 又有了更深的了解。
原来MATLAB 在线性代数问题矩阵问题中也可以用的如此灵活简便。
同时我还学到了很多MA TLAB 的应用。
首先是矩阵的输入,我学会了如何用简单的函数语句直接输入零矩阵,幺矩阵,随机元素矩阵,对角元素矩阵,Hankel 矩阵,伴随矩阵等。
其调用的语句虽然看似简单,但还是要注意细节。
就拿对角元素矩阵说,调用语句A=diag(V,k)是生成主对角线上第k 条对角线为V 的矩阵,这里要深刻理解k 的含义,他可正可负,是对角线上第k 条对角线。
同时我们还要灵活掌握向量与矩阵的两两转化,不是只掌握一个就可以了。
我还学到了矩阵分析的基本概念及求解函数,比如如何做出行列式,迹,秩,范数,特征多项式,逆矩阵,广义逆矩阵,特征值与特征向量等。
以行列式为例,我会运用简单的d=det(A)函数来调用,直接求行列式。
但是要注意细节的是我们练习的题目中,是Hilbert 矩阵,我们要用sym()函数把他符号化,再用det()调用。
所以不符号化的话,就会遇到运行错误的问题。
我还会运用了矩阵的基本变换,知道了矩阵的正交分解,三角分解,对称矩阵的Cholesky 分解,一半矩阵的伴随分解,Jordan 变换等。
我了解了线性代数方程对唯一解、无穷解、无解等问题的处理,矩阵方程的据算机求解等。
就拿线性方程组的计算机求解来说,已AX=B 为例,其实很简单,只要输入A,B 矩阵,再运用X=inv(A)*B 函数就可以编写出了。
第八章 数据插值、函数逼近问题的计算机求解 一、实验内容:1 用t et t y tsin )(52-=生成一组较稀疏的数据,并用一维数据插值的方法对给出的数据进行曲线拟合,并将结果与理论曲线相比较。
【分析】:该题为一维差值问题。
该题可以利用函数interp1(),其调用格式为y=interp1(x,y,x1,f 方法)。
插值方法有很多,一般默认为可以选择’linear ’’线性插值,‘nearest ’对近点等值方法,’cubic ’三次Hermite 插值’spline ’ 三次分段样条插值。
本题运用最精确的三次分段样条插值进行求解,并用理论曲线与拟合的直线共同显示在一起进行比较。
【解答】:(1) 根据所给函数用MA TLAB 生成较稀疏的数据,输入如下语句: >>t=0:0.2:2;y=t.^2.*exp(-5*t).*sin(t); plot(t,y,'o') 显示图片如下:(2)调用一维插值函数interp1(),并用最精确的插样方法‘spline’(三次分段样条插值)。
输入如下语句:>>ezplot('t.^2.*exp(-5*t).*sin(t)',[0,2]); hold onx1=0:0.01:2; y1=interp1(t,y,x1,'spline');plot(x1,y1,'g')如图所示,曲线拟合与原曲线完全一样。
还可以用四种方式求解,输入如下数据:>> t1=0:0.02:1;y0=t1.^2.*exp(-5*t1).*sin(t1);y1=interp1(t,y,t1);y2=interp1(t,y,t1,'nearest');t1=0:0.02:1;y0=t1.^2.*exp(-5*t1).*sin(t1);y1=interp1(t,y,t1);y2=interp1(t,y,t1,'cubic');y3=interp1(t,y,t1,'spline'); y4=interp1(t,y,t1,'nearest');plot(t1,[y1',y2',y3',y4'],':',t,y,'o',t1,y0)e1=max(abs(y0(1:49)-y2(1:49))),e2=max(abs(y0-y3)),e3=max(abs(y0-y4)) 按ENTER 键,输出如下: e1 =1.4195e-004 e2 =1.0990e-004 e3 =0.0018并显示图片:比较e,由结果可知三次分段样条插值的精确度最好。
2 用)310sin()(2+=t t y 在(0; 3) 区间内生成一组较稀疏的数据,并用一维数据插值的方法对给出的数据进行曲线拟合,并将结果与理论曲线相比较【分析】:该题目和第一题一样,同样先生成数据,然后再用spline ’(三次分段样条插值)函数进行拟合。
该问题需要考虑步长的取值,步长的大小取决了其精确度。
【解答】:(1) 用MATLAB 生成一组较稀疏的数据,输入如下语句: >>0:0.2:3;y=sin(10*t.^2+3); plot(t,y,'o') 图片显示如下:(2)画出理论曲线,拟合一维数据插值,进行比较,输入如下语句:>>ezplot('sin(10*t^2+3)',[0,3])plot(t,y,'r')ezplot('sin(10*t^2+3)',[0,3]); hold onx1=0:0.001:3; y1=interp1(t,y,x1,'spline');plot(x1,y1,'r')由图可知拟合的曲面一开始与原函数吻合的很好,但是却到后面越来越偏离,所以需要再减小样本点的步长,输入如下语句:>> t=[0:0.1:1,1.1:0.01:3]; y=sin(10*t.^2+3); plot(t,y,'o')ezplot('sin(10*t^2+3)',[0,3]); hold onx1=0:0.001:3; y1=interp1(t,y,x1,'spline');plot(x1,y1,'r')显示图片如下:即与原函数完全吻合。
该题还可以用四种插值方法进行求解,输入如下数据:>> t1=0:0.01:3;>> y0=sin(10.*(t1.^2)+3);>> y1=interp1(t,y,t1);>> y2=interp1(t,y,t1,'cubic');>> y3=interp1(t,y,t1,'spline');>> y4=interp1(t,y,t1,'nearest');>> plot(t1,[y1',y2',y3',y4'],':',t,y,'o',t1,y0)>> e1=max(abs(y0(1:49)-y2(1:49))),e2=max(abs(y0-y3)),e3=max(abs(y0-y4)) 按ENTER键,显示如下:e1 =0.0023e2 =0.0282e3 =0.5748由图可知比较并比较e,由结果可知三次分段样条插值的精确度最好。