第7章 MATLAB工程计算
本章内容 第四节 M文件及其语言基础 第五节 MATLAB线性方程组求解 第六节 数值分析
第一节 MATLAB概述 MATLAB是“矩阵实验室”(MATrix LABoratory)的缩写。 最初是Cleve More博士用FORTRAN语言开发的矩阵分析软件, 80年代初, Moler和John Little用C改写,不久他们成立MathWorks公司,84年推向市场,2000年推出了MATLAB 6.0版本。 MATLAB是应用最广泛的工程计算软件,发达国家理工类学生必须掌握的数学分析工具。
第四节 M文件及其语言基础 在命令窗口下,键入一行命令后,系统立即执行。这种方法程序可读性差且难以存储。对于复杂的问题,应编成程序文件。 由MatLab语句构成的文件称作M文件,它将m作为文件的扩展名,可以用任何文件编辑器进行调试。
一、建立主程序文件 选择File—>New->M-file,即进入M文件编辑器。 输入程序,完成后,在当前目录下保存文件名。 在命令窗口,输入文件名,即执行程序。
主程序格式特征 以%开始为注释 全局变量定义: Global 变量名1 变量名2 人机交互语句: x= input(‘n=’) % 将值付给x,屏幕显示’n=‘
二、常量
三、变量 变量命名规则 必须以字母为开头 可以由字母、数字和下划线混合组成,区分大小写 字符长度不大于31个
变量数据类型 MatLab有五种基本数据类型, 数值数组(double array) 字符串(char array) 符号对象(Symbolic object) 单元数组(Cell array) 结构(Structure)
四、关系与逻辑运算 < 小于 <= 小于等于 > 大于 >= 大于等于 = = 等于 ~ = 不等于 & 与 | 或 < 小于 <= 小于等于 > 大于 >= 大于等于 = = 等于 ~ = 不等于 & 与 | 或 ~ 非
五、矩阵运算符
六、数学函数 log10 log2 log round fix gcd lcm sin cos tan cot asin exp sqrt
七、程序控制语句 For 循环 基本格式为: for 循环变量=起始值:步长:终止值 循环体 end
While 循环 While 逻辑表达式 循环体 end
求从1+2+3+…+100之和 sum=0; i=1; while i<=100 sum=sum+I; i=i+1; End sum
条件转移语句 if 逻辑表达式 执行语句1 else 执行语句2 end
多重条件分支 Switch 语句 switch Case 值1 语句1 Case 值2 语句2 Otherwise 语句3 end
例题 编写一个M文件,画出分段函数所表示的曲面
第5节 线性方程式的求解
第5节 线性方程式的求解 MATLAB采用除法运算符“/”和“\”求解 X=A\b’ 表示求矩阵方程AX=B的解 X=A/b’ 表示求矩阵方程XA=B的解 对方程X=A\B,要求矩阵A和B有相同的行数, X和B有相同的列数,它的行数等于矩阵A的列数。 方程X=B/A同理
如果矩阵A不是方阵,其维数是m×n,则有: m<n 不定方程,寻求基本解,其中至多有m个非零元素。 针对不同的情况,matlab采用不同的算法。
一 、恰定方程组 恰定方程组由n个未知数的n个方程构成,方程有唯一的一组解。其形式: Ax=b 其中,A是方阵,b是一个列向量。 在线性代数中,最常用的方程解法有: 利用crammer公式求解 利用矩阵求逆法求解 利用gaussian消去法 利用lu法求解 在MATLAB中,直接采用表达式:x=A\b’
求解方程组 2x1-x2+3x3=3 4x1+2x2+5x3=4 2x1 +2x3=6 A=[2 -1 3;4 2 5; 2 0 2]; b=[3 4 6]’; X=A\b 结果: 7.6667 -1.6667 -4.6667
例
二、超定方程组 对于方程组Ax=b,A为n×m矩阵,如果A列满秩,且n>m,则方程没有精确解,此时方程组称为超定方程组。 线性超定方程经常遇到的问题是数据的曲线拟合。对于超定方程组,在MatLab中,利用左除命令x=A\b,来寻求它的最小二乘解,还可以用广义逆来求,即x=pinv(A),所得到的解不一定满足Ax=b,x只是最小二乘意义上的解。
求超定方程组 A=[2 -1 3;3 1 -5;4 -1 1;1 3 -13] b=[3 0 3 -6]’ x1=A\b %左除解方程 1.0000 2.0000 X2=pinv(A)*b %广义逆求解
A*x1-b %验证最小二乘解 显示: 1.0e-014 * -0.0888 -0.1332 说明x1不是方程Ax=b的精确解。
第六节 数值分析 Matlab提供符号运算,可进行多种数值分析,包括因式分解、求极限值、求微分、求导数等
符号变量 在使用符号运算工具箱之前,需要把一些变量声明为“符号变量”,以区别于常规的数值变量。 例如声明a,b,c,d 为符号变量: syms a b c d
一、因式分解 Factor函数 Syms x s=x^9-1 Factor(s)
二、求极限值 极限可以用limit函数求得 Limit(f,x,a) 求符号表达式f当x->a时的极限 Limit(f,a) 对系统默认变量且该变量x->a时的极限
例如 求下式中默认变量->2时的极限 Syms x Limit((x-2)/(x^2-4),2)
三、计算数值向量的数值差分 差分可以用diff()函数求出 语法:Y=diff(F,n,dim)
例如 F=[(1:6).^3] diff(F)
二、一维数值积分 Quad: 采用simpson法计算积分。 调用格式: q=quad(‘fun’,a,b,tol,trace,p1,p2,…) fun:被积函数, a,b:上限 下限 tol: 误差,缺省 0.0001 Trace:画图 p1,p2:传递参数
求数值积分 function y=funq(x) y=x^3+x^2+2 q=quad(‘funq’,-1,1,1e-4,1)