数学实验与数学建模(matlab在建模中的应.doc
《数学实验与数学建模(matlab在建模中的应.doc》由会员分享,可在线阅读,更多相关《数学实验与数学建模(matlab在建模中的应.doc(29页珍藏版)》请在咨信网上搜索。
第六章 数学实验与数学建模 学习目标 1.掌握利用Matlab软件进行了相关的数学运算的方法. 2.以软件辅助来完成数学实验. 3.了解数学建模思想方法,能够对一些简单问题建立数学模型求解分析. 教学要求 能力模块 能力要求 相关知识点 运算能力 要求学生知道数学中运算所对应的相关 Matlab基本函数及其用法,并能够运用相 关函数完成数学的基本运算。 (1)数学的相关知识 (2)Matlab软件的语法 (3)相关函数的用法 实验能力 要求学生能够以软件作为辅助工具,按 要求完成相关实验 线性代数中的相关数学理 论与思想方法 建模能力 要求学生了解数学建模的思想方法,具备 一定的数学建模能力 一些基本的数学建模的 方法 Matlab是Mathworks公司推出的用于数值计算的交互式软件系统,具有强大的数值分析、矩阵运算、信号处理、图形显示和建模仿真功能. Matlab是“Matrix Laboratory”的缩写,意思是“矩阵实验室”,其强大的数据处理能力和丰富的工具箱使它的编程极为简单, 因此,它成为科学家和工程技术人员解决实际问题的首选计算工具软件。 本章的第一节主要介绍Matlab软件的简单使用方法,从第二节到第六节在讲解Matlab用于解决高等数学和线性代数中的相关计算的函数基础上, 通过一些简单的数学实验例题,让学生体会如何用Matlab辅助解决数学问题. 最后,通过一些与线性代数相关的数学建模实例,让学生掌握数学建模的简单方法,学会利用Matlab软件辅助解决实际问题,以培养学生良好的数学意识和数学素质. 6.1 Matlab环境及使用方法 6.1.1 Matlab窗口管理 Matlab启动后显示三个窗口,如图6.1所示。左上窗口为工作区间窗口,显示用户定义的变量及其属性类型及变量长度。工作区间窗口也可显示为当前目录窗口,显示Matlab所使用的当前目录及该目录下的全部文件名。左下窗口为历史窗口,显示每个工作周期(指Matlab启动至退出的工作时间间隔)在命令窗口输入的全部命令,这些命令还可重新获取应用。右侧窗口为Matlab命令窗口,可在里面输入相关运算命令,完成相应计算。三个窗口中的记录除非通过菜单下的清除操作,否则将一直保存。 图6.1 Matlab运行期间(即程序退出之前),除非调用Clear函数,否则Matlab会在内存中保存全部变量值,包括命令输入的变量以及执行程序文件所引入的变量。清除工作空间变量值也可以通过下拉菜单中的Clear Workspace命令实现。Clear函数可以清除内存中的所有变量。 Matlab命令窗口输入的信息会保持在窗口中,并可通过通过滚动条重新访问。一旦信息量超出其滚动内容容量,则最早输入的信息将会丢失。可以通过在命令窗口中输入clc命令来清除命令窗口中的内容,也可以通过下拉菜单中的Clear Command Window子菜单清除,但这个操作仅清除命令窗口中的内容,但不能删除变量,要删除变量,只能通过clear. 为在命令窗口中能够更加清晰地显示字母及数字,Matlab提供了format函数的几种功能。其中 format short e 是系统默认的设置,显示5位数字, format long e 显示格式转换为16位数字加3位指数位的显示格式. format compact 命令将剔除显示中多余的空行或空格. 这此属性值也可通过单击菜单的子菜单,弹出的设置窗口后选择Command Window项进行设置(如图6.2). 图6.2 使用Matlab过程中有两个有用的组合键“^c”(Crtl+c)用于终止程序或函数的执行,也可用于退出暂停的程序或函数;“^p”(Ctrl+p)用于将最近键入的信息显示在Matlab命令窗口中,按Enter键可再次执行该命令,连续按两次“^p”,可调用上两次的输入信息,以此类推. 6.1.2 Matlab的基本语法 Matlab允许用户创建的变量名不可超过63个字符,多余部分将被忽略掉.变量名要求以大写或小写字母开头,后面跟大小写字母,数字或下划线。字符间不允许有空格. 变量名区分大小写,例变量名A1与a1表示不同变量. 此外,不能使用希腊字母,或者上下标字符作为变量名,但可以拼写希腊字母,或在下标字符前加入下划线表示变量. 例如,可写为lamda_1. Matlab在命令窗口运行时,要求首先在“>>”提示符后定义一个或多个变量,并进行赋值,然后表达式才能够使用变量。赋值运算符为“=”,输入变量名和等号后,按Enter表示结束.例如要实现,则要在命令窗口中进行以下信息交互: >> a=2 用户输入 a = 系统响应 2 注:表达式后加分号(;)可省略系统响应信息的显示. Matlab允许在一行中输入多个表达式,表达式间以逗号或分号进行分隔,行尾以Enter键结束.用逗号分隔时系统会回显输入的值,如果用分号分隔表达式,不会输出响应信息. 例如按如下格式输入信息: >> a=2;b=2.5,c=3; 系统显示为: b = 2.5000 此时变量a和b的值不显示,但内存中存在. 标量的加、减、乘、除和幂运算分别用+,- ,*,/,^表示,默认的运算次序为:幂运算为最高,其次为乘除,最后为加减。同时在表达式中可用圆括号来确定运算次序。 例6-1计算当,时的值. 输入: >> a=2;b=3;c=6;t=(3/(1+2*a*b))^c 结果: t = 1.5103e-004 Matlab软件中包含了大量的函数,表6.1、表6.2、表6.3、表6.4给出了一些常用的函数及其功能说明. 表6.1 常用初等函数的Matlab表示 数学函数 Matlab表示 exp(x) sqrt(x) log(x) log10(x) abs(x) sign(x) 表6.2 三角函数和双曲函数的Matlab表示 三角函数 双曲函数 数学函数 原函数 反函数 原函数 反函数 正弦 sin(x) asin(x) sinh(x) asinh(x) 余弦 cos(x) acos(x) cosh(x) acosh(x) 正切 tan(x) atan(x) tanh(x) atanh(x) 余切 cot(x) acot(x) coth(x) acoth(x) 正割 sec(x) asec(x) sech(x) asech(x) 余割 csc(x) acsc(x) csch(x) acsch(x) 表6.3 Matlab复数运算函数 Matlab函数 功能 Complex(a,b) 表示复数 abs(z) 取复数的模 conj(z) 取复数的共扼复数 real(z) 取复数的实部 imag(z) 取复数的虚部 表6.4 小数转换为整数的Matlab函数 Matlab函数 功能 fix(x) 舍去小数部分 round(x) 四舍五入 ceil(x) 取上整 floor(x) 取下整 Matlab软件中还有一些内置的常量,如表6.5所示 表6.5 部分常量的Matlab表示 数学常量 Matlab表示 pi inf 虚数单位 i(或j) 一些特殊字符在Matlab中有特殊的功能,如表6.6所示 表6.6 特殊字符及其功能说明 符号 名称 功能 . 句号 (a)小数点 (b)向量或矩阵的一种操作类型。例如 , 逗号 (a)参数分隔符 (b)几个表达式在同一行时放在每个表达式之后 ; 分号 (a)放在表达式末尾不显示计算结果 (b)在创建矩阵的语句中指示一行的结束,例如: : 冒号 (a)创建向量表达式分隔符,例如: (b)对矩阵而言,表示第列所有元素; 表示第行所有元素 ( ) 圆括号 (a)矩阵中某一元素的下标指示,如表示矩阵行列的元素 (b)算术表达式分隔符,如 (c)函数参数分隔符,如sin(x) [ ] 方括号 创建一组数值、向量、矩阵或字符串(字母型) { } 大括号 创建单元矩阵或结构 % 百分号 注释分隔符. 用于指示注释的开始,MATLAB编译器会忽略其右边的内容。 但用于一对引号内部定义字符串时除外,如:a='pl=14% of the totle' ‘ 引号 (a)'Expression'表明Expression为字符串(字母型) (b)表示向量或矩阵的转置 空格 作为数据创建语句的分隔符,如; 或者作为字符串语句的一个字符 有了上述基本知识后,我们就可以利用Matlab进行一些简单的运算了. 例6-2 计算 输入: >> sin(pi/3)+asin(1)-exp(2)*log(7) 结果: ans = -11.9416 注:命令窗口作为计算器应用且未将计算结果分配给表达式时,Matlab默认将计算结果分配给变量名ans. 6.1.3 Matlab的编辑器 为了避免在命令窗口中输入多个表达式或重复输入一组表达式,且输入的表达式在执行完后能够进行修改, Matlab定义了程序文件:包含一组命令的文件,文件中每一命令行的执行都同在命令窗口里的执行一样.程序文件可由Matlab编辑器创建,编辑器的启动可由下拉菜单中子菜单下的来完成,窗口如图6.3所示. 图6.3 使用Matlab编辑器创建的程序文件,点击图6.3所示的Run图标,可执行文件. 但在执行前首先要保存,保存可用下拉菜单中的子菜单,文件扩展名“.m”将自动添加到文件名末尾. 文件名的命名规则与变量名的命名规则相同. 例6-3 编写一个m文件,用来计算下面的表达式 其中,,求 m文件如下: R=30; r=12; S=50; theta=asin((R-r)/S); L=2*S*cos(theta)+pi*(R+r)+2*theta*(R-r) 运算结果: >> L = 238.4998 Matlab编辑器的另外一个重要的功能是用来定义函数. 函数具有模块化、结构化和重用性的特点,是Matlab程序的重要组成部分,下面我们给出Matlab定义函数的方法. Matlab定义函数格式如下: Function [OutputVariables]=FunctionName(InputVariables) %Comments Expression(s) 其中,OutputVariables是输出变量,变量之间用逗号隔开;InputVariables是输入变量,变量之间用逗号隔开;Function是保留字;FunctionName是函数名称,命名规则与变量命名规则一致;函数文件可以存储在任何已定义或即将定义的路径下,但文件名必须是FunctionName.m; %Comments是函数程序的注释部分,为了增强程序的可读性;Expression(s)是实现函数功能的主体程序,由一行或多行Matlab语句组合完成,函数的定义是在Matlab的编辑器中完成的. 注:当函数只是为了实现某一特定功能,而不涉及参数传递时,OutputVariables或InputVariables是可以省略的. 例6-4 定义函数,并求当时的函数值. 定义函数程序如下(在编辑器中输入): function value1=hanshu1(x,y) value1=x^2+sin(x*y); 保存为hanshu1.m 在命令窗口中输入如下信息: >> hanshu1(5,pi/2) 结果: ans = 26 6.2 高等数学与Matlab Matlab的符号运算工具箱包含了微积分运算、解微分方程等几个方面的工具,本节我们主要介绍利用Matlab软件辅助解决高等数学中的相关计算问题. 6.2.1 求函数极限 求函数极限是高等数学中的重要计算,它在数学模型的分析和预测中起着重要的作用,Matlab提供了求极限的符号函数limit来完成这项工作,其调用格式和功能如表6.7所示. 表6.7 limit函数使用说明 格式 功能 l=limit(S,x,a) 求符号函数,当时的极限 l=limit(S,x,a,’right’) 求符号函数,当时的右极限 l=limit(S,x,a,’left’) 求符号函数,当时的左极限 注:对于符号函数S,也可以是普通的Matlab内置或自定义函数. 下面通过实例来说明这一函数用法: 例6-5 求 输入: >> syms x >> r_value=limit(exp(x),x,+inf), l_value=limit(exp(x),x,-inf) 结果: r_value = inf l_value = 0 注:“syms x”语句是用来创建符号变量. 例6-6 求 输入: >> syms x >> l_value=limit(exp(1/x),x,0,'left'),value=limit(exp(1/x),x,0) 结果: l_value = 0 value = NaN 注:NaN在Matlab里面表示数值(结果)不存在. 6.2.2 求导运算 求函数的导数和微分是高等数学中的基本计算,也是解决实际问题过程中的常用的一种方法,Matlab提供了专门求导数的符号函数diff,能够帮助解决求导数和微分的问题.diff的调用格式和功能如表6.8所示 表6.8 diff函数使用说明 格式 功能 d=diff(S,’x’) 求符号函数关于变量的一阶导数(偏导数) d=diff(S,’x’,n) 求符号函数关于变量的阶导数(偏导数) 注:对于符号函数S,也可以是普通的Matlab内置或自定义函数. 下面我们通过两个实例来说明这函数的用法: 例6-7 求导数,求偏导数 输入: >> df1=diff('sin(x)','x'),df2=diff('sin(x*y)','x'),... df3=diff('sin(x*y)','x',3) 结果: df1 = cos(x) df2 = cos(x*y)*y df3 = -cos(x*y)*y^3 或输入: >> syms x y >> df1=diff(sin(x),x),df2=diff(sin(x*y),x),... df3=diff(sin(x*y),x,3) 也可得到相同的结果,后面类似问题两种输入方法均可,不再赘述. 例6-8 求函数对变量的一阶、二阶偏导. 在例6-4定义的函数基础上,我们在命令窗口中输入如下信息: >> syms x y >> df1=diff(hanshu1(x,y),x),df2=diff(hanshu1(x,y),x,2) 结果: df1 = 2*x+cos(x*y)*y df2 = 2-sin(x*y)*y^2 多元函数的雅克比矩阵是一个非常重要的概念,多元函数的积分、矩阵微积分及坐标转换等都要用到它,在Matlab中用jacobian函数求雅克比矩阵,其调用格式如下: j=jacobian(F,V) 其中是函数向量,是自变量向量. 例6-9 计算函数向量关于自变量的雅克比矩阵. 在命令窗口中输入下列命令: >> syms x y z t; >> f=[x^2 sin(x*y*z) exp(t)]; >> v=[x y z t]; >> j=jacobian(f,v) 输出结果为: j = [ 2*x, 0, 0, 0] [ cos(x*y*z)*y*z, cos(x*y*z)*x*z, cos(x*y*z)*x*y, 0] [ 0, 0, 0, exp(t)] 注:关于向量、矩阵的表示及相关运算,我们将在下一节作详细介绍,这里主要介绍一下jacobian函数的用法. 6.2.3 积分运算 Matlab提供了两类计算积分的函数,一类是符号积分函数,一类是数值积分函数.下面我们先介绍符号积分函数int,其调用格式和功能如表6.9所示: 表6.9 int函数使用说明 格式 功能 int(F) 求符号表达式求关于自变量的不定积分 int(F,’s’) 求符号表达式求关于自变量的不定积分 int(F,a,b) 求符号表达式当自变量从到的定积分 int(F,’s’,a,b) 求符号表达式当自变量从到的定积分 下面我们通过实例来说明函数的用法: 例6-10 计算和 输入: >> syms x y >> f1=int(y*sin(x),x),f2= int(int(x*y,y,0,sqrt(1-x^2)),x,0,1) 结果: f1 = -y*cos(x) f2 = 1/8 下面我们来介绍数值积分函数quad,dblquad,triplequad的用法 表6.10 数值积分函数使用说明 格式 功能 quad(F,a,b) 从到计算符号函数的数值积分 dblquad(F,x1,x2,y1,y2) 计算符号函数在区域上的二重数值积分 triplequad(F,x1,x2,y1,y2,z1,z2) 计算符号函数在区域上的三重数值积分 注:关于上述三个函数更详细的用法请参考软件提供的帮助. 例6-11 计算和 输入: >>f1=dblquad('sqrt(y)*sin(x)',-1,1,0,2),... f2=triplequad('y*sin(x)+z*cos(x)',0,pi,0,1,-1,1) 结果: f1 = -4.4306e-018 f2 = 2.0000 6.2.4 微分方程的求解 Matlab提供了两类求解微分方程的函数,一类是求微分方程的符号解,一类是求微分方程的数值.本部分主要介绍利用dsolve求微分方程的符号解,其调用格式如表6.11. 表6.11 dsolve函数使用说明 格式 功能 dsolve(’equation’) 求方程equation通解,自变量默认为 dsolve(’equation’,’condition’) 求方程equation满足初始条件condition的特解,自变量默认为 dsolve(’equation’,’x’) 求方程equation通解,自变量为 dsolve(’equation’,’condition’,’x’) 求方程equation满足初始条件condition的特解,自变量为 说明:(1)equation代表常微分方程式,且用Dy表示,用D2y表示,以此类推. Condition为初始条件. (2)函数dsolve可用来求常微分方程、方程组的解. 例6-12 求方程的通解. 输入: >> dsolve('Dy=(y+x^3)/x') 结果: ans = -x^3+exp(1/x*t)*C1 这显然是个错误的结果,程序将看作是自变量,而是常量了. 正确输入如下: >>dsolve('Dy=(y+x^3)/x','x') 结果: ans = 1/2*x^3+x*C1 例6-13 求方程满足的特解. 输入: >>solve('D2y-2*Dy-3*y=3*x*exp(2*x)','y(0)=0,Dy(0)=1','x') 结果: ans = -1/3*exp(2*x)*(3*x+2)-1/3*exp(-x)+exp(3*x) 求常微分方程数值解方面,Matlab提供了比较丰富的函数,其中常用的为ode45和ode32,两个函数都运用了基本的龙格-库塔(Runge-Kutta)数值积分法的变形,其基本调用格式如下: [t,Y]=ode45(diffeq,[t0 tn],y0,options,arg1,arg2,...) 其中,第一个参数diffeq是一个m文件的名字,该文件用来计算微分议程的右端表达式;t0,tn定义了求解总区间,如果t0未知,则假设其为0;y0为初始条件;options为函数ode45参数;而参数arg1,arg2,...是传给用户自己定义的diffeq程序的. ode32用法与ode45相同. 求常微分方程的数值解问题现阶段我们遇到不是很多,所以在这里不作详细讲解,如果用到可查阅Matlab帮助文件. 6.3 线性代数与Matlab 前面我们的例子中的变量都是标量,而Matlab的强大之处在于它是以数组作为变量来进行运算的,这将使我们处理大量的数据变得十分方便,本节我们将重点介绍如何定义和使用Matlab中的矩阵变量来进行简单的计算. 6.3.1 向量的创建及对元素的操作 行向量在Matlab表示为:,列向量在Matlab中表示为,其中的可以是数值、字符串、预先定义的变量或表达式. 向量的创建可以是直接按格式输入元素,也可以用Matlab函数完成,这里面有两个常用的创建向量的命令分别是冒号(:)和linspace,其调用格式如下 (1) 其中表示向量的起始值,表示步长,表示向可能结束值,若向量的元素为个,则它们满足 . (2) =linspace() 它表示在区间上等距离的取个数,作为向量的值, 系统默认为100. 例如输入如下信息: >>x1=0.2:2:12,x2=linspace(0.2,12,6) 结果: x1 = 0.2000 2.2000 4.2000 6.2000 8.2000 10.2000 x2 = 0.2000 2.5600 4.9200 7.2800 9.6400 12.0000 对于向量及其元素的操作见表6.12所示 表6.12 向量及其元素操作 格式 功能 n=length(x) 返回向量元素个数 x’ 求向量的转置 x(i) 取向量的第个元素 x(i)=a 取向量的第个元素赋值为 x(end) 取向量的最后一个元素 y=x([i,j,k]) 取的第,元素构成新的向量 [xnew,index]=sort(x) xnew是升序排列后的向量,index是xnew中元素在中的位置构成的向量 index=find(condition) 将向量中满足condition条件的元素下标做成向量index [xmax,kmax]=max(x) xmax表示向量的最大值,kmax表示最大值位置 [xmin,kmin]=min(x) 功能与max类似 f(x) 对向量中每个元素求函数值 sum(x) 求向量的所有元素之和 cumsum(x) 返回以向量的元素的部分和数列为元素的向量 norm(x) 求向量的范数 mean(x) 求向量的平均值 std(x) 求向量的标准差 在对向量及其元素的操作过程中,上述命令总是组合使用. 例6-14 在区间上等间距取8个值,做成行向量,求 (1)求各点处正弦值,取出其中最大值,并指明位置 (2)取出所有大于0的正弦值,将其加上1后,做成一个新的列向量. 为一更好的完成上述工作,我们将其做成一个m文件,程序如下: x=linspace(0,2*pi,8) %取向量x y=sin(x) %对x中的每一个元素计算sin值,新向量赋值给向量y [ymax,kmax]=max(y) %求y中的最大值 index=find(y>0) %将y中大于0的元素下标做成一个向量 y1=y(index)+1 %利用下标向量index将y中小于0的元素取出加1 y1=y1’ %将行向量转置为列向量,重新赋值给y1 保存程序后运行,结果为: x = 0 0.8976 1.7952 2.6928 3.5904 4.4880 5.3856 6.2832 y = 0 0.7818 0.9749 0.4339 -0.4339 -0.9749 -0.7818 -0.0000 ymax = 0.9749 kmax = 3 index = 2 3 4 y1 = 1.7818 1.9749 1.4339 y1 = 1.7818 1.9749 1.4339 6.3.2 矩阵的创建及对元素的操作 一个3行4列的矩阵在Matlab表示为 =[a11,a12,a13,a14;a21,a22,a23,a24; a31,a32,a33,a34;a41,a42,a43,a44] 或 =[a11,a12,a13,a14;… a21,a22,a23,a24;… a31,a32,a33,a34;… a41,a42,a43,a44] 其中可以是数值、字符串、预先定义的变量或表达式,上述格式中的逗号可以用空格代替.简而言之,矩阵在Matlab中表示为用[ ]括起来的一组元素,同一行元素之间用逗号(,)或空隔分隔,行与行之间用分号(;)分隔. 矩阵的创建可以是直接按格式输入元素,也可以用Matlab函数完成,表6.13 给出了创建特殊矩阵的函数 表6.13 创建特殊矩阵函数 格式 功能 ones(m,n) 创建阶所有元素都是1的矩阵 zeros(m,n) 创建阶所有元素都是0的矩阵 diag(a) 创建阶对角阵,对角线上元素为向量的元素 eye(n) 创建阶单位矩阵 magic(n) 创建阶魔方阵 repmat(x,m,n) 创建阶所有元素都是的矩阵 [U,V]=meshgrid(s,t) 由两个行向量,构建两个维数相同的矩阵和 注:repmat参数中的可以是标量、向量或矩阵. 为了能更好的说明meshgrid的功能,我们给出下面一个简单的例子: 如果,则命令:[X,Y]=meshgrid(x,y)将返回的两个的矩阵: , 这个函数在做三维图形时会有十分有用. 向量可以看作是列(行)矩阵,而矩阵的每一列(行)也可以看作是一个向量,所以我们也可以通过向量的组合来创建矩阵,比如下面的命令就可以创建一个新的矩阵: 输入: >> A=[2:3:15;linspace(10,21,5);ones(1,5)] 结果: A = 2.0000 5.0000 8.0000 11.0000 14.0000 10.0000 12.7500 15.5000 18.2500 21.0000 1.0000 1.0000 1.0000 1.0000 1.0000 对于矩阵及其元素的操作见表6.14所示 表6.14 矩阵及其元素操作 格式 功能 A(i,j) 取出矩阵的第行与第列交叉点元素 A(i,j)=a 赋值操作 A(i,: ) 取出矩阵的第行所有元素,构成一个行向量 A( :,j) 取出矩阵的第列所有元素,构成一个列向量 A([i1,i2],[j1,j2,j3]) 取出矩阵的行和行,与列和列和列交叉点的元素,构成的一个子矩阵 sort(A) 按升序排列矩阵列元素 max(A) 求矩阵中每一列的最大值 min(A) 求矩阵中每一列的最小值 sum(A) 将矩阵的各列元素相加,返回一个长度等于列数的行向量 [m,n]=size(A) 返回矩阵的行数和列数 f(A) 对的每个元素求函数值 注:A(i,J=[]或A(:,j)=[],则表示删除第行或第列. 例6-15 给定矩阵,完成如下工作 (1)将矩阵的第4列全部赋值为0元素. (2)求矩阵的最大值. (3)取A的第1,3行和2,3列交叉点元素,取自然对数后,构成新的矩阵. 我们将其做成一个m文件,程序如下: A=[1,2,3,4;5,6,7,6;9,10,11,12]; %创建矩阵A A(:,4)=0 %A的第4列全部赋值为0 maxvalue=max(max(A)) %求矩阵A的最大值 B1=A([1,3],[2,3]) %B1为A的第1,3行,第2,4列元素构成的矩阵 B=log(B1) %B中的每个元素取自然对数 保存后,运行结果如下: A = 1 2 3 0 5 6 7 0 9 10 11 0 maxvalue = 11 B1 = 2 3 10 11 B = 0.6931 1.0986 2.3026 2.3979 6.3.3 矩阵的运算 矩阵的运算主要分成两类,矩阵的点运算和线性代数中的矩阵运算. 同时需要指明的是,因为向量可以看成是特殊的矩阵,所以本部分所讲的关于矩阵的各种运算,同样适用于向量. 下面我们分别将两类运算做一介绍. 在Matlab中,矩阵的点(.)运算是指对同阶矩阵中逐个元素进行的算术运算,分别为点乘(.*)、点除(./)和点幂(.^).下面我们以两个矩阵来分别说明其功能. 令,同时 则 这里需要说明的是对于点乘,如果且为标量,则点可以省略,即,类似的,如果且为标量,则;对于点除,如果且为标量,则点可以省略,即,但是如果且为标量,则点不可以省略,;对于点幂运算,不论是还是取标量,点都不可以省略,即和 . 例6-16 求在区间区间内,等距离取6个值时,表达式 的值. 其中,. M文件的程序代码如下: a=0.3;b=1.2;c=pi/3; x=linspace(0,2,6); y=exp(-a*x).*cos(b*x+c)./(x+c) 结果: y = 0.4775 0.0267 -0.1800 -0.2463 -0.2302 -0.1718 例6-17 利用向量元素操作函数中的sum和cumsum,求表达式 的值,及其部分和数列对应向量. 输入: >> n=1:5;… an=n.^n,…%计算级数一般项 s=sum(an),…%求表达式值 sn=cumsum(an)%求部分和 结果: an = 1 4 27 256 3125 s = 3413 sn = 1 5 32 288 3413 在线性代数中矩阵的运算包括:加、减、乘、转置、求逆等,其基础理论在前面都做详细的介绍,这里不再赘述。Matlab对于矩阵的这些运算都能够实现,表6.15给出相关函数及其使用说明. 表6.15 矩阵数学运算的函数 格式 功能 C=AB C表示矩阵与的和(差) C=A*B C表示矩阵左乘矩阵 det(A) 求方阵的行列式 inv(A)或A^(-1) 求矩阵的逆矩阵 [P,lamda]=eig(A) lamda返回的是矩阵的特征值,是特征值对应的单位特征向量构成的正交矩阵 rank(A) 确定矩阵线性无关的行或列的值(矩阵的秩) A’ 返回矩阵的转置 A^k 返回矩阵的次幂 trace(A) 返回矩阵的迹 poly(A) 返回的是矩阵的特征多项式(系数向量) rref(A) 将化成阶梯形行最简形式(与等价) orth(A) 将非奇异矩阵正交化规范化 flipud(A) 将矩阵按列旋转180º fliplr(A) 将矩阵按行旋转180º 注:如果矩阵和是行向量和列向量,则表示内积,也可以用C=dot(A,B)表示. 例6-18 化二次型用正交变换化为标准形,并写出变换矩阵. 因为二次型矩阵,所以先用Matlab求特征值和正交矩阵如下: >> A=[1 1 3;1 2 1;3 1 5];... [Q,lamda]=eig(A) 结果: Q = 0.8835 -0.0253 0.4677 -0.1667 -0.9501 0.2636 -0.4377 0.3108 0.8437 lamda = -0.6749 0 0 0 1.6994 0 0 0 6.9754 所以二次型的标准形为,变换矩阵为. 求的逆矩阵为: >> inv(Q) 结果为: ans = 0.8835 -0.1667 -0.4377 -0.0253 -0.9501 0.3108 0.4677 0.2636 0.8437 进一步我们可以验证正交变换的一个性质:. 同时,我们可得到 . 通过下面的命令,我们还可以验证正交矩阵将矩阵对角化为矩阵lamda: >> Q'*A*Q 其结果是矩阵lamda. 注:因为Matlab进行的是数值计算,所以给出的解为数值解,而我们在教材上计算得出的解基本上都是解析解,故两者之间有一些区别. 6.3.4 方程组求解 Matlab对于非齐次线性方程组的求解有如下两种方法: 法1:X=A\b 或 X=inv(A)*b 法2:C=[A,b] %写出增广矩阵 D=rref(C) %D的最后一列元素就是所求的解 例6-19 求方程组的解. 法1程序如下: 输入: >> A=[0 -1 -1 1;1 1 1 1;2 4 1 -2;3 1 -2 2];... b=[0;6;-1;3];... X=A\b 结果: X = 2.0000 -1.0000 3.0000 2.0000 法2程序如下: >> C=[A,b];D=rref(C)- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数学 实验 建模 matlab 中的
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【xrp****65】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【xrp****65】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【xrp****65】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【xrp****65】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文