




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数学建模专题一数学建模专题一Matlab基础基础数学建模专题一数学建模专题一 Matlab 基础基础引言引言q Matlab: Matrix Laboratry 矩阵实验室q 选择选择Matlab的理由的理由 Matlab功能强大。功能强大。 操作简单,容易上手。 Matlab应用非常广泛。应用非常广泛。 易于扩展。易于扩展。数学建模专题一数学建模专题一 Matlab 基础基础内容提纲内容提纲1.1.基本用法基本用法2.2.向量与矩阵的生成和运算向量与矩阵的生成和运算3.Matlab3.Matlab编程编程4.4.符号运算符号运算5.Matlab5.Matlab绘图绘图1. Matlab基本用
2、法数学建模专题一数学建模专题一 Matlab 基础基础基本用法提纲基本用法提纲q Matlab帮助系统q Matlab变量q 变量的读取与存储q 矩阵数学建模专题一数学建模专题一 Matlab 基础基础Matlab 的工作界面的工作界面命令窗口命令窗口当前工当前工作目录作目录当前工当前工作空间作空间输入命令的输入命令的历史记录历史记录命令命令提示符提示符数学建模专题一数学建模专题一 Matlab 基础基础q 矩阵的直接排列输入矩阵的直接排列输入例:例: A = 1 2 3; 4 5 6; 7 8 9矩阵矩阵q Matlab 的操作对象是的操作对象是 矩阵矩阵q 矩阵元素可以是任何数值表达式矩阵
3、元素可以是任何数值表达式例:例: x = -1.3, sqrt(3), (1+2+3)*4/5 q 大矩阵可以把小矩阵作为其元素大矩阵可以把小矩阵作为其元素例:例: A = A; 11 12 13 在原矩阵的下方加一行在原矩阵的下方加一行如何在原矩阵的右边添加一列?如何在原矩阵的右边添加一列?数学建模专题一数学建模专题一 Matlab 基础基础q 单个元素的引用单个元素的引用例:例: A(2,3)矩阵元素的引用矩阵元素的引用q 多个元素的引用:冒号的特殊用法多个元素的引用:冒号的特殊用法利用小括弧和元素所在的位置下标)利用小括弧和元素所在的位置下标)x(i):向量:向量 x 中的第中的第 i
4、个元素个元素A(i, j):矩阵:矩阵 A 中的第中的第 i 行,第行,第 j 列元素列元素a:b:c产生一个由等差序列组成的向量;产生一个由等差序列组成的向量; a 是首项,是首项,b 是公是公差,差,c 确定最后一项;假设确定最后一项;假设 b=1,那么,那么 b 可以省略。可以省略。例:例: x=1:2:5 y=1:2:6 y=1:2:6例:例: x=2:1:5 y=2:5 y=2:5例:例: x=3:2:1数学建模专题一数学建模专题一 Matlab 基础基础q 多个元素的引用续)多个元素的引用续)例:例: x(1:3)矩阵元素的引用矩阵元素的引用 A(3,1:3) A(3,1:3)A(
5、i:j, m:n) 表示由矩阵表示由矩阵 A 的第的第 i 到第到第 j 行和第行和第 m 到第到第 n列交叉线上的元素组成的子矩阵。列交叉线上的元素组成的子矩阵。可利用冒号提取矩阵可利用冒号提取矩阵 的整行或整列。的整行或整列。例:例: A(1, :) A(:, 1:2) A(:, 1:2) A(:, :) A(:, :)数学建模专题一数学建模专题一 Matlab 基础基础Matlab帮助系统帮助系统q 联机帮助联机帮助help 显示指定命令的简短使用说明显示指定命令的简短使用说明例:例: help eig help help help help q 详细使用帮助详细使用帮助doc 以网页形
6、式显示指定命令的帮助页以网页形式显示指定命令的帮助页例:例: doc eig q lookfor 按指定的关键词查询与之相关的命令按指定的关键词查询与之相关的命令例:例: lookfor inverse 数学建模专题一数学建模专题一 Matlab 基础基础q 变量命名原则变量命名原则Matlab 变量变量u 以字母开头以字母开头u 后面可以跟后面可以跟 字母、数字字母、数字 和和 下划线下划线u 长度不超过长度不超过 63 个字符个字符6.5 版本以前为版本以前为 19 个)个)u 变量名变量名 区分字母的区分字母的 大小大小 写写q Matlab 语句的通常形式语句的通常形式变量变量=表达式
7、表达式表达式是用运算符将有关运算量连接起来的式子,表达式是用运算符将有关运算量连接起来的式子,其结果被赋给赋值号其结果被赋给赋值号“=”左边的变量左边的变量数学建模专题一数学建模专题一 Matlab 基础基础q 分号和续行符的作用分号和续行符的作用Matlab 变量变量若不想在屏幕上输出结果,可以在语句最后加分号若不想在屏幕上输出结果,可以在语句最后加分号 如果语句很长,可用续行符如果语句很长,可用续行符 “”(三个点续行(三个点续行 续行符的前面最好留一个空格续行符的前面最好留一个空格例:例:数学建模专题一数学建模专题一 Matlab 基础基础q 变量的查询变量的查询Matlab 变量变量w
8、ho 显示工作空间中的所有显示工作空间中的所有变量变量whos 查看工作空间中变量的详细属性查看工作空间中变量的详细属性数学建模专题一数学建模专题一 Matlab 基础基础q 系统预定义变量系统预定义变量Matlab 变量变量u pi 圆周率圆周率 u inf/Inf 无穷大无穷大 u nan/NaN Not-a-Number,一个不定值,如,一个不定值,如 0/0u eps 浮点运算相对精度浮点运算相对精度 q 特殊变量特殊变量 ansu i/j 虚部单位,即虚部单位,即1 应尽量避免给系统预定义变量重新赋值!应尽量避免给系统预定义变量重新赋值!数学建模专题一数学建模专题一 Matlab 基
9、础基础变量的存储变量的存储q 存储当前工作空间中的变量存储当前工作空间中的变量u save 将所有变量存入文件将所有变量存入文件 matlab.matu save mydata 将所有变量存入指定文件将所有变量存入指定文件 mydata.matq 存储指定的变量存储指定的变量u save mydata.mat 将所有变量存入文件将所有变量存入文件 mydata.matsave 文件名文件名 变量名列表变量名列表例:例: save mydata A x z 变量名列表中各变量之间用空格分隔。变量名列表中各变量之间用空格分隔。数学建模专题一数学建模专题一 Matlab 基础基础变量的读取变量的读取
10、q 将数据文件中的变量载入当前工作空间将数据文件中的变量载入当前工作空间u load mydata 载入数据文件中的所有变量载入数据文件中的所有变量u load mydata A x 从数据文件中提取指定变量从数据文件中提取指定变量q 清除当前工作空间中的变量清除当前工作空间中的变量u clear 清除当前工作空间中的所有变量清除当前工作空间中的所有变量u clear A x 清除指定的变量清除指定的变量数学建模专题一数学建模专题一 Matlab 基础基础内容提纲内容提纲1.1.基本用法基本用法2.2.向量与矩阵的生成和运算向量与矩阵的生成和运算3.Matlab3.Matlab编程编程4.4.
11、符号运算符号运算5.Matlab5.Matlab绘图绘图6.6.其它补充知识其它补充知识2. 向量与矩阵的生成和运算数学建模专题一数学建模专题一 Matlab 基础基础向量与矩阵的生成与运算提纲向量与矩阵的生成与运算提纲q 常用矩阵操作命令q 矩阵的基本运算q 矩阵的数组运算q 向量与矩阵的生成数学建模专题一数学建模专题一 Matlab 基础基础q 向量与矩阵的生成向量与矩阵的生成向量与矩阵生成向量与矩阵生成u 向量的生成向量的生成 直接输入直接输入: a=1,2,3,4 冒号运算符冒号运算符a=1:4 = a=1, 2, 3, 4= a=1, 2, 3, 4b=0:pi/3:pi = b=0
12、, 1.0472, 2.0944, 3.1416= b=0, 1.0472, 2.0944, 3.1416c=6:-2:0 = c = 6, 4, 2, 0= c = 6, 4, 2, 0例:例: 从矩阵中抽取行或列从矩阵中抽取行或列数学建模专题一数学建模专题一 Matlab 基础基础q 向量与矩阵的生成续)向量与矩阵的生成续)向量与矩阵生成向量与矩阵生成u 矩阵的生成矩阵的生成 直接输入直接输入: A=1, 2, 3; 4, 5, 6; 7, 8, 9 由向量生成由向量生成 由函数生成由函数生成例:例: x=1,2,3;y=2,3,4; A=x,y, B=x;y A=x,y, B=x;y例:
13、例: C=magic(3)数学建模专题一数学建模专题一 Matlab 基础基础常见矩阵生成函数常见矩阵生成函数zeros(m,n)生成一个生成一个 m 行行 n 列的零矩阵,列的零矩阵,m=n 时可简写为时可简写为 zeros(n)ones(m,n)生成一个生成一个 m 行行 n 列的元素全为列的元素全为 1 的矩阵的矩阵, m=n 时可写为时可写为 ones(n)eye(m,n)生成一个主对角线全为生成一个主对角线全为 1 的的 m 行行 n 列矩阵列矩阵, m=n 时可简写为时可简写为 eye(n),即为即为 n 维单位矩阵维单位矩阵diag(X)若若 X 是矩阵,则是矩阵,则 diag(
14、X) 为为 X 的主对角线向量的主对角线向量若若 X 是向量,是向量,diag(X) 产生以产生以 X 为主对角线的对角矩阵为主对角线的对角矩阵tril(A)提取一个矩阵的下三角部分提取一个矩阵的下三角部分triu(A)提取一个矩阵的上三角部分提取一个矩阵的上三角部分rand(m,n)产生产生 01 间均匀分布的随机矩阵间均匀分布的随机矩阵 m=n 时简写为时简写为 rand(n)randn(m,n)产生均值为产生均值为0,方差为,方差为1的标准正态分布随机矩阵的标准正态分布随机矩阵m=n 时简写为时简写为 randn(n)数学建模专题一数学建模专题一 Matlab 基础基础矩阵操作矩阵操作q
15、 提取矩阵的部分元素:提取矩阵的部分元素: 冒号运算符冒号运算符u A(:) A A(:) A的所有元素的所有元素u A(:,:) A(:,:) 二维矩阵二维矩阵A A的所有元素的所有元素u A(:,k) A A(:,k) A的第的第 k k 列,列, A(k,:) A A(k,:) A的第的第 k k 行行 u A(k:m) A A(k:m) A的第的第 k k 到第到第 m m 个元素个元素u A(:,k:m) A A(:,k:m) A的第的第 k k 到第到第 m m 列组成的子矩阵列组成的子矩阵数学建模专题一数学建模专题一 Matlab 基础基础矩阵操作矩阵操作q 矩阵的旋转矩阵的旋转
16、u fliplr(A) fliplr(A) 左右旋转左右旋转u flipud(A) flipud(A) 上下旋转上下旋转u rot90(A) rot90(A) 逆时针旋转逆时针旋转 90 90 度;度; rot90(A,k) rot90(A,k) 逆时针旋转逆时针旋转 k k90 90 度度例:例: A=1 2 3;4 5 6 B=fliplr(A) B=fliplr(A) C=flipud(A) C=flipud(A) D=rot90(A), E=rot90(A,-1) D=rot90(A), E=rot90(A,-1)数学建模专题一数学建模专题一 Matlab 基础基础矩阵操作矩阵操作q
17、矩阵的转置与共轭转置矩阵的转置与共轭转置u 共轭转置共轭转置u . . 转置,矩阵元素不取共轭转置,矩阵元素不取共轭例:例: A=1 2;2i 3i B=A B=A C=A. C=A.点与单引号之间不能有空格!点与单引号之间不能有空格!数学建模专题一数学建模专题一 Matlab 基础基础矩阵操作矩阵操作q 改变矩阵的形状:改变矩阵的形状:reshape数学建模专题一数学建模专题一 Matlab 基础基础矩阵操作矩阵操作q 查看矩阵的大小:查看矩阵的大小:sizeu size(A) 列出矩阵列出矩阵 A 的行数和列数的行数和列数u size(A,1) 返回矩阵返回矩阵 A 的行数的行数u siz
18、e(A,2) 返回矩阵返回矩阵 A 的列数的列数例:例: A=1 2 3; 4 5 6 size(A) size(A) size(A,1) size(A,1) size(A,2) size(A,2)数学建模专题一数学建模专题一 Matlab 基础基础矩阵基本运算矩阵基本运算q 矩阵的加减:对应分量进行运算矩阵的加减:对应分量进行运算要求参与加减运算的矩阵具有要求参与加减运算的矩阵具有 相同的维数相同的维数例:例: A=1 2 3; 4 5 6; B=3 2 1; 6 5 4 C=A+B; D=A-B; C=A+B; D=A-B;q 矩阵的普通乘法矩阵的普通乘法要求参与运算的矩阵满足线性代数中矩
19、阵相乘的原则要求参与运算的矩阵满足线性代数中矩阵相乘的原则例:例: A=1 2 3; 4 5 6; B=2 1; 3 4; C=A C=A* *B B数学建模专题一数学建模专题一 Matlab 基础基础矩阵基本运算矩阵基本运算q 矩阵的除法:矩阵的除法:/、 右除和左除右除和左除 假设 A 可逆方阵,那么AB A 的逆左乘的逆左乘 B inv(A)*BB/A A 的逆右乘的逆右乘 B B*inv(A)q乘幂:A 是方阵,p 是正整数 Ap 表示表示 A 的的 p 次幂,即次幂,即 p 个个 A 相乘。相乘。 数学建模专题一数学建模专题一 Matlab 基础基础矩阵的数组运算矩阵的数组运算q 数
20、组运算:对应元素进行运算数组运算:对应元素进行运算点与算术运算符之间不能有空格!u 数组运算包括:点乘、点除、点幂数组运算包括:点乘、点除、点幂u 相应的数组运算符为:相应的数组运算符为: “.* ” , “./ ” , “. ” 和和“ . ”参与运算的对象必须具有相同的形状!参与运算的对象必须具有相同的形状!例:例: A=1 2 3; 4 5 6; B=3 2 1; 6 5 4; C=A. C=A.* *B; D=A./B; E=A.B; F=A.B;B; D=A./B; E=A.B; F=A.B;数学建模专题一数学建模专题一 Matlab 基础基础Matlab中常见数学函数中常见数学函数
21、sin、cos、tan、cot、sec、csc、asin、acos、atan、acot、asec、acsc、exp、log、log2、log10、sqrtabs、conj、real、imag、signfix、floor、ceil、round、mod、remmax、min、sum、mean、sort、fftnorm、rank、det、inv、eig、lu、qr、svd数学建模专题一数学建模专题一 Matlab 基础基础内容提纲内容提纲1.1.基本用法基本用法2.2.向量与矩阵的生成和运算向量与矩阵的生成和运算3.Matlab3.Matlab编程编程4.4.符号运算符号运算5.Matlab5.Ma
22、tlab绘图绘图3. Matlab编程入门数学建模专题一数学建模专题一 Matlab 基础基础Matlab编程入门提纲编程入门提纲q 关系运算符q 逻辑运算符q 程序结构控制语句q 函数M文件的编写q M文件数学建模专题一数学建模专题一 Matlab 基础基础Matlab 编程入门编程入门q Matlab 编程简介u Matlab 作为一种广泛应用于科学计算的工具软件,不仅具有强大的数值计算、符号计算、矩阵运算能力和丰富的绘图功能,同时也具有和 C、FORTRAN 等高级语言一样进行程序设计。u 在 Matlab 程序设计中,要充分利用 Matlab 数据结构的特点,提高编程效率。数学建模专题
23、一数学建模专题一 Matlab 基础基础q 用 Matlab 语言编写的程序称为 M 文件, 文 件以 .m为扩展名。q M 文件根据调用方式的不同可以分为两类:u Script:脚本文件:脚本文件/命令文件命令文件 u Function:函数文件:函数文件 M 文件文件数学建模专题一数学建模专题一 Matlab 基础基础u 在命令窗口中输入 f2cs,即可执行该 M 文件。5(32)9cf例:编写一个脚本文件将华氏温度转化为摄氏温度脚本文件举例脚本文件举例clear; % 清除当前工作空间中的变量清除当前工作空间中的变量f=input(Please input Fahrenheit temp
24、erature:);c=5*(f-32)/9;fprintf(The centigrade temperature is %gn,c);u 新建一个 M 文件 f2cs.m,内容如下:数学建模专题一数学建模专题一 Matlab 基础基础关系运算关系运算小于小于大于大于=大于等于大于等于=等于等于=不等于不等于l 比较大小,如果结论是 真 则返回 1 ,否则返回 0l 关系操作符能用来比较两个同样大小的数组,或用来比较一个数组和一个标量,在后一种情况,标量和数组中的每一个元素相比较,比较结果与数组大小一样。q 关系运算符关系运算符数学建模专题一数学建模专题一 Matlab 基础基础例:例:关系运
25、算举例关系运算举例 2+2=4 2+2=4 23 23 A=1 3 5; 2 0 6; A=1 3 5; 2 0 6; B=3 1 0; 2 4 6; B=3 1 0; 2 4 6; A=B A=B x=5 0; 4 2; x=5 0; 4 2; x x1 EPS=EPS/2; num=num+1;end数学建模专题一数学建模专题一 Matlab 基础基础u break 和和 continuel break 语句用于终止循环的执行,即跳出最内层循环 l continue 语句用于结束本次循环,进行下一次循环 l break 和 continue 一般与 if 语句配合使用其它流控制语句其它流控
26、制语句u returnl return 语句用于退出正在运行的脚本或函数,通常用在函数文件中。数学建模专题一数学建模专题一 Matlab 基础基础function 输出形参列表输出形参列表=函数名函数名(输入形参列表输入形参列表)% 注释说明部分注释说明部分(可选可选)函数体语句函数体语句(必需必需)u 第一行为引导行,表示该第一行为引导行,表示该 M文件是函数文件文件是函数文件u 函数名的命名规则与变量名相同函数名的命名规则与变量名相同 ( 必须以字母开头必须以字母开头 )u 当输出行参多于一个时,用方括号括起来当输出行参多于一个时,用方括号括起来u 函数必须是一个单独的函数必须是一个单独的
27、 M文件文件u 函数文件名必须与函数名一致函数文件名必须与函数名一致u 以百分号开始的语句为注释语句以百分号开始的语句为注释语句函数函数m文件的编写与调用文件的编写与调用q 函数文件由函数文件由 function 语句引导语句引导数学建模专题一数学建模专题一 Matlab 基础基础function y = myfliplr(x)% returns X with row preserved and columns% flipped in the left/right direction% % X = 1 2 3 becomes 3 2 1% 4 5 6 6 5 4% num_col=size(x
28、,2); % 取取 x 的列数的列数y = x(:,num_col:-1:1);函数文件举例函数文件举例myfliplr.m数学建模专题一数学建模专题一 Matlab 基础基础内容提纲内容提纲1.1.基本用法基本用法2.2.向量与矩阵的生成和运算向量与矩阵的生成和运算3.Matlab3.Matlab编程编程4.4.符号运算符号运算5.Matlab5.Matlab绘图绘图4. Matlab符号运算数学建模专题一数学建模专题一 Matlab 基础基础符号运算提纲符号运算提纲q 因式分解、展开、合并、简化及通分等q 计算极限q 计算导数q 计算积分q 符号求和q 代数方程和微分方程求解q 符号对象的
29、建立数学建模专题一数学建模专题一 Matlab 基础基础Matlab 符号运算介绍符号运算介绍q Matlab 符号运算是通过符号数学工具箱Symbolic Math Toolbox来实现的。Matlab 符号数学工具箱是建立在功能强大的 Maple 软件的基础上的,当 Matlab 进行符号运算时,它就请求 Maple 软件去计算并将结果返回给 Matlab。 q Matlab 的符号数学工具箱可以完成几乎所有得符号运算功能。主要包括:符号表达式的运算,符号表达式的复合、化简,符号矩阵的运算,符号微积分、符号作图,符号代数方程求解,符号微分方程求解等。数学建模专题一数学建模专题一 Matla
30、b 基础基础Matlab 符号运算举例符号运算举例u 求一元二次方程 ax2 + bx + c = 0 的根 solve(a solve(a* *x2+bx2+b* *x+c)x+c)u 求的根 f (x) = (cos x)2 的一次导数 x=sym(x); x=sym(x); diff(cos(x)2) diff(cos(x)2)u 计算 f (x) = x2 在区间 a, b 上的定积分 syms a b x; syms a b x; int(x2,a,b) int(x2,a,b)数学建模专题一数学建模专题一 Matlab 基础基础u sym 函数用来建立单个符号变量,一般调用格函数用来
31、建立单个符号变量,一般调用格式为:式为:q 符号对象的建立:sym 和 syms符号对象的建立符号对象的建立例: a=sym(a) a=sym(a) 符号变量 = sym(A)参数 A 可以是一个数或数值矩阵,也可以是字符串a 是符号变量是符号变量b 是符号常量是符号常量 b=sym(1/3) b=sym(1/3)c 是符号矩阵是符号矩阵 c=sym(1 ab; e d) c=sym(1 ab; e d)数学建模专题一数学建模专题一 Matlab 基础基础q 符号对象的建立:sym 和 syms符号对象的建立符号对象的建立u syms 命令用来建立多个符号变量,一般调用格命令用来建立多个符号变
32、量,一般调用格式为:式为:syms 符号变量符号变量1 符号变量符号变量2 . 符号符号变量变量n 例: syms a b c syms a b c a=sym(a); a=sym(a); b=sym(b); b=sym(b); c=sym(c); c=sym(c);数学建模专题一数学建模专题一 Matlab 基础基础q 符号表达式的建立:例:建立符号表达式通常有以下2种方法:(1) 用 sym 函数直接建立符号表达式。(2) 使用已经定义的符号变量组成符号表达式。 y=sym(sin(x)+cos(x) y=sym(sin(x)+cos(x) x=sym(x); x=sym(x); y=si
33、n(x)+cos(x) y=sin(x)+cos(x)符号表达式的建立符号表达式的建立数学建模专题一数学建模专题一 Matlab 基础基础符号表达式的替换符号表达式的替换subs(f,x,a) 用用 a 替换字符函数替换字符函数 f 中的字符变量中的字符变量 x a 是可以是是可以是 数数/数值变量数值变量/表达式表达式 或或 字符变字符变量量/表达式表达式q 用给定的数据替换符号表达式中的指定的符号变量数学建模专题一数学建模专题一 Matlab 基础基础subs 举例举例 f=sym(2 f=sym(2* *u);u); subs(f,u,2) subs(f,u,2) f2=subs(f,u
34、,u+2) f2=subs(f,u,u+2) a=3; a=3; subs(f2,u,a+2) subs(f2,u,a+2) subs(f2,u,a+2) subs(f2,u,a+2) syms x y syms x y f3=subs(f,u,x+y) f3=subs(f,u,x+y) subs(f3,x,y,1,2) subs(f3,x,y,1,2)ans=4f2=2*(u+2)ans=14ans=2*(a+2)+2)f3=2*x+2*yans=6u 例:指出下面各条语句的输出结果f=2*u下面的命令运行结果会是什么? subs(f3,x,y,x+y,x+y) subs(f3,x,y,x+
35、y,x+y)数学建模专题一数学建模专题一 Matlab 基础基础六类常见符号运算六类常见符号运算q 因式分解、展开、合并、简化及通分等q 计算极限q 计算导数q 计算积分q 符号求和q 代数方程和微分方程求解数学建模专题一数学建模专题一 Matlab 基础基础因式分解、展开、合并、简化等u 因式分解factor(f)u 函数展开expand(f)u 合并同类项collect(f,v): 按指定变量按指定变量 v 进行合并进行合并collect(f): 按默认变量进行合并按默认变量进行合并数学建模专题一数学建模专题一 Matlab 基础基础计算极限计算极限limit(f,x,a): 计算计算li
36、mit(f,a): 当默认变量趋向于当默认变量趋向于 a 时的极时的极限限limit(f): 计算计算 a=0 时的极限时的极限limit(f,x,a,right): 计算右极限计算右极限limit(f,x,a,left): 计算左极限计算左极限lim( )xaf x例:计算例:计算 ,hxhxLh)ln()ln(lim0nnnxM1lim syms x h n; syms x h n; L=limit(log(x+h)-log(x)/h,h,0) L=limit(log(x+h)-log(x)/h,h,0) M=limit(1-x/n)n,n,inf) M=limit(1-x/n)n,n,i
37、nf)数学建模专题一数学建模专题一 Matlab 基础基础计算导数计算导数g=diff(f,v):求符号表达式:求符号表达式 f 关于关于 v 的导的导数数g=diff(f):求符号表达式:求符号表达式 f 关于默认变量的关于默认变量的导数导数g=diff(f,v,n):求:求 f 关于关于 v 的的 n 阶导数阶导数q diff syms x; syms x; f=sin(x)+3 f=sin(x)+3* *x2; x2; g=diff(f,x) g=diff(f,x)数学建模专题一数学建模专题一 Matlab 基础基础计算积分计算积分int(f,v,a,b): 计算定积分计算定积分int(
38、f,a,b): 计算关于默认变量的定积分计算关于默认变量的定积分int(f,v): 计算不定积分计算不定积分int(f): 计算关于默认变量的不定积分计算关于默认变量的不定积分 syms x; f=(x2+1)/(x2-2 syms x; f=(x2+1)/(x2-2* *x+2)2;x+2)2; I=int(f,x) I=int(f,x) K=int(exp(-x2),x,0,inf) K=int(exp(-x2),x,0,inf)( )baf v dv ( )f v dv 例:计算例:计算 和和2221(22)xIdxxx 20 xKedx 数学建模专题一数学建模专题一 Matlab 基础
39、基础u 梯形法:trapztrapz(x,y)x 为分割点节点组成的向量,为分割点节点组成的向量,y 为被积函数在节点上的函数值组成的为被积函数在节点上的函数值组成的向量。向量。22)(110nnbayyyynabdxxf,x10nxxx01y (),(),()nf xf xf xq Matlab 近似计算定积分的相关函数Matlab 数值积分函数数值积分函数数学建模专题一数学建模专题一 Matlab 基础基础u 例:用梯形法计算下面定积分 ( 取 n=100) 1021xdx解: x=0:1/100:1; x=0:1/100:1; y=1./(1+x.2); y=1./(1+x.2); tr
40、apz(x, y) trapz(x, y)trapz(x,1./(1+x.2)trapz 举例举例数学建模专题一数学建模专题一 Matlab 基础基础quad(f,a,b,tol)f = f(x) 为被积函数,为被积函数,a,b 为积分为积分区间,区间,tol 为计算精度为计算精度将自变量看成是向量将自变量看成是向量badxxf)(u 抛物线法:quadl 不用自己分割积分区间l 可以指定计算精度,若不指定,缺省精度是 10-6l 精度越高,函数运行的时间越长l 此处的函数 f 是数值形式,应该使用数组运算,即 点运算:.*,./ ,. ,. 注:抛物线法抛物线法数学建模专题一数学建模专题一
41、Matlab 基础基础1021xdx解:解: quad(1./(1+x.2),0,1) quad(1./(1+x.2),0,1) quad(1./(1+x.2),0,1,10e-10) quad(1./(1+x.2),0,1,10e-10) quad(1./(1+x.2),0,1,10e-16) quad(1./(1+x.2),0,1,10e-16)函数表达式一定要用函数表达式一定要用 单引号单引号 括起来!括起来!涉及的运算一定要用涉及的运算一定要用 数组运算!数组运算!u 例:用 quad 计算定积分:quad 举例举例数学建模专题一数学建模专题一 Matlab 基础基础q 抛物线法计算二
42、重积分: dblquaddblquad(f,a,b,c,d,tol)u tol 为计算精度,若不指定,则缺省精度为 10-6 badcdxdyyxf),(u f(x,y) 可以由 inline 定义,或通过一个函数句柄传递u a,b 是第一积分变量的积分区间,c,d 是第二积分变量 的积分区间按字母顺序,大写字母排在小写字母的前面二重积分的计算二重积分的计算数学建模专题一数学建模专题一 Matlab 基础基础21201(43)Ixyydxdy f=inline(4 f=inline(4* *x x* *y+3y+3* *y2);y2); I=dblquad(f, -1,1,0,2) I=dbl
43、quad(f, -1,1,0,2)u f(x,y) 中关于第一自变量的运算是数组运算, 即把 x 看成是向量,y 看成是标量。u 也可以全部采用数组运算例2:计算二重积分 20112)34(dxdyxxy dblquad(inline(4 dblquad(inline(4* *x x* *y+3y+3* *x2),-1,1,0,2)x2),-1,1,0,2) dblquad(inline(4 dblquad(inline(4* *x x* *y+3y+3* *x.2),-1,1,0,2)x.2),-1,1,0,2)X例1:计算二重积分dblquad 举例举例数学建模专题一数学建模专题一 Mat
44、lab 基础基础例:计算二重积分 20112)34(dxdyxxy dblquad(x,y)4 dblquad(x,y)4* *x x* *y+3y+3* *x.2 , -1,1, 0, 2)x.2 , -1,1, 0, 2)指定 x、y 分别是第一和第二积分变量 dblquad(inline(4 dblquad(inline(4* *x x* *y+3y+3* *x.2), -1,1, 0, 2)x.2), -1,1, 0, 2)q 被积函数 f (x,y) 的另一种定义方法:匿名函数 dblquad(y,x)4 dblquad(y,x)4* *x x* *y+3y+3* *x.2 , -1
45、,1, 0, 2)x.2 , -1,1, 0, 2)下面的命令运行结果和上面的一样吗?dblquad 举例举例数学建模专题一数学建模专题一 Matlab 基础基础221dxex x=1:0.001:2; x=1:0.001:2; y=exp(x.(-2); y=exp(x.(-2); trapz(x,y) trapz(x,y)l 梯形法:l 抛物线法: quad(exp(x.(-2),1,2,10e-10) quad(exp(x.(-2),1,2,10e-10)l 符号积分法: syms x syms x int(exp(x(-2),x,1,2) int(exp(x(-2),x,1,2)例 1
46、:用 Matlab 函数近似计算积分数值实验数值实验数学建模专题一数学建模专题一 Matlab 基础基础20112)(dyyxdxl 抛物线法: dblquad(inline(x+y2),0,2,-1,1) dblquad(inline(x+y2),0,2,-1,1)l 符号积分法: f=int(x+y2,y,-1,1); f=int(x+y2,y,-1,1); int(f,0,2) int(f,0,2)数值实验数值实验例 2:用 Matlab 函数近似计算二重积分数学建模专题一数学建模专题一 Matlab 基础基础符号求和符号求和 syms n; f=1/n2; syms n; f=1/n2
47、; S=symsum(f,n,1,inf) S=symsum(f,n,1,inf) S100=symsum(f,n,1,100) S100=symsum(f,n,1,100)symsum(f,v,a,b): 求和求和symsum(f,a,b): 关于默认变量求和关于默认变量求和( )bv af v 例:计算级数例:计算级数 及其前及其前100项的部分和项的部分和211nSn 例:计算函数级数例:计算函数级数21nxSn syms n x; f=x/n2; syms n x; f=x/n2; S=symsum(f,n,1,inf) S=symsum(f,n,1,inf)数学建模专题一数学建模专题
48、一 Matlab 基础基础代数方程和微分方程求解代数方程和微分方程求解u 代数方程求解solve(f,v):求方程关于指定自变量的解,:求方程关于指定自变量的解,f 可以是用字符串表示的方程、符号表达式或符号可以是用字符串表示的方程、符号表达式或符号方程;方程;u 微分方程求解数学建模专题一数学建模专题一 Matlab 基础基础q 自牛顿发明微积分以来,微分方程在描述事物运自牛顿发明微积分以来,微分方程在描述事物运动规律上已发挥了重要的作用。实际应用问题通过动规律上已发挥了重要的作用。实际应用问题通过数学建模所得到的方程,绝大多数是微分方程。数学建模所得到的方程,绝大多数是微分方程。q 由于实
49、际应用的需要,人们必须求解微分方程。由于实际应用的需要,人们必须求解微分方程。然而能够求得解析解的微分方程十分有限,绝大多然而能够求得解析解的微分方程十分有限,绝大多数微分方程需要利用数值方法来近似求解。数微分方程需要利用数值方法来近似求解。微分方程求解微分方程求解数学建模专题一数学建模专题一 Matlab 基础基础符号解法符号解法dsolve 求解析解求解析解q dsolve 的使用的使用y=dsolve(eq1,eq2, . ,cond1,cond2, . ,v)其中其中 y 为输出,为输出, eq1、eq2、.为微分方程,为微分方程,cond1、cond2、.为初值条件,为初值条件,v
50、为自变量。为自变量。例例 1:求微分方程:求微分方程 的通解,并验证。的通解,并验证。22xdyxyxedx y=dsolve(Dy+2 y=dsolve(Dy+2* *x x* *y=xy=x* *exp(-x2),x)exp(-x2),x) syms x; diff(y)+2 syms x; diff(y)+2* *x x* *y - xy - x* *exp(-x2)exp(-x2)数学建模专题一数学建模专题一 Matlab 基础基础dsolve 的使用的使用q 几点说明几点说明l 如果省略初值条件,则表示求通解;如果省略初值条件,则表示求通解;l 如果省略自变量,则默认自变量为如果省略
51、自变量,则默认自变量为 t dsolve(Dy=2*x,x); dy/dx = 2xdsolve(Dy=2*x); dy/dt = 2xl 微分方程中用微分方程中用 D 表示对表示对 自变量自变量 的导数,如:的导数,如:Dy y; D2y y; D3y y数学建模专题一数学建模专题一 Matlab 基础基础dsolve 举例举例例例 2:求微分方程:求微分方程 在初值条件在初值条件 下下的特解,并画出解函数的图形。的特解,并画出解函数的图形。0 xxyye y=dsolve(x y=dsolve(x* *Dy+y-exp(x)=0,y(1)=2Dy+y-exp(x)=0,y(1)=2* *e
52、xp(1),x)exp(1),x) ezplot(y); ezplot(y);12( )ye 数学建模专题一数学建模专题一 Matlab 基础基础dsolve 举例举例例例3:求微分方程组:求微分方程组 在初值条件在初值条件 下的特解,并画出解函数的图形。下的特解,并画出解函数的图形。530tdxxyedtdyxydt x,y=dsolve(Dx+5*x+y=exp(t),Dy-x-3*y=0, . x(0)=1, y(0)=0, t)ezplot(x,y,0,1.3);0010|ttxy 数学建模专题一数学建模专题一 Matlab 基础基础q Euler折线法折线法数值求解:数值求解:Eul
53、er 折线法折线法q Runge-Kutta龙格龙格-库塔方法库塔方法q 利用利用Matlab函数求数值解函数求数值解数学建模专题一数学建模专题一 Matlab 基础基础初值问题的初值问题的Euler折线法折线法q 具体步骤:具体步骤:等距剖分:等距剖分:0121nnaxxxxxb 步长:步长:1 0 1 21()/, , ,kkhxxknnba u 分割求解区间分割求解区间u 差商代替微商差商代替微商1()()kkky xy xdydxhx 1 ()()()kkky xy xh yx 得方程组:得方程组:0011 ()(,)kkkkkkyy xyyh f xyxxh 分割求解区间,差商代替微
54、商,解代数方程分割求解区间,差商代替微商,解代数方程 为分割点为分割点 0nkkx k = 0, 1, 2, ., n-1yk 是是 y (xk) 的近似的近似数学建模专题一数学建模专题一 Matlab 基础基础Euler 折线法举例折线法举例例:用例:用 Euler 法解初值问题法解初值问题22 0 201 , ( )dyxydxyxy 取步长取步长 h = (2 - 0)/n = 2/n,得差分方程,得差分方程00110 1 2 ,(,)(/)kkkkkkkkkkxyyyh f xyyh yxyxxh 当当 h=0.4,即,即 n=5 时,时,Matlab 源程序见源程序见 fuluA.m
55、解:解:数学建模专题一数学建模专题一 Matlab 基础基础Euler 折线法源程序折线法源程序clearf=sym(y+2*x/y2);a=0; b=2;h=0.4;n=(b-a)/h+1; % n=(b-a)/h;x=0; y=1;szj=x,y;for i=1:n-1 % i=1:n y=y+h*subs(f,x,y,x,y); x=x+h; szj=szj;x,y;endszjplot(szj(:,1),szj(:,2),or-)数学建模专题一数学建模专题一 Matlab 基础基础 Euler折线法举例续)折线法举例续)解析解:解析解:1 3352233/xyex 解析解解析解近似解近
56、似解数学建模专题一数学建模专题一 Matlab 基础基础Runge-Kutta 方法方法q 为了减小误差,可采用以下方法:为了减小误差,可采用以下方法:u 让步长让步长 h 取得更小一些;取得更小一些;u 改用具有较高精度的数值方法:改用具有较高精度的数值方法:q 龙格龙格-库塔方法库塔方法Runge-Kutta (龙格龙格-库塔库塔) 方法方法u 是一类求解常微分方程的数值方法是一类求解常微分方程的数值方法u 有多种不同的迭代格式有多种不同的迭代格式数学建模专题一数学建模专题一 Matlab 基础基础Runge-Kutta 方法方法q 用得较多的是用得较多的是 四阶四阶R-K方法方法0011
57、1234 (22)/6(),kkkkyy xxxhyyh LLLL 12132432222(,)(/ ,/ )(/ ,/ )(,)kkkkkkkkLf xyLf xhyhLLf xhyhLLf xh yhL 其中其中数学建模专题一数学建模专题一 Matlab 基础基础四阶四阶 R-K 方法源程序方法源程序clear;f=sym(y+2*x/y2);a=0; b=2; h=0.4;n=(b-a)/h+1; % n=(b-a)/h;x=0; y=1; szj=x,y;for i=1:n-1 % i=1:n l1=subs(f,x,y,x,y); l2=subs(f,x,y,x+h/2,y+l1*h
58、/2); l3=subs(f,x,y,x+h/2,y+l2*h/2); l4=subs(f,x,y,x+h,y+l3*h); y=y+h*(l1+2*l2+2*l3+l4)/6; x=x+h; szj=szj;x,y;endplot(szj(:,1),szj(:,2), dg-)数学建模专题一数学建模专题一 Matlab 基础基础Runge-Kutta 方法方法数学建模专题一数学建模专题一 Matlab 基础基础Euler 法与法与 R-K法误差比较法误差比较数学建模专题一数学建模专题一 Matlab 基础基础Matlab函数数值求解函数数值求解T,Y = solver(odefun,tspa
59、n,y0)其中其中 y0 为初值条件,为初值条件,tspan为求解区间;为求解区间;Matlab在数值求解在数值求解时自动对求解区间进行分割,时自动对求解区间进行分割,T (向量向量) 中返回的是分割点的中返回的是分割点的值值(自变量自变量),Y (向量向量) 中返回的是解函数在这些分割点上的函中返回的是解函数在这些分割点上的函数值。数值。solver 为为Matlab的的ODE求解器可以是求解器可以是 ode45、ode23、ode113、ode15s、ode23s、ode23t、ode23tb)没有一种算法可以有效地解决所有的没有一种算法可以有效地解决所有的 ODE 问题,因此问题,因此M
60、ATLAB 提供了多种提供了多种ODE求解器,对于不同的求解器,对于不同的ODE,可以调用不同的求解器。可以调用不同的求解器。数学建模专题一数学建模专题一 Matlab 基础基础Matlab提供的提供的ODE求解器求解器求解器求解器 ODE类型类型特点特点说明说明ode45非刚性非刚性单步法;单步法;4,5 阶阶 R-K 方法;方法;累计截断误差为累计截断误差为 (x)3大部分场合的大部分场合的首选方法首选方法ode23非刚性非刚性单步法;单步法;2,3 阶阶 R-K 方法;方法;累计截断误差为累计截断误差为 (x)3使用于精度较低的情形使用于精度较低的情形ode113非刚性非刚性多步法;多步
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 兽医心血管疾病药物治疗考核试卷
- 科技与教育的融合老年大学在线课程开发
- 商业综合体租赁政策与市场调研考核试卷
- 融资购车合同范本
- 人事部季度绩效回顾与调整计划
- 塑料容器在户外运动装备包装考核试卷
- 科技成果保护的国际合作与交流
- 生物课程社交媒体宣传方案计划
- 幼儿园教师互助学习的模式计划
- 新年激励自我的职场日记计划
- 《零起点学中医》课件
- 2024年度酒店智能化系统安装工程合同
- 2025年春部编版四年级语文下册教学计划
- 扣好人生的第一粒扣子演讲稿国旗下的讲话
- 新质生产力战略下AIGC赋能的知识和情报服务创新:新机制、新风险与新路径
- 高端医疗会所
- 课堂学习者差异化教学方案计划
- 十八项医疗核心制度培训
- 2024年标准版打印机的租赁合同模版(2篇)
- DB14T+3154-2024泡沫沥青就地冷再生路面施工技术规范
- 放射及相关人员辐射安全与防护培训考核试题
评论
0/150
提交评论