




已阅读5页,还剩137页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Matlab语言及其在工程 领域中的应用,湘潭大学化工学院 韩路长(副教授、博士、硕士研究生导师),Tel:Email: ,参考教材:,实用化工计算机模拟Matlab在化学工程中的应用 黄华江 编著 化学工业出版社,教学计划,Introduction,Matlab =matrix laboratory. 基本数据单位:array 开发目的:最早作为矩阵实验室,用来提供与 LINPACK和 EISPACK矩阵软件接口的。逐渐发展成为具有通用科技计算、图形交互系统和程序设计语言的、国际公认的、最优秀的科技应用软件之一。,Matlab语言特点 1、高质量、高可靠性的数值计算能力 2、基于向量、矩阵和数组的高级程序设计语言 3、高级图形和可视化数据处理能力 4、广泛解决各学科专业领域内复杂问题的能力 5、拥有功能强大的工具箱(toolboxes),衰减振荡曲线,两液滴靠近过程夹持 液膜内压力的拉普拉斯方程:,6、语言简单、编程易、效率高 允许用户以数学形式的语言编写程序,帮助系统功能强大。Matlab程序文件是一个纯文本文件,程序易调试。 7、扩充能力强,可开发性强 可方便地与FORTRAN、C、C+等语言进行连接,和Maple有很好的接口,目前在科技和工程界上比较流行和著名的数学软件除了MATLAB外,还有三种软件:Maple,MathCAD以及Mathematica,Maple 是由waterloo大学开发的数学系统软件,不但具有精确的数值处理功能,而且具有无以伦比的符号计算功能。Maple 的符号计算能力还是MathCAD和MATLAB等软件的符号处理的核心。Maple提供了2000余种数学函数涉及范围包括:普通数学、高等数学、线性代数、数论、离散数学、图形学。,Application:,Math and computation Algorithm development Modeling, simulation, and prototyping Data analysis, exploration and visualization Scientific and engineering graphics Application development, including graphical user interface building,基本内容,Development System Basic Operations Data Types Data Input and Output Numerical Calculation Symbolic Math,Scripts and Functions Flow Control Graphic Visualization Debug Method Program Examples,1- Development System,Command Window,运用命令窗口去调入变量,运行函数和M-文件。,Command History,在控制窗的输入内容都被记录在 命令历史窗口中。在命令历史中,可以看到以前用过的函数,并且可以复制和执行选定行。,Start,提供了进入工具箱、演示和文件等的简单入口。,Desktop Tools,Current Directory,MATLAB文档的所有操作是以当前目录或者搜索路径作为参考点的。所需要运行的任何文档都必须在当前目录下或者搜索目录下完成。,Workspace,MATLAB工作空间(或工作区)包含内建MATLAB处理任务时以及储存在记忆体中的变量排列。你可以通过使用函数、运行M-文件、装载已存文件等方式增加变量到工作区。,Desktop Tools,Array Editor,在工作空间浏览器里双击一个变量后,会弹出一个数组编辑器。可以用这个数组编辑器来查看或者编辑在工作空间里的一维或者二维的数值矩阵,字符串和字符串的单元数组的直观表示。,EditorDebug,编辑器/调试器是用来生成和调试M-文件的,这些M-文件是为运行MATLAB函数所写的程序。编辑器/调试器为基本文字编辑和M文件的调试提供图形用户界面。,Desktop Tools,1- Development System,Desktop Tools and Development Environment,使用MATLAB的函数和文件的工具和设备。这些工具大部分是 图形用户界面。它包括MATLAB桌面和命令窗口,命令历史, 和用于查看帮助的浏览器,工作空间,文件和查找路径。,The MATLAB Mathematical Function Library,汇集了大量计算的算法,范围从初等函数如:求和,正弦,余弦和复数的算术运算,到复杂的高等函数如: 矩阵求逆,矩阵特征值,贝塞尔(Bessel)函数和快速傅立 叶变换等。,The MATLAB Language,consists of five main parts:,一种高级矩阵/数组语言,含有控制流语句,函数,数据结构, 输入/输出,和面向对象编程特征。它允许“小型编程”以迅速 创立快速抛弃型程序,以及“大型编程”以创立完整的大型复 杂应用程序。,Graphics,MATLAB制图系统。它包括高级别的二维、三维数据可视化,图像处理,动画,以及表现图形的命令。它还包括低级别的命令,不但能在MATLAB的应用中建立完整的图形用户界面,而且还能完全定制图形的外观。,2- Development System,The MATLAB External Interfaces/API,consists of five main parts:,编写与MATLAB相合的C或Fortran程序的程序库。它包括从 MATLAB中调用程序(动态链接),调用MATLAB为计算引 擎,和读写MAT-文件的设备。,MATLAB 通用命令,Matlab常用的窗口帮助命令,help 命令 直接输入 help,MATLAB 将列出所有的帮助主题,每个帮助主题对应于 MATLAB搜索路径中的一个目录; help 后加帮助主题,可获得指定帮助主题的帮助信息; help 后加函数名; help 后加命令名,将得到指定命令的用法;,联机帮助:点击工具条上的“?”按钮或者Help菜单中的Help选项 PDF帮助文档 网站资源:,demo 命令,基本矩阵演示窗口,MATLAB 演示窗口,helpwin 命令用于打开 MATLAB 的帮助文件窗,上机练习,( 1)以两种方式打开 MATLAB 工作窗口,进入MATLAB 7.1 的工作环境,并尝试用不同的方式退出。 ( 2)尝试、熟悉 MATLAB 7.1 的各栏菜单以及各个工具栏的功能。 ( 3)重新启动 MATLAB 7.1,进入 MATLAB 工作窗口,用 who 命令查看当前工作空间内有无变量及其值。 ( 4)绘制函数y=cos(5x+2)/sin(3x+1) 的图像,并求解当 x=2 时的函数值。,( 5)此时再次用 who 命令查看工作空间内的变量名及其值,与( 3)比较,同时用whos 命令查看变量,比较与 who 命令的不同。 ( 6)熟练掌握 MATLAB 的通用命令。 ( 7)练习并熟练掌握 MATLAB 的帮助命令,学会利用 MATLAB的帮助信息。 (8)用 lookfor 命令查找函数 cos 的信息,并与 help 命令查找的结果相比较,注意采用两种命令之间的差别。,2- Basic Operations,操作符,Basic Operations:,算术操作符: (乘方) (左除)(复共轭转置) . (元素对元素的运算),关系操作符:(等于) (不等于),逻辑操作符: (逻辑与) (逻辑或) (逻辑非)and(A,B) or(A,B) not(A) 通用计算函数:sum, max, min, mean, sqrt, exp, log,Coding basics:,空格(为机器辨认) 用作输入量与输入量之间的分隔符;数组元素分隔符。 , 用作要显示计算结果的指令与其后指令之间的分隔;用作输入量与输入量之间的分隔符;用作数组元素分隔符号。 . 数值表示中,用作小数点;用于运算符号前,构成“数组”运算符,2- Basic Operations,; 用于指令的“结尾”,抑制计算结果的显示;用作不显示计算结果指令与其后指令的分隔;用作数组的行间分隔符。 : 用以生成一维数值数组;用做单下标援时,表示全部元素构成的长列;用做多下标援引时,表示该维上的全部元素。,Coding basics:,% 由它“启首”的所有物理行部分被看作非执行注释。 字符串记述符。 ( ) 改变运算次序;在数组援引时用;函数指令输入变量列表时用。 输入数组时用;函数指令输出变量列表时用。 胞元数组记述符。,Coding basics:,_ 用作一个变量、函数或文件名中的连字符; 图形中被控下脚标前导符。 . 由三个以上连续黑点构成。它把其下的物理行看作该行的“逻辑”继续,以构成一个“较长”的完整指令。 放在函数名前,形成函数句柄;匿名函数前导符;放在目录名前,形成“用户对象”类目录。,Coding basics:,Variables:,MATLAB中的变量不需要对变量类型和维数的声明。当遇到新的变量名时,会自动生成这个变量并赋予适当的存储单元。如果该变量已经存在,MATLAB将改变这个变量的值,必要时会赋予新的存储单元。 全局变量 (global variables): 对整个程序的所有过程或函数都有效 global x 局部变量(local variables): 只在该函数内有效,变量、常数和函数的命名必须遵循以下规则: 以字母打头,之后是任意大小写字母、数字或下划线; Matlab仅使用前31个字符作为变量名,且大小写敏感; 不和关键字同名,包括预定义语句(如for和if)、内部函数名(如exp和sin)、操作符(如or)等; 内部函数名必须用小写。,函数内部定义的变量为局部变量,不加载到工作空间 中。需要使用全局变量,则使用global定义。 而且在任何使用该全局变量的函数中都应加以定义,在命令窗口中也不例外。,Global Variables,function h = falling(t) global GRAVITY h = 1/2*Gravity*t.2;,global GRAVITY GRAVITY = 32; y = falling(0:.1:5);,预定义变量,ans : 计算结果的默认变量名 NaN 或 nan:非数(Not a Number),如0/0,/ eps: 机器零阈值(2-52) Inf或inf:无穷大,如1/0 nargin: 所用函数的输入变量数目 nargout:所用函数的输出变量数目 i 和 j: 虚数的表示符号 pi: 圆周率 realmax: 最大正实数,21024 realmin: 最小正实数,2-1024,标量、向量与矩阵的关系,3- Data Types,Array 、Vector and Matrix :,Array(数组),数组是Matlab语言唯一能够处理的对象类型,所有类型变量,包括标量(scalar)、向量(vector)、矩阵(matrix)、字符串(string)、胞元数组(cell array)、结构体(structure)和对象(object)等都是以Matlab数组的列方式存储。,标量:仅有一个元素的数组,11矩阵 向量:由n个标量组成的一维数组, 1n或n1矩阵 矩阵:通常是指二维数组 多维数组:维数大于2的数组 由此可见: 标量、向量都是矩阵的一种特殊情形,三者均是数组,直接输入组成矩阵的元素; 从外部文件引入矩阵; 利用自带的函数构成矩阵; 利用在 *.m 文件内自定义的函数来构成矩阵。,format命令 format % 改变输出格式为默认格式,对浮点变量,默认为short(5位数字,定点值) format type %改变输出格式为指定格式,Type Result Example short Scaled fixed point format, with 5 digits 3.1416 long Scaled fixed point format, with 15 digits for double; 7 digits for single. 3.14159265358979 short e Floating point format, with 5 digits. 3.1416e+000 long e Floating point format, with 15 digits for double; 7 digits for single. 3.141592653589793e+000,整型: 包括8位、16位和32位的有符号(int8、int16、int32)和无符号(uint8、uint16、uint32)。相应的类型转换函数为int8()、int16 () 、int32 () 、 uint8 () 、uint16 () 和uint32 (),数值型, s=int8(56.23 100.368) s = 56 100 b=2*s b = 112 127 c=uint16(-56.23 100.368) c = 0 100, whos c Name Size Bytes Class c 1x2 4 uint16 array Grand total is 2 elements using 4 bytes,Data Types :,各种类型可以是一维、二维和多维, a = welcome % 用单引号括起来表示字符型数组 whos a Name Size Bytes Class a 17 14 char array Grand total is 7 elements using 14 bytes clear a ; clc a = char(You are welcome!;It is an example) % 用char()创建字符数组(字符串) % 创建二维字符数组时,每行的长度要相等 whos a Name Size Bytes Class a 2x16 64 char array Grand total is 32 elements using 64 bytes,字符型(character)和字符串(string),用于保存不同类型和(或)不同大小的数据 胞元数组的每一个元素为一个胞元(cell) 胞元数组的各个胞元的数据类型可以不同 胞元数组的创建方式: 直接赋值法 胞元下标用“()”括起来, 胞元的内容用“”括起来,Cell Arrays:胞元数组, clear all a(1,1)=1 2;3 4; a(1,2)=0 1; a(2,1)=hello; a(2,2)=2+3i; a a = 2x2 double 1x2 double hello 2.0000 + 3.0000i,胞元下标用“ ”括起来,赋指语句等式右边胞元的内容用“ ”括起来。, clear all a1,1=1 2;3 4; a1,2=0 1; a2,1=hello; a2,2=2+3i; a a = 2x2 double 1x2 double hello 2.0000 + 3.0000i,在一个赋值语句中直接写出各胞元数据, a=1 2;3 4, 0 1; hello, 2+3i,先用cell函数为胞元数组分配空间,再进行赋值 d=cell(2,3) % 创建一个2行3列的胞元数组, 赋值方法同直接赋值方式 celldisp(a) % 显示胞元数组a的完整内容 对胞元数组元素的操作 c=a1,2 % 将胞元数组a的1,2元素赋给变量c, celldisp(a) a1,1 = 1 2 3 4 a2,1 = hello a1,2 = 0 1 a2,2 = 2.0000 + 3.0000i,举例:用cell函数创建一个胞元数组, c=cell(1,3) c = c1,1=good morning c1,2=1 2;3 4 c1,3=1+4i c c = good morning 2x2 double 1.0000+ 4.0000i sum(c1,2) ans = 4 6 d=1:3,c,胞元型变量自身可以嵌套。,胞元型变量的函数 cell:生成胞元型变量 cellfun:对胞元型变量中元素作用的函数 celldisp:显示胞元型变量的内容 cellplot:图形显示胞元型变量的内容 num2cell(A) :将数值数组转换为胞元型变量 cell2struct(c, fields, dim) :将胞元型变量转换为结构型变量 struct2cell :将结构型变量转换为胞元型变量 iscell :判断是否为胞元型变量 reshape :改变胞元数组的结构,可以保存不同类型的数据 由一组称为域(fields)的成员变量(向量)构成 每个域可以为不同的数据类型 把数据存于域中(胞元数组是存于胞元中),Structure:结构型,s = struct(name,zh, li, wa, age,26 22 21,gender,man) s = 13 struct array with fields: name age gender,s = struct(field1,values1,field2, values2,.),s = struct(field1,values1,field2, values2,.),对结构数组的操作,s(1) ans = name: zh age: 26 gender: man,s(2) ans = name: li age: 22 gender: man,s(3) ans = name: wa age: 21 gender: man, fieldnames(s) 获得结构数组域的名字 ans = name age gender length(s) 获得向量的长度 ans = 3 average_age=sum(s.age)/length(s) 计算平均值 average_age = 23,用于保存函数的所有信息,以备调用 可作为参数传递给其他函数 与feval函数一起使用,以调用该函数句柄所属的函数 创建函数句柄的方法: funhandle : 返回的函数句柄,为其他函数调用 function_name : 用户指定的函数名,Function Handle:函数句柄, f = sin; x = feval(f,pi/2);,funhandle function_name,funhandle function_name,handle = functionname handle = (arglist)anonymous_function,函数句柄的内容可以通过函数functions来显示 fun_handle=load functions (fun_handle) ans = function: load type: overloaded file: MATLAB built-in function methods: 1x1 struct,all函数: 判断数组中是否所有元素非零,并返回逻辑值。 all(A) A为向量,若所有元素非零,返回值为1,若存在一个或以上的元素为零则返回值为0 all(A) A为矩阵列为向量,返回一个由1和(或)0组成的行向量 all(A, dim) A为二维或多维数组,dim指定以第几维为向量,返回每个向量的逻辑条件,Logical Functions:逻辑函数, A=1 2 4; all(A) ans = 1, B=1 2 4 2 4 1 4 6 7; all(B) ans = 1 1 1, all(B,2) ans = 1 1 1,any函数:判断数组中是否有一个元素为非零,返回逻辑值。 any(vector) % 如果向量中有一个元素为非零,返回值为1,若全部元素为零则返回值为0 any(matrix) % 以矩阵中列为向量,返回一个由1和(或)0组成的行向量 any(A, dim) % A为二维或多维数组,dim指定以第几维为向量,返回每个向量的逻辑条件,Logical Functions:逻辑函数, A=1 2 4; any(A) ans = 1, B=1 2 4 2 4 1 4 6 7; any(B) ans = 1 1 1,any(B,2) ans = 1 1 1,exist函数:查看变量或函数是否存在,并返回逻辑值 0 If name does not exist. 1 If name is a variable in the workspace. 2 If name is an M-file on your MATLAB search path. If name is a MEX- or DLL-file on your MATLAB search path. If name is a MEX- or DLL-file on your MATLAB search path. If name is an MDL-file on your MATLAB search path. If name is a built-in MATLAB function. If name is a P-file on your MATLAB search path. If name is a directory. If name is a Java class.,Logical Functions:逻辑函数, exist A ans = 1, exist cos ans = 5, exist work ans = 7, exist fv ans = 2,find(X) % 返回数组X中非零元素的位置标识 find(X, k) % 返回数组X中前K个非零元素的标识 find(X, k, first) % 返回数组X中前K个非零元素的标识 find(X, k, last) % 返回数组X中最后K个非零元素的标识 i,j = find(.) % 返回数组X中非零元素行和列的位置标识 i,j,v = find(.) % 返回数组X中非零元素行和列的位置标识 以及一个非零元素的列向量,Logical Functions:逻辑函数,find函数:找出向量或矩阵中非零元素的位置标识, M=magic(3) M = 8 1 6 3 5 7 4 9 2 find(M3,4) ans = 1 3 5 6 find(M3,4,last) ans = 5 6 7 8, i,j,v=find(M,4) i = 1 2 3 1 j = 1 1 1 2 v = 8 3 4 1,isnumeric(A) % 如果数组是数值型数据(如矩阵、双精度数组,而单元数组、字符型数组、结构数组和逻辑数组则不是),返回逻辑值1,反之为0,Logical Functions:逻辑函数,isempty函数:判断数组是否为空数组,isequal函数:判断几个数组是否相等,isempty(A) % 如果数组为空数组,返回逻辑值1,反之为0,isnumeric函数:判断数组是否是数值型数据,isequal(A, B, .) % 如果数组相等,返回逻辑值1,反之为0,5- Data Input and Output,用Save命令,Data Output :,可将工作环境中几个或全部变量保存到文件中,clear a=1 2, b=3 4 5, c=-1 0; 6 8 save file1 % 将全部变量保存到文件file1.mat中 save file2 a c % 将变量a、c保存到文件file2.mat中 save file3 b ascii % 将变量b保存在没有扩展名的文 件file3中,用fprintf函数,x=35; b=70.3578; string=Results: ; fprintf(t%stx=%5d, ty=%8.2f, string, x, b) Results: x= 35, y= 70.36,用函数disp()将结果输出至屏幕,a=23.66 77.22 86.12; disp(The results are: ) The results are: disp(a) 23.6600 77.2200 86.1200,可将数据输出到屏幕或写格式化数据到文件中,用M文件产生数据文件,Data Input :,用Load命令从MAT文件或者文本文件读取数据,用fscanf函数,用input函数提示输入数据,6- Numerical Calculation,Setting Up Vector :,X=10.1 20.2 30.3 X=10.1; 20.2; 30.3 X=10.1; 20.2; 30.3; X=10.1 20.2 30.3,x=20:24 x=20:2:29; x=10:-1:1 x=3:2,:,Setting Up Regular Vectors :, x=linspace(0,1,10) x = Columns 1 through 5 0 0.1111 0.2222 0.3333 0.4444 Columns 6 through 10 0.5556 0.6667 0.7778 0.8889 1.0000,linspace(Left Endpoint,Right Endpoint, Number of Points),生成线性等分向量,linspace :,x=linspace(a,b,n) xk=a+(k-1)*(b-a)/(n-1), x=logspace(-2,2,5) x = 0.0100 0.1000 1.0000 10.0000 100.0000,生成指数等分向量,logspace :,x=logspace(a,b,n),m=linspace(a,b,n) for k=1:n x(k)=10m(k); end,linspace(a,b) linspace(a,b,100) logspace(a,b) logspace(a,b,50),Vectors Calculations:,向量的加、减、乘、除: 向量的点积: 两个向量在其中某一个向量方向上的投影的乘积,A=1 2 3; B=3, 4, 5; dot(A, B) % 用 dot 函数求向量点积 ans= 26 sum(A.*B) ans= 26,Vectors Calculations:,向量的叉积: 过两相交向量的交点的垂直于两向量所在平面的向量,dot(A ,cross(B, C), ans= 24,A=1 2 3; B=3, 4, 5; C=cross(A, B) % 用cross 函数计算向量叉积 C= -2 4 -2,向量的混合积:,Matrix Operations :,zeros: 生成一个元素全部为0的矩阵 ones: 生成一个元素全部为1的矩阵 eye: 生成一个单位矩阵 rand: 生成个元素在0和1之间均匀分布的随机矩阵 randn: 生成一个零均值单位方差正态分布的随机矩阵 pascal:生成一个帕斯卡矩阵(对称三角整数矩阵) magic: 生成一个魔方矩阵, a=zeros(2,2) a = 0 0 0 0, c=eye(2,2) c = 1 0 0 1, b=ones(2,2) b = 1 1 1 1, d=rand(2,2) d = 0.9501 0.6068 0.2311 0.4860, e=randn(2,2) e = -0.4326 0.1253 -1.6656 0.2877, f=randn(2,2) f = -1.1465 1.1892 1.1909 -0.0376, h=magic(4) h = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1, g=pascal(4) g = 1 1 1 1 1 2 3 4 1 3 6 10 1 4 10 20,det(A): 求方阵A的行列式 rank(A): 求A的秩,即A中线性无关的行数和列数。 inv(A): 求方阵A的逆阵。如果A是奇异矩阵或者近似 奇异矩阵,则会结出个错误信息。 trace(A):求矩阵A的迹,也就是对角线元素之和。 size(A): 求矩阵A的大小 length(A): 给出数组的最大长度 diag(A): 取出矩阵A的对角线元素 diag(diag(A),Matrix Calculations :, A=1 2 4 2 4 1 4 6 7; det(A) ans = -14 rank(A) ans = 3 inv(A) ans = -1.5714 -0.7143 1.0000 0.7143 0.6429 -0.5000 0.2857 -0.1429 0 length(A) 3, trace(A) ans = 12 size(A) ans = 3 3 m,n=size(A) m = 3 n = 3 diag(A) 1 4 6 diag(diag(A) 1 0 0 0 4 0 0 0 6,矩阵的加减运算 + -,矩阵的乘法运算 * .* ., A=1 2 3; 4 5 6; 7 8 9; B=1 2 3; 4 5 6; 7 8 9; S=A*B S = 30 36 42 66 81 96 102 126 150,Matrix Calculations :, S1=A.*B S1 = 1 4 9 16 25 36 49 64 81 F=A.B F = 1 4 27 256 3125 46656 823543 16777216 387420489,AB称作矩阵A左除矩阵B,inv(A)*B for A*X=B B/A称为矩阵B右除矩阵A,B*inv(A) for X*A=B B./A 维数相同,B中元素除以A中对应的元素, A=1 2; 3 4; B=1 3; 2 4; C=AB C = 0 -2.0000 0.5000 2.5000 D=B/A,Matrix Calculations :,矩阵的除法运算, / ./ .,D = 2.5000 -0.5000 2.0000 0 E=B./A % 等同于A.B E = 1.0000 1.5000 0.6667 1.0000 G=A./B % 等同于B.A G = 1.0000 0.6667 1.5000 1.0000,X = 1.7206 1.3239 2.2591,X = 1.7206 1.3239 2.2591,显示一个元素 元素替换 显示子矩阵 多个矩阵结合成一个新矩阵 转阵符号为单引号() 用冒号(:)产生一个行向量 用冒号(:)表示行、列或矩阵的一部分 用end表示行或列的最后一个元素,向量、矩阵元素的操作 :,L,U = lu(X) 函数返回一个上三角矩阵U和一个下三角矩阵L,使X = L*U L,U,P = lu(X) 函数返回一个上三角矩阵U,一个下三角矩阵L和一个单位对角矩阵P,使得 L*U = P*X Y = lu(X) 返回一个矩阵Y,使得Y = U+L-eye(size(X). L,U,P,Q = lu(X) 对一个稀疏非空矩阵X,函数返回一个单位下三角矩阵L,一个上三角矩阵U,一个行置换矩阵Q和一个列重排矩阵P,使得P*X*Q = L*U,LU:矩阵因数分解:,在线性方程的直接解法中有重要应用, X=1 2 4;2 4 1;4 6 7; L,U=lu(X) L = 0.2500 0.5000 1.0000 0.5000 1.0000 0 1.0000 0 0 U = 4.0000 6.0000 7.0000 0 1.0000 -2.5000 0 0 3.5000 Y=lu(X) Y = 4.0000 6.0000 7.0000 0.5000 1.0000 -2.5000 0.2500 0.5000 3.5000,LU:矩阵因数分解:, L,U,P=lu(X) L = 1.0000 0 0 0.5000 1.0000 0 0.2500 0.5000 1.0000 U = 4.0000 6.0000 7.0000 0 1.0000 -2.5000 0 0 3.5000 P = 0 0 1 0 1 0 1 0 0,7- Symbolic Math,符号表达式的生成,创建一般符号函数:, f=sin(x)+cos(x) f = sin(x)+cos(x), f=a*x2+b*x+c=0 f = a*x2+b*x+c=0,创建符号代数方程:,创建符号微分方程: 用sym()命令创建符号表达式: 用syms()命令创建符号表达式:, f=Dy-yx f = Dy-yx, f=sym(sin(x)+cos(x) f = sin(x)+cos(x) f=sym(a*x2+b*x+c=0) f = a*x2+b*x+c=0, syms x y f=y*exp(x) f = y*exp(x), a=sym(2*x3,cos(x),exp(5*x);6,sqrt(x),sin(x) a = 2*x3, cos(x), exp(5*x) 6, sqrt(x), sin(x),符号矩阵的创建,符号与数值之间的转换函数, s=sqrt(x) s1=subs(s, x ,2); vpa(s1,5) ans = 1.4142 a = sym(2*sqrt(2); b = sym(1-sqrt(3)2); T = a, b double(T) ans = 2.8284 0.5359,用sym()命令创建(类似创建数值矩阵),digits(d) % 设置有效数字个数为d的近似解精度 subs(s,old,new) % 以new代替表达式s中的符号变量old,new为符号或者数值变量或数值表达式 vpa(s,d) % 返回表达式s在digts(d)精度下的数值解 double(s) % 转换符号数组s为数值型, a=sym(x+5,6;1/x,2*x); b=sym(x,1/x;0,3*x); c=a/b c = 1/x*(x+5), 1/3/x3*(-5+6*x2-x) 1/x2, 1/3*(-1+2*x4)/x4,符号矩阵的运算,将数值矩阵转换为符号矩阵, a=10.2 20.5; 50.3 68.6; b=sym(a) b = 51/5, 41/2 503/10, 343/5,数值矩阵不能直接参加符号运算,需要先转换为符号矩阵,同数值矩阵的四则运算完全相同,转换后的符号矩阵以 精确的有理形式给出,符号表达式的极限, syms x a t h limit(sin(x+h)-sin(x)/h,h,0) ans = cos(x) limit(sin(x+h)-sin(x)/h) ans = sin(h)/h limit(sin(x+h)-sin(x)/h,h) ans = (sin(2*h)-sin(h)/h,limit(F,x,a) % 返回符号表达式F从a x的极限 limit(F,a) % 返回符号表达式F中变量的极限 limit(F) % 返回符号表达式F中a = 0的极限 limit(F,x,a,right) % 返回符号表达式F中a x 的极限 limit(F,x,a,left) % 返回符号表达式F中 xa的极限, limit(1/x,x,0,right) ans = Inf limit(sin(x+h)-sin(x)/h,h,0,. right) ans = cos(x) limit(1/x,x,0,left) ans = -Inf,符号表达式的积分,syms x x1 t A=cos(x*t), sin(x*t); -sin(x*t), cos(x*t); int(A, t) ans = sin(x*t)/x, -1/x*cos(x*t) 1/x*cos(x*t), sin(x*t)/x int(x1*log(1+x1), 0, 1) ans = 1/4,int(A) % 返回不定积分 int(A,x) % 返回关于x的不定积分 int(A,a,b) % 返回从a到b的定积分 int(A,x,a,b) % 返回关于x从a到b的定积分,符号表达式的微分,diff(s, x) % 符号表达式s对自变量x的一次求导 diff(s, x,n) % 符号表达式s对自变量x的n次求导, f=sym(sin(x)+cos(y) f = sin(x)+cos(y) diff(f,x) ans = cos(x), diff(f,y) ans = -sin(y) diff(f,x,2) ans = -sin(x),符号表达式的复合运算,compose(f,g) % returns f(g(y) where f = f(x) and g = g(y). compose(f,g,z) % returns f(g(z) where f = f(x), g = g(y), compose(f,g,x,z) % returns f(g(z) and makes x the independent variable for f. compose(f,g,x,y,z) % returns f(g(z) and makes x the independent variable for f and y the independent variable for g.,syms x y z t u; f = 1/(1 + x2); g = sin(y); h = xt; p = exp(-y/u); compose(f,g) compose(f,g,t) compose(h,g,x,z) compose(h,g,t,z) compose(h,p,x,y,z) compose(h,p,t,u,z),% 1/(1+sin(y)2) % 1/(1+sin(t)2) % sin(z)t % xsin(z) % exp(-z/u)t % xexp(-y/z),符号表达式的反函数运算:求,g=finverse(f) % returns the functional inverse of f, g(f(x)=x. g=finverse(f,v) % uses the symbolic variable v, where v is a sym, as the independent variable, g(f(v)=v.,finverse(1/tan(x) % atan(1/x) f = x2+y; finverse(f,y) returns -x2+y. finverse(f) returns (-y+x)(1/2),代数方程的符号求解,g = solve(eq) % solves the equation eq g = solve(eq,var) % solves the equation eq for the variable var. g = solve(eq1,eq2,.,eqn) % solves the system of equations implied by eq1,eq2,.,eqn in the n variables determined by applying findsym to the system. g = solve(eq1,eq2,.,eqn,var1,var2,.,varn) %, solve(a*x2 + b*x + c) ans = 1/2/a*(-b+(b2-4*a*c)(1/2) 1/2/a*(-b-(b2-4*a*c)(1/2) solve(a*x2 + b*x + c,b) ans = -(a*x2+c)/x S = solve(x + y = 1,x - 11*y = 5) % returns a structure S with S.y = -1/3, S.x = 4/3,S = solve(6*x - y = 9, -x +10*y-2*z=7, -4*y+5*z=6),X = 1.7206 1.32
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 深圳足球场地坪施工方案
- 2025年终止劳动合同的规定与指南
- 渣土车队结款方案范本
- 2025年怀仁市属事业单位考试试卷
- 2025标准农产品买卖合同汇编
- 2025汽车买卖合同解除协议书
- 江宁区土建防潮施工方案
- 虎丘区沥青路面施工方案
- 空调班组安全培训试题及答案解析
- 成人健康护理上题库及答案解析
- 2025年合肥公交集团有限公司驾驶员招聘180人笔试参考题库附带答案详解
- 2024年上海市大数据中心招聘真题
- 2025年网络安全监测预警体系建设实施方案评估报告
- 2025年会计继续教育网络答题真题及答案
- 2025年工勤行政事务高级技师技术等级考试试题及答案
- 中国银行招聘笔试真题及答案(可下载)
- 高血压指南培训课件
- 设计文件更改管理办法
- 飞利浦录音笔VTR8000说明书
- (高清版)DZT 0217-2020 石油天然气储量估算规范
- 初中数学人教七年级上册(2023年新编) 有理数专题《有理数中的数学思想》教学设计
评论
0/150
提交评论