Matlab与化工数值计算-第1讲简介与基本数学运算.ppt

上传人:sh****n 文档编号:6378709 上传时间:2020-02-24 格式:PPT 页数:79 大小:656.50KB
返回 下载 相关 举报
Matlab与化工数值计算-第1讲简介与基本数学运算.ppt_第1页
第1页 / 共79页
Matlab与化工数值计算-第1讲简介与基本数学运算.ppt_第2页
第2页 / 共79页
Matlab与化工数值计算-第1讲简介与基本数学运算.ppt_第3页
第3页 / 共79页
点击查看更多>>
资源描述
Matlab与化工数值计算第一讲简介与基本数学运算 隋志军化工学院软件应用教科组 联系方式 zhjsui 64252169实验16楼605室 化学工程师的任务 化学工程专业数学模型类型 非线性方程 组 常微分方程 组 偏微分方程 组 非线性模型 难以获得解析解 必须采用数值解法模型的数值解法是应用数学的一个分支 通常称为计算数学 数值分析 数值方法 化学工程常用软件 MatlabMathematicaMathcadMapleStaticstica PRO II SimSci AspenPlusChemCADFlowtranSuperproDesignerFluentCHEMKIN 数学软件 化工模拟软件 本课程的学习目的 化工专业知识作为背景 不涉及模型的推导 注重模型求解过程的方法与技巧 学会Matlab的使用 可以利用Matlab求解较为复杂的化工数学模型 对于数值分析的内容不过多涉及 只注意数值计算结果的准确性 本课程基本内容 第一讲Matlab简介与基本数学运算第二讲非线性方程组求解与迭代法第三讲矩阵操作与线性方程组求解第四讲插值 拟合与数值微分 积分第五讲常微分方程数值解第六讲偏微分方程数值解第七讲统计初步与最优化方法 学习本课程的注意事项 学好本课程的唯一途径是多上机实践数值计算效率和效果的保证有很多技巧 可以参考数值方法 数值分析 方面的教科书刘则毅 科学计算技术与Matlab 科学出版社同济大学计算数学教研室 现代数值数学和计算 同济大学出版社黄华江 实用化工计算机模拟 化学工业出版社张志涌 精通Matlab6 5版 北京航空航天大学出版社对于数值计算的结果 应注意分析结果的意义 Matlab简介 Matlab是MatrixLabotary的缩写 最初是美国新墨西哥大学Moler教授编写的LINPACK和EISPACK接口程序 1984年 MathWorks公司创建 MATLAB正式推向市场20世纪90年代以来 MATLAB已成为数值计算软件的佼佼者 Matlab简介 MATLAB具有用法简单 灵活 结构性强 延展性好等优点 逐渐成为科技计算 视图交互系统和程序中的首选语言工具 功能强大的数值运算功能强大的图形处理能力高级但简单的程序环境丰富的工具箱与模块集易于扩充 开始的问题 计算在1 2英寸不锈钢管中 以2000lb hr流量输送水 当水的温度为10 20 30 40 50 60 70 80 时 压降分别为多少 牛顿流体在不锈钢管中的流动压降可由下式估算 其中 摩擦压降 psi 100英尺等量管长 M 质量流量 lb hr 粘度 cP 密度 lb ft3 D 管径 inch 流体密度可由下式描述 g ml 对于水 A 0 34710 B 0 2740 Tc 647 13K n 0 28571 流体粘度由下式描述 cP 对于水 A 10 2158 B 1 7925E3 C 1 7730E 2 D 1 2631E 05 Matlab窗口介绍 命令窗口 命令历史 变量空间 当前路径 Matlab的通用命令 通过Help学习Matlab 在命令窗口中键入 help 则显示以下内容 matlab general Generalpurposecommands matlab ops Operatorsandspecialcharacters matlab lang Programminglanguageconstructs matlab elmat Elementarymatricesandmatrixmanipulation matlab elfun Elementarymathfunctions matlab specfun Specializedmathfunctions matlab matfun Matrixfunctions numericallinearalgebra matlab datafun DataanalysisandFouriertransforms matlab polyfun Interpolationandpolynomials matlab funfun FunctionfunctionsandODEsolvers matlab sparfun Sparsematrices matlab scribe AnnotationandPlotEditing matlab graph2d Twodimensionalgraphs matlab graph3d Threedimensionalgraphs Help 主题名称 helpopsOperatorsandspecialcharacters Arithmeticoperators plus Plus uplus Unaryplus minus Minus uminus Unaryminus mtimes Matrixmultiply times Arraymultiply mpower Matrixpower power Arraypower mldivide Backslashorleftmatrixdivide mrdivide Slashorrightmatrixdivide ldivide Leftarraydivide rdivide Rightarraydivide 基本算术运算符 helppower Arraypower Z X Ydenoteselement by elementpowers XandYmusthavethesamedimensionsunlessoneisascalar Ascalarcanoperateintoanything C POWER A B iscalledforthesyntax A B whenAorBisanobject Help 函数名可获得详细的函数使用方法 Help 函数名 Matlab语言的标点 数值类型 分类方法一双精度型 系统默认类型 单精度型带符号整数无符号整数分类方法二标量向量数组分类方法三实数复数 数值的表示 以下表达方式均合法 345 990 011 3e 34 5e33 123 1 2 3 12 211 3 3i6 8j 计算以下表达式的值 1 123 321 2 123 321 3 123 24 123 25 1 3 2 26 3 2 27 3 2 2 8 8 1 3 基本数学运算符的使用 2000 1 8 10 10 2158 1 7925e3 283 1 773e 2 283 1 2631e 5 283 2 0 2 20000 0 5 4 8 0 3471 0 274 1 283 647 13 0 28574 0 2323 回车可以得到结果ans 287 8245 Matlab的计算器功能 命令的窗口的快捷键 数学函数 elfun 计算以下表达式的值 sin 30 sind 30 exp 123 log10 101001000 abs 3 4i abs 5 基本数学函数的使用 format命令 程序的组成 数据输入 运算 数据输出 变量 变量 数学运算 关系运算 逻辑运算 流程控制 图形输出 文件输出 屏幕输出 文件输入 键盘输入 变量 变量的命名方式 变量名由字母 数字和下划线组成 变量名中的英文字母大小写是有区别的 变量名的最大长度是有规定的不同版本的系统规定不同 19个字符 31或63个字符等可调用namelengthmax函数得到系统规定长度 变量的使用 clear 删除工作区中所有定义过的变量 whos 查看当前工作区内变量信息 无显示表示没有定义的变量 xy 1 yx 2 对变量赋值 xy 查看变量xy的当前数值xy 1 whosNameSizeBytesClassxy1x18doublearrayyx1x18doublearrayGrandtotalis2elementsusing16bytes clearxyyx 删除变量xy及yx whos xy 这时变量xy已经不存在了 Undefinedfunctionorvariable xy MATLAB系统的特殊变量和常数 MATLAB数据类型 数值 标量 向量 数组 字符串单元数组 cellarray 结构体 structure 函数句柄 向量的生成 1 直接输入向量格式上要求向量元素需要用 括起来 元素之间可以用空格 逗号或分号分隔 用空格和逗号分隔生成行向量 用分号生成列向量 2 利用冒号生成向量冒号表达式的基本形式为 x x0 step xn若step 1 则此项输入可以忽略 3 linspace函数可以使用linspace函数生成线性等分向量 y linspace x1 x2 生成 1 100 维行向量 y 1 x1 y 100 x2y linspace x1 x2 n 生成 1 n 维行向量 y 1 x1 y n x24 logspace函数logspace用于生成对数等分向量 格式如下 y logspace x1 x2 n 生成 1 n 维对数等分向量 y 1 10 x1 y n 10 x2 n可以省略 此时其默认值为50 向量的运算 1 向量加减与数加减向量的加减与数加减的形式与普通标量加减相同2 向量的点积 叉积与混合积的实现点积 向量的点积由函数dot实现 dot a b 返回向量a和b的数量点积 其中a b必须同维 叉积 叉积由cross函数实现 向量a b必须为三维向量混合积 可由以下命令实现 dot a cross b c 3 向量的数乘 数组乘和向量乘例 当a 1 1 3 b 2 2 6 时 以下命令的运行结果是什么 1 a1 2 a2 a2 a b3 a3 a b 字符串类型 字符串 包含在一对单引号中的字符集合 s hello MATLAB 定义字符串变量ss hello MATLAB whosNameSizeBytesClasss1x1326chararrayGrandtotalis13elementsusing26bytes 单元数组 CellArray 单元数组是MATLAB数组的一种特殊数据类型 它用于保存不同类型和 或不同大小的数据 三种直接赋值方式单元下标用括号 括起来 而单元的内容用 括起来 如 clearall a 1 1 12 34 a 1 2 01 a 2 1 Hello a 2 2 2 3i 2 单元下标用 括起来 而赋值语句等式右边的单元内容用 括起来 a 1 1 12 34 a 1 2 01 a 2 1 Hello 右边只有一个元素时可省略去 a 2 2 2 3i3 直接使用 a 12 34 01 Hello 2 3i 单元数组的操作 显示单元数组的命令 a 显示单元数组a的信息 celldisp a 显示单元数组a的完整内容先使用函数cell 创建空的单元数组 然后再赋值 b cell 2 3 赋值方法同直接赋值方式 对单元数组元素的操作 c a 1 2 将单元数组a的 1 2 元素赋给变量c 注意是 而不是 结构体 与C语言类似 MATLAB结构体用于存取相关的数据 它由一组称为域 fields 的成员变量 向量 构成 每一个域可以为不同的MATLAB数据类型 结构数组的定义有两种方法 一种是直接赋值 另一种是使用strct 函数 结构体的赋值 student name ZhangJun student major ChemicalEngineering student subject 英语 政治 数学 化工原理 物理化学 student entrance exam 6268728290 student 2 name LiXia student 2 major ChemicalEngineering student 2 subject 英语 政治 数学 化工原理 物理化学 student 2 entrance exam 6072688588 struct array name structure field1 values1 field2 values2 Student struct name ZhangJun major ChemicalEngineering 管道压降的计算 T 283 10 353 M 2000 D 0 5 density A 0 3471 density B 0 274 density Tc 647 13 density n 0 28571 Rho density A density B 1 T density Tc density n 0 2323 mu A 10 2158 mu B 1 7925e3 mu C 1 773e 2 mu D 1 2631e 5 mu 10 mu A mu B T mu C T mu D T 2 deltP M 1 8 mu 0 2 20000 D 4 8 Rho 函数文件和Script文件 Script文件Script仅仅是一连串可执行的MATLAB命令 它具有全局性Script文件中不能定义函数函数函数定义的一般格式 function y1 y2 yn FuncName x1 x2 xn 函数声明语句y1 表达式1 y2 表达式2 yn 表达式n 其中 输入参数为x1 x2 xn 输出参数为y1 y2 yn 各参数可以是标量 向量或矩阵 脚本编辑窗口 函数文件的编写 编写一个函数 计算本章开始问题中流体的粘度 函数要求输出粘度的计算值 函数声明语句 functionvis viscosity 变量的传递通过调用函数传递vis viscosity A B C D T 通过全局变量传递利用global命令 在主函数和子函数中予以声明编写表达式 函数的调用 在调用函数的主函数中 直接采用函数名调用通过函数句柄调用 functionCha1demo4 7globalmuTT 283 10 353 M 2000 D 0 5 density A 0 3471 density B 0 2740 density Tc 647 13 density n 0 28571 Rho density A density B 1 T density Tc density n 0 2323mu A 10 2158 mu B 1 7925e3 mu C 1 773e 2 mu D 1 2631e 5 Mu viscositydeltP M 1 8 Mu 0 2 20000 D 4 8 Rho functionvis viscosityglobalmuTvis 10 mu A mu B T mu C T mu D T 2 管道压降的计算函数 函数句柄 创建一个函数句柄 可用于保存函数的所有信息 以便将来对它进行调用 函数句柄可以作为参数传递给其他函数 或与feval函数一起使用 以调用该函数句柄所属的函数 使用函数句柄还可以减少定义函数的文件个数 改善重复操作的性能 保证函数计算的可靠性 funhandle function name function name为用户指定的函数名 函数句柄 创建一个函数句柄 可用于保存函数的所有信息 以便将来对它进行调用 函数句柄可以作为参数传递给其他函数 或与feval函数一起使用 以调用该函数句柄所属的函数 使用函数句柄还可以减少定义函数的文件个数 改善重复操作的性能 保证函数计算的可靠性 funhandle function name function name为用户指定的函数名 函数句柄 创建一个函数句柄 可用于保存函数的所有信息 以便将来对它进行调用 函数句柄可以作为参数传递给其他函数 或与feval函数一起使用 以调用该函数句柄所属的函数 使用函数句柄还可以减少定义函数的文件个数 改善重复操作的性能 保证函数计算的可靠性 funhandle function name function name为用户指定的函数名 管道压降的计算函数 functionCha1demo4 5T 283 10 353 M 2000 D 0 5 density A 0 3471 density B 0 274density Tc 647 13 density n 0 28571 Rho density A density B 1 T density Tc density n 0 2323mu A 10 2158 mu B 1 7925e3 mu C 1 773e 2 mu D 1 2631e 5 Mu feval viscosity mu T Mu viscosity mu T deltP M 1 8 Mu 0 2 20000 D 4 8 Rho functionvis viscosity mu T vis 10 mu A mu B T mu C T mu D T 2 内联函数 inlinefunction 内联函数是Matlab提供的一个对象 它的表现和函数文件一样 但内联函数的创建比较容易内联函数的创建inline CE inline CE arg1 arg2 inline CE n 涉及内联函数性质的指令class inline fun 内联函数类型char inline fun 给出内联函数计算公式argnames inline fun 给出内联函数的输入变量vectorize inline fun 使内联函数适用于数组运算Matlab中许多 泛函 函数都是采用inline 从而具备了适应各种被处理函数形式的能力 内联函数的应用 F1 inline sin rho rho f1 F1 2 FF1 vectorize F1 xx 0 5 1 1 5 2 ff1 FF1 xx G2 inline a exp x 1 cos x 2 a x g1 G2 2 1 pi 3 匿名函数 anonymousfunction 匿名函数用于在命令行 函数文件或script文件中创建简单形式的函数 避免另外定义新的函数匿名函数的定义形式f arglist expression f x x 2a f 5 结果 a 25 f x x 2 g x 3 x h x g f x h 3 结果 ans 27 alpha 0 9 f x sin alpha x f pi 结果 ans 0 3090 数据输入和输出 数据输入利用M文件产生数据文件用Load命令从MAT文件或文本文件读取数据用fscanf函数用提示输入函数inputdlmread importdata xlsread函数数据输出用Save命令用fprintf函数用函数disp 将结果输出至屏幕dlmwirte xlswrite函数图形输出 管道压降的计算函数 functionCha1demo4 5T 283 10 353 M 2000 D 0 5 density A input density A density B input density B density Tc input density Tc density n input density n Rho density A density B 1 T density Tc density n 0 2323mu A 10 2158 mu B 1 7925e3 mu C 1 773e 2 mu D 1 2631e 5 Mu feval viscosity mu T Mu viscosity mu T deltP M 1 8 Mu 0 2 20000 D 4 8 Rho functionvis viscosity mu T vis 10 mu A mu B T mu C T mu D T 2 Matlab二维图形 函数Plot基本调用格式 1 plot X s X为实向量时 以该向量元素的下标为横坐标 元素值为纵坐标画一条连续曲线X是实矩阵时 则按列绘制每列元素值相对其下标的曲线 曲线数目等于X的列数X是复数矩阵时 则按列分别以元素的实部和虚部为横 纵坐标绘制多条曲线 s 是用来控制线型 色彩 数据点型的选项字符串 s可以缺省 此时曲线按Matlab默认设置绘制 s的取值见下节2 plot X Y s X Y是同维向量时 绘制以X Y为横 纵坐标的曲线X是向量 Y是有一维与X同维的矩阵时 则绘出多根不同色彩的曲线 曲线数等于Y的另一维 X作为这些曲线共同的横坐标X是矩阵 Y是向量时 情况与上相同 只是曲线都以Y为共同纵坐标X Y是同维矩阵时 则以X Y对应列元素为横 纵坐标分别绘制曲线 曲线条数等于矩阵的列数 s 的意义 与上相同 3 plot X1 Y1 s1 X2 Y2 s2 此格式中 每个绘线 三元组 X Y s 的结构和作用 与上相同 不同 三元组 之间没有约束关系 曲线的色彩 线型和数据点型貌 坐标 刻度和分格线控制 图形标识 例题 T 283 10 353 M 2000 D 0 5 density A 0 3471 density B 0 274 density Tc 647 13 density n 0 28571 Rho density A density B 1 T density Tc density n 0 2323 mu A 10 2158 mu B 1 7925e3 mu C 1 773e 2 mu D 1 2631e 5 mu 10 mu A mu B T mu C T mu D T 2 deltP M 1 8 mu 0 2 20000 D 4 8 Rho plot T deltP b o title ThepressuredropvsTemperature xlabel Temperature oC ylabel Pressuredrop psi equivalentfeetofpipe 图形标识的精细控制 句柄图形的结构 句柄图形的访问与操作 例题 绘制二阶系统阶跃响应曲线 例题 clf t 6 pi 0 100 100 y 1 exp 0 3 t cos 0 7 t tt t find abs y 1 0 05 寻找大于0 05的元素ts max tt 寻找tt中最大的元素plot t y r LineWidth 3 axis inf 6 pi 0 6 inf set gca Xtick 2 pi 4 pi 6 pi Ytick 0 95 1 1 05 max y gridontitle ity 1 e alphat cos omegat text 13 5 1 2 fontsize 12 alpha 0 3 text 13 5 1 1 fontsize 12 omega 0 7 holdon plot ts 0 95 bo MarkerSize 10 holdoffcell string 1 fontsize 12 uparrow cell string 2 fontsize 16 fontname 隶书 镇定时间 cell string 3 fontsize 6 cell string 4 fontsize 14 rmt s num2str ts text ts 0 85 cell string xlabel fontsize 14 bft rightarrow ylabel fontsize 14 bfy rightarrow 多次叠绘 双纵坐标和多子图 1 多次叠绘 holdon 使当前轴及图形保持而不被刷新 holdoff 不保持当前轴及图形 2 双坐标图 plotyy X1 Y1 X2 Y2 以左右不同纵轴分别绘制X1 Y1 X2 Y2两条曲线plotyy X1 Y1 X2 Y2 Fun 以左右不同纵轴把X1 Y1 X2 Y2绘制成Fun指定的形式的两条曲线3 多子图 采用subplot m n k 使 m n 幅子图中的第k个成为当前子图 再采用其它的图形绘制指令则可将图形绘制到指定的子图中 子图序号的编制原则是 左上方为第1幅 向右向下依次增大 双坐标曲线绘制方法 画出函数和积分在区间上的曲线 clf dx 0 1 x 0 dx 4 y x sin x s cumtrapz y dx 梯形法求累计积分plotyy x y x s text 0 5 0 fontsize 14 ity xsinx sint fontsize 16 int fontsize 8 0 x text 2 5 3 5 fontsize 14 its sint fontsize 14 itxsinxdx Matlab三维图形 1 三维曲线绘制命令plot32 三维网格图形绘制命令mesh3 三维曲面绘制名利surf X0Y0Z0 sphere 30 X 2 X0 Y 2 Y0 Z 2 Z0 surf X0 Y0 Z0 shadinginterpholdonmesh X Y Z colormap hot hiddenoffholdoffaxisequalaxisoff Matlab图形绘制函数 Matlab图形绘制函数分属于以下帮助主题graph2dgraph3dspecgraph 程序的组成 数据输入 运算 数据输出 变量 变量 数学运算 关系运算 逻辑运算 流程控制 图形输出 文件输出 屏幕输出 文件输入 键盘输入 Script文件或函数文件 MATLAB关系运算符 关系运算符 MATLAB逻辑 关系运算的规定 逻辑和关系运算均可以在任意具有相同维数的数组之间进行标量可以和任意维数的数组运算在所有关系表达式和逻辑表达式中 作为输入的任何非0数均被看作是 逻辑真 只有0是 逻辑假 所有关系表达式和逻辑表达式的运算结果是一个由0和1组成的逻辑数组逻辑数组是 数值数组 的子类 可以按数值数组实施操作 它又有不同与普通数值数组的特性 即表示着对对象判断的真假 可用于数组寻访等特殊场合 MATLAB逻辑运算符 逻辑运算符 A 0110 B 1100 A B 0100 A B 1110 A 1001 xor A B 1010 先决逻辑运算符 逻辑 关系运算示例 A 3 3 B 3 1 3 L1 A 0 L2 A 0L3 AL4 A 2 A 1L5 A B L1 运行结果 A 3 2 10123B 3210 1 2 3L1 1111000L2 0001000L3 0001000L4 0011000L5 0001000 运算优先级 括号逻辑否乘除加减关系运算逻辑运算先决与先决否 高 低 MATLAB关系运算函数 isempty数组是否为空isequal两个数组是否相等any数组有非零元素则结果为1all数组元素全非零则结果为1find数组非零元素的下标isscalar是否为标量isvector是否为向量isnan是否为非数isinf是否为无穷isfinite是否为有限 for循环结构 fori 1 10 x i i endx for循环变量 表达式1 初值 表达式2 步长 表达式3 终值 statements 语句组 end字符串 包含在一对单引号中的字符集合 为了得到高效代码 应尽量提高代码的向量化程度 避免使用循环结构为了得到高效代码 在循环指令之前应尽量对数组进行预定义 while循环结构 whilecndition 表达式 statements 执行语句组 end Fibonacci数组的元素满足Fibonacci规则 ak 2 ak ak 1 k 1 2 且a1 a2 1 求该数组中第一个大于10000的元素 a 1 1 a 2 1 i 2 whilea i 10000a i 1 a i 1 a i i i 1 endi a i if else end分支结构 if语句的一般格式 ifcondition1statements 如果condition1的值为True 则执行该语句组elseifcondition2statements 如果condition2的值为True 则执行该语句组elsestatements 如果condition1和condition2的都为False 则执行该语句组end 用for循环指令寻求Fibonacci数组中第一个大于10000的元素n 100 a 1 100 fori 3 na i a i 1 a i 2 ifa i 10000a i break endendi 可以用break语句强制终止循环的运行 switch case结构 switch case的一般格式 switchtest expr 测试表达式test expr可以是标量或字符串casevaluestatements 当test expr值是value时 执行该语句组case value1 value2 statements 当test expr值是value1或value2或 时 执行该语句组otherwise statementsend switch case otherwise语句的能力与if else end语句类似 但对多重选择的情况switch语句使代码更加易读 try catch结构 try catch的一般格式 trystatements 此组语句总被执行 若正确则跳出此结构catchstatements 当上组语句出现执行错误后 该组语句被执行end 当两组语句都出错后 Matlab将跳出该结构可以采用lasterr函数查询出错原因 N 4 A 123 tryA N A N catchA N A end endlasterr A N 3ans Indexexceedsmatrixdimensions 本讲小结 Matlab的基本数学运算符和运算函数的使用注意区别矩阵和数组的乘 除 乘方运算Matlab数据输入输出功能 尤其是绘图功能的实现Matlab函数文件的基本形式及其调用字符 单元数组 结构体的定义Matlab的流程控制语句
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!