360 likes | 572 Views
第 7 章 MATLAB 工程计算. 本章内容. 第四节 M 文件及其语言基础 第五节 MATLAB 线性方程组求解 第六节 数值分析. 第一节 MATLAB 概述. MATLAB 是“矩阵实验室” (MATrix LABoratory) 的缩写。 最初是 Cleve More 博士用 FORTRAN 语言开发的矩阵分析软件, 80 年代初, Moler 和 John Little 用 C 改写,不久他们成立 MathWorks 公司, 84 年推向市场, 2000 年推出了 MATLAB 6.0 版本。
E N D
本章内容 • 第四节 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节 线性方程式的求解 • 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>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 %左除解方程 x1 = 1.0000 2.0000 1.0000 X2=pinv(A)*b %广义逆求解
A*x1-b %验证最小二乘解 显示: • 1.0e-014 * • -0.0888 • -0.0888 • -0.1332 • 0 • 说明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是向量;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)