收藏 分销(赏)

MATLAB 实用教程:第3章MATLAB符号计算.doc

上传人:二*** 文档编号:4522520 上传时间:2024-09-26 格式:DOC 页数:28 大小:282KB
下载 相关 举报
MATLAB 实用教程:第3章MATLAB符号计算.doc_第1页
第1页 / 共28页
本文档共28页,全文阅读请下载到手机保存,查看更方便
资源描述
第3章 MATLAB符号计算 符号计算则是可以对未赋值的符号对象(可以是常数、变量、表达式)进行运算和处理。MATLAB具有符号数学工具箱(Symbolic Math Toolbox),将符号运算结合到MATLAB的数值运算环境。符号数学工具箱是建立在Maple软件基础上的。 3.1 符号表达式的建立 Symbolic Math Toolbox2.1版规定在进行符号计算时,首先要定义基本的符号对象然后才能进行符号运算。 3.1.1 创建符号常量 符号常量是不含变量的符号表达式,用sym命令来创建符号常量。 语法: sym(‘常量’) %创建符号常量 例如,创建符号常量,这种方式是绝对准确的符号数值表示: >> a=sym('sin(2)') a = sin(2) sym命令也可以把数值转换成某种格式的符号常量。 语法: sym(常量,参数) %把常量按某种格式转换为符号常量 说明:参数可以选择为’d’、’f’、’e’或’r’ 四种格式,也可省略,其作用如表3.1所示。 表3.1 参数设置 参数 作用 d 返回最接近的十进制数值(默认位数为32位) f 返回该符号值最接近的浮点表示 r 返回该符号值最接近的有理数型(为系统默认方式),可表示为p/q、p*q、10^q、pi/q、2^q和sqrt(p)形式之一 e 返回最接近的带有机器浮点误差的有理值 例如,创建符号常量,这种方式是绝对准确的符号数值表示: a=sym('sin(2)') a = sin(2) 例如,把常量转换为符号常量,按系统默认格式转换: a=sym(sin(2)) a = 8190223105242182*2^(-53) 【例3.1】创建数值常量和符号常量。 a1=2*sqrt(5)+pi %创建数值常量 a1 = 7.6137 a2=sym('2*sqrt(5)+pi') %创建符号表达式 a2 = 2*sqrt(5)+pi a3=sym(2*sqrt(5)+pi) %按最接近的有理数型表示符号常量 a3 = 8572296331135796*2^(-50) a4=sym(2*sqrt(5)+pi,'d') %按最接近的十进制浮点数表示符号常量 a4 = 7.6137286085893727261009189533070 a31=a3-a1 %数值常量和符号常量的计算 a31 = 0 a5='2*sqrt(5)+pi' %字符串常量 a5 = 2*sqrt(5)+pi 可以通过查看工作空间来查看各变量的数据类型和存储空间,工作空间如图3.1所示。图3.1 工作空间窗口 3.1.2 创建符号变量和表达式 创建符号变量和符号表达式可以使用sym和syms命令。 1. 使用sym命令创建符号变量和表达式 语法: sym(‘变量’,参数) %把变量定义为符号对象 说明:参数用来设置限定符号变量的数学特性,可以选择为’positive’、’real’和’unreal’, ’positive’ 表示为“正、实”符号变量,’real’表示为“实”符号变量,’unreal’ 表示为“非实”符号变量。如果不限定则参数可省略。 【例3.2】创建符号变量,用参数设置其特性。 syms x y real %创建实数符号变量 z=x+i*y; %创建z为复数符号变量 real(z) %复数z的实部是实数x ans = x sym('x','unreal'); %清除符号变量的实数特性 real(z) %复数z的实部 ans = 1/2*x+1/2*conj(x) 程序分析:设置x、y为实数型变量,可以确定z的实部和虚部。 语法: sym(‘表达式’) %创建符号表达式 【例3.2续】创建符号表达式。 f1=sym('a*x^2+b*x+c') f1 = a*x^2+b*x+c 2.使用syms命令创建符号变量和符号表达式 语法: syms(‘arg1’, ‘arg2’, …,参数) %把字符变量定义为符号变量 syms arg1 arg2 …,参数  %把字符变量定义为符号变量的简洁形式 说明:syms用来创建多个符号变量,这两种方式创建的符号对象是相同的。参数设置和前面的sym命令相同,省略时符号表达式直接由各符号变量组成。 【例3.2续】使用syms命令创建符号变量和符号表达式。 syms a b c x %创建多个符号变量 f2=a*x^2+b*x+c %创建符号表达式 f2 = a*x^2+b*x+c syms('a','b','c','x') f3=a*x^2+b*x+c; %创建符号表达式 程序分析:既创建了符号变量a、b、c、x,又创建了符号表达式,f2、f3和f1符号表达式相同。 3.1.3 符号矩阵 用sym和syms命令也可以创建符号矩阵。 A=sym('[a,b;c,d]') A = [ a, b] [ c, d] 例如,使用syms命令创建相同的符号矩阵: syms a b c d A=[a b;c d] A = [ a, b] [ c, d] 【例3.3】比较符号矩阵与字符串矩阵的不同。 A=sym('[a,b;c,d]') %创建符号矩阵 A = [ a, b] [ c, d] B='[a,b;c,d]' %创建字符串矩阵 B = [a,b;c,d] C=[a,b;c,d] %创建数值矩阵 ??? Undefined function or variable 'a'. 程序分析:由于数值变量a、b、c、d未事先赋值,MATLAB给出错误信息。 C=sym(B) %转换为符号矩阵 C = [ a, b] [ c, d] whos Name Size Bytes Class A 2x2 312 sym object B 1x9 18 char array C 2x2 312 sym object Grand total is 25 elements using 642 bytes 程序分析:查看符号矩阵A,可以看到为2×2的符号矩阵,占用较多的字节。 3.2符号表达式的代数运算 符号运算与数值运算的区别主要有以下几点: § 传统的数值型运算因为要受到计算机所保留的有效位数的限制,它的内部表示法总是采用计算机硬件提供的8位浮点表示法,因此每一次运算都会有一定的截断误差,重复的多次数值运算就可能会造成很大的累积误差。符号运算不需要进行数值运算,不会出现截断误差,因此符号运算是非常准确的。 § 符号运算可以得出完全的封闭解或任意精度的数值解。 § 符号运算的时间较长,而数值型运算速度快。 3.2.1符号表达式的代数运算 符号表达式的运算符和基本函数都与数值计算中的几乎完全相同。 1. 符号运算中的运算符 (1) 基本运算符 § 运算符“+”,“-”,“*”,“\”,“/”,“^”分别实现符号矩阵的加、减、乘、左除、右除、求幂运算。 § 运算符“.*”,“./”,“.\”,“.^”分别实现符号数组的乘、除、求幂,即数组间元素与元素的运算。 § 运算符“′”,“.′”分别实现符号矩阵的共轭转置、非共轭转置。 (2) 关系运算符 § 在符号对象的比较中,没有“大于”、“大于等于”、“小于”、“小于等于”的概念,而只有是否“等于”的概念。 § 运算符“= =”、“~=”分别对运算符两边的符号对象进行“相等”、“不等”的比较。当为“真”时,比较结果用1表示;当为“假”时,比较结果则用0表示。 2. 函数运算 (1) 三角函数和双曲函数 三角函数包括sin、cos、tan;双曲函数包括sinh、cosh、tanh;三角反函数除了atan2函数仅能用于数值计算外,其余的asin、acos、atan函数在符号运算中与数值计算的使用方法相同。 (2) 指数和对数函数 指数函数sqrt、exp、expm的使用方法与数值计算的完全相同;对数函数在符号计算中只有自然对数log(表示ln),而没有数值计算中的log2和log10。 (3) 复数函数 复数的共轭conj、求实部real、求虚部imag和求模abs函数与数值计算中的使用方法相同。但注意,在符号计算中,MATLAB没有提供求相角的命令。 (4) 矩阵代数命令 MATLAB提供的常用矩阵代数命令有diag,triu,tril,inv,det,rank, poly,expm,eig等,它们的用法几乎与数值计算中的情况完全一样。 【例3.4】求矩阵的行列式值、非共轭转置和特征值。 syms a11 a12 a21 a22 A=[a11 a12;a21 a22] %创建符号矩阵 A = [ a11, a12] [ a21, a22] det(A) %计算行列式 ans = a11*a22-a12*a21 A.' %计算非共轭转置 ans = [ a11, a21] [ a12, a22] eig(A) %计算特征值 ans = [ 1/2*a11+1/2*a22+1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)] [ 1/2*a11+1/2*a22-1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)] 【例3.5】符号表达式f=2x2+3x+4与g=5x+6的代数运算。 f=sym('2*x^2+3*x+4') f = 2*x^2+3*x+4 g=sym('5*x+6') g = 5*x+6 f+g %符号表达式相加 ans = 2*x^2+8*x+10 f*g %符号表达式相乘 ans = (2*x^2+3*x+4)*(5*x+6) 3.2.2 符号数值任意精度控制和运算 1. Symbolic Math Toolbox中的算术运算方式 在Symbolic Math Toolbox中有三种不同的算术运算: § 数值型:MATLAB的浮点运算。 § 有理数型:Maple的精确符号运算。 § VPA型:Maple的任意精度运算。 2. 任意精度控制 任意精度的VPA型运算可以使用digits和vpa命令来实现。 语法: digits(n) %设定默认的精度 说明:n为所期望的有效位数。digits函数可以改变默认的有效位数来改变精度,随后的每个进行Maple函数的计算都以新精度为准。当有效位数增加时,计算时间和占用的内存也增加。命令“digits”用来显示默认的有效位数,默认为32位。 语法: S=vpa(s,n) %将s表示为n位有效位数的符号对象 说明:s可以是数值对象或符号对象,但计算的结果S一定是符号对象;当参数n省略时则以给定的digits指定精度。vpa命令只对指定的符号对象s按新精度进行计算,并以同样的精度显示计算结果,但并不改变全局的digits参数。 【例3.6】对表达式进行任意精度控制的比较。 a=sym('2*sqrt(5)+pi') a = 2*sqrt(5)+pi digits %显示默认的有效位数 Digits = 32 vpa(a) %用默认的位数计算并显示 ans = 7.6137286085893726312809907207421 vpa(a,20) %按指定的精度计算并显示 ans = 7.6137286085893726313 digits(15) %改变默认的有效位数 vpa(a) %按digits指定的精度计算并显示 ans = 7.61372860858937 3. Symbolic Math Toolbox中的三种运算方式的比较 【例3.6续】用三种运算方式表达式比较2/3的结果。 a1 =2/3 %数值型 a1 = 0.6667 a2 = sym(2/3) %有理数型 a2 = 2/3 a3 =vpa('2/3',32) %VPA型 a3 = .66666666666666666666666666666667 程序分析: § 三种运算方式中数值型运算的速度最快。 § 有理数型符号运算的计算时间和占用内存是最大的,产生的结果是非常准确的。 § VPA型的任意精度符号运算比较灵活,可以设置任意有效精度,当保留的有效位数增加时,每次运算的时间和使用的内存也会增加。 § 数值型变量a1结果显示的有效位数并不是存储的有效位数,在第一章中介绍显示的有效位数由“format”命令控制。如下面修改“format”命令就改变了显示的有效位数: format long a1 a1 = 0.66666666666667 3.2.3 符号对象与数值对象的转换 1. 将数值对象转换为符号对象 sym命令可以把数值型对象转换成有理数型符号对象,vpa命令可以将数值型对象转换为任意精度的VPA型符号对象。 2. 将符号对象转换为数值对象 使用double、 numeric函数可以将有理数型和VPA型符号对象转换成数值对象。 语法: N=double(S) %将符号变量S转换为数值变量N N=numeric(S) %将符号变量S转换为数值变量N 【例3.7】将符号变量与数值变量进行转换。 clear a1=sym('2*sqrt(5)+pi') a1 = 2*sqrt(5)+pi b1=double(a1) %转换为数值变量 b1 = 7.6137 a2=vpa(sym('2*sqrt(5)+pi'),32) a2 = 7.6137286085893726312809907207421 b2=numeric(a2) %转换为数值变量 b2 = 7.6137 【例3.7续】由符号变量得出数值结果。 b3=eval(a1) b3 = 7.6137 用“whos”命令查看变量的类型,可以看到b1、b2、b3都转换为双精度型: whos Name Size Bytes Class a1 1x1 148 sym object a2 1x1 190 sym object b1 1x1 8 double array b2 1x1 8 double array b3 1x1 8 double array Grand total is 50 elements using 362 bytes 3.3符号表达式的操作和转换 3.3.1符号表达式中自由变量的确定 1. 自由变量的确定原则 ,MATLAB将基于以下原则选择一个自由变量: § 小写字母i和j不能作为自由变量。 § 符号表达式中如果有多个字符变量,则按照以下顺序选择自由变量:首先选择x作为自由变量;如果没有x,则选择在字母顺序中最接近x的字符变量;如果与x相同距离,则在x后面的优先。 § 大写字母比所有的小写字母都靠后。 2. findsym函数 如果不确定符号表达式中的自由符号变量,可以用findsym函数来自动确定。 语法: findsym(EXPR,n) %确定自由符号变量 说明:EXPR可以是符号表达式或符号矩阵;n为按顺序得出符号变量的个数,当n省略时,则不按顺序得出EXPR中所有的符号变量。 【例3.8】得出符号表达式中的符号变量。 f=sym('a*x^2+b*x+c') f = a*x^2+b*x+c findsym(f) %得出所有的符号变量 ans = a, b, c, x g=sym('sin(z)+cos(v)') g = sin(z)+cos(v) findsym(g,1) %得出第一个符号变量 ans = z 程序说明:符号变量z和v距离x相同,以在x后面的z为自由符号变量。 3.3.2符号表达式的化简 同一个数学函数的符号表达式的可以表示成三种形式,例如以下的f(x)就可以分别表示为: § 多项式形式的表达方式:f(x)=x3+6x2+11x-6 § 因式形式的表达方式:f(x)=(x-1)(x-2)(x-3) § 嵌套形式的表达方式:f(x)=x(x(x-6)+11)-6 【例3.9】三种形式的符号表达式的表示。 f=sym('x^3-6*x^2+11*x-6') %多项式形式 f = x^3-6*x^2+11*x-6 g= sym('(x-1)*(x-2)*(x-3)') %因式形式 g = (x-1)*(x-2)*(x-3) h= sym(' x*(x*(x-6)+11)-6') %嵌套形式 h = x*(x*(x-6)+11)-6 1. pretty函数 【例3.9续】给出相应的符号表达式形式。 pretty(f) 3 2 x - 6 x + 11 x - 6 2. collect函数 【例3.9续】给出相应的符号表达式形式。 collect(g) ans = x^3-6*x^2+11*x-6 当有多个符号变量,可以指定按某个符号变量来合并同类项。下面有x、y符号变量的表达式: f1=sym('x^3+2*x^2*y+4*x*y+6') f1 = x^3+2*x^2*y+4*x*y+6 collect(f1,'y') %按y来合并同类项 ans = (2*x^2+4*x)*y+x^3+6 3. expand函数 【例3.9续】给出相应的符号表达式形式。 expand(g) ans = x^3-6*x^2+11*x-6 4. horner函数 【例3.9续】给出符号表达式的嵌套形式。 horner(f) ans = x*(x*(x-6)+11)-6 5. factor函数 【例3.9续】给出符号表达式的因式形式。 factor(f) ans = (x-1)*(x-2)*(x-3) 6. simplify函数 【例3.9续】利用三角函数来简化符号表达式cos2x-sin2x。 y=sym('cos(x)^2-sin(x)^2') y = cos(x)^2-sin(x)^2 simplify(y) ans = 2*cos(x)^2-1 7. simple函数 simple 函数给出多种简化形式,给出除了pretty 、collect、expand、factor、simplify简化形式之外的radsimp、combine、combine(trig)、convert形式,并寻求包含最少数目字符的表达式简化形式。 【例3.9续】利用simple简化符号表达式cos2x-sin2x。 simple(y) simplify: 2*cos(x)^2-1 radsimp: cos(x)^2-sin(x)^2 combine(trig): cos(2*x) factor: (cos(x)-sin(x))*(cos(x)+sin(x)) expand: cos(x)^2-sin(x)^2 combine: cos(2*x) convert(exp): (1/2*exp(i*x)+1/2/exp(i*x))^2+1/4*(exp(i*x)-1/exp(i*x))^2 convert(sincos): cos(x)^2-sin(x)^2 convert(tan): (1-tan(1/2*x)^2)^2/(1+tan(1/2*x)^2)^2-4*tan(1/2*x)^2/(1+tan(1/2*x)^2)^2 collect(x): cos(x)^2-sin(x)^2 ans = cos(2*x) 程序分析:得出最简化的符号表达式为“cos(2*x)”。 3.3.3符号表达式的替换 1. subexpr函数 语法: subexpr(s,s1) %用符号变量s1来置换s中的子表达式 subexpr函数对子表达式是自动寻找的,只有比较长的子表达式才被置换,比较短的子表达式,即使重复出现多次,也不被置换。 【例3.10】用subexpr函数使的特征值表达式简洁。 syms a b c d x s=eig([a b;c d]) %计算特征值 s = [ 1/2*a+1/2*d+1/2*(a^2-2*a*d+d^2+4*b*c)^(1/2)] [ 1/2*a+1/2*d-1/2*(a^2-2*a*d+d^2+4*b*c)^(1/2)] subexpr(s,x) %用x替换子表达式 ans = [ 1/2*a+1/2*d+1/2*(a^2-2*a*d+d^2+4*b*c)^(1/2)] [ 1/2*a+1/2*d-1/2*(a^2-2*a*d+d^2+4*b*c)^(1/2)] 2. subs函数 subs函数可用来进行对符号表达式中符号变量的替换。 语法: subs(s) %用给定值替换符号表达式s中的所有变量 subs(s,new) %用new替换符号表达式s中的自由变量 subs(s,old,new) %用new替换符号表达式s中的old变量 【例3.10续】用subs函数对符号表达式(x+y)2+3(x+y)+5进行替换。 f=sym('(x+y)^2+3*(x+y)+5') %创建符号表达式 f = (x+y)^2+3*(x+y)+5 x=5; f1=subs(f) %用工作空间的给定值替换x f1 = (5+y)^2+20+3*y f2=subs(f,'x+y','s') %用s替换x+y f2 = ((s))^2+3*((s))+5 f3=subs(f,'x+y',5) %用常数5替换x+y f3 = 45 f4=subs(f,'x','z') %用z替换x f4 = ((z)+y)^2+3*((z)+y)+5 3.3.4求反函数和复合函数 在MATLAB中finverse函数可以求得符号函数的反函数。 语法: finverse(f,v) %对指定自变量v的函数f(v)求反函数 说明:当v省略,则对默认的自由符号变量求反函数。 1. 求反函数 【例3.11】求tex的反函数。 f=sym('t*e^x') %原函数 f = t*e^x g=finverse(f) %对默认自由变量求反函数 g = log(x/t)/log(e) g=finverse(f,'t') %对t求反函数 g = t/(e^x) 程序分析:如果先定义t为符号变量,则参数't'的单引号可去掉: syms t g=finverse(f,t) 2. 求复合函数 【例3.11续】计算tex与ay2+by+c的复合函数。 f=sym('t*e^x'); %创建符号表达式 g=sym('a*y^2+b*y+c'); %创建符号表达式 h1=compose(f,g) %计算f(g(x)) h1 = t*e^(a*y^2+b*y+c) h2=compose(g,f) %计算g(f(x)) h2 = a*t^2*(e^x)^2+b*t*e^x+c h3=compose(f,g,'z') %计算f(g(z)) h3 = t*e^(a*z^2+b*z+c) 【例3.11续】计算得出tex与y2的复合函数。 f1=sym('t*e^x'); g1=sym('y^2'); h1=compose(f1,g1) h1 = t*e^(y^2) h2=compose(f1,g1,'z') %计算f(g(z)) h2 = t*e^(z^2) h3=compose(f1,g1,'t','y') %以t为自变量计算f(g(z)) h3 = y^2*e^x h4=compose(f1,g1,'t','y','z') %以t为自变量计算f(g(z)),并用z替换y h4 = z^2*e^x h5=subs(h3,'y','z') %用替换的方法实现h5与h4相同结果 h5 = (z)^2*e^x 3.3.5 符号表达式的转换 1. 符号表达式与多项式的转换 构成多项式的符号表达式f(x)可以与多项式系数构成的行向量进行相互转换,MATLAB提供了函数sym2poly和poly2sym实现相互转换。 (1) sym2poly函数 【例3.12】将符号表达式2x+3x2+1转换为行向量。 f=sym('2*x+3*x^2+1') f = 2*x+3*x^2+1 sym2poly(f) %转换为按降幂排列的行向量 ans = 3 2 1 f1=sym('a*x^2+b*x+c') f1 = a*x^2+b*x+c sym2poly(f1) ??? Error using ==> sym/sym2poly Input has more than one symbolic variable. 程序分析:只能对含有一个变量的符号表达式进行转换。 (2) poly2sym函数 【例3.12续】将行向量转换为符号表达式。 g=poly2sym([1 3 2]) %默认x为符号变量的符号表达式 g = x^2+3*x+2 g=poly2sym([1 3 2],sym('y')) %y为符号变量的符号表达式 g = y^2+3*y+2 2. 提取分子和分母 如果符号表达式是一个有理分式(两个多项式之比),可以利用numden函数来提取分子或分母,还可以进行通分。 语法: [n,d]=numden(f) 说明:n为分子;d为分母;f为有理分式。 【例3.13】用numden函数来提取符号表达式和的分子、分母。 f1=sym('1/(s^2+3*s+2)') f1 = 1/(s^2+3*s+2) f2=sym('1/s^2+3*s+2') f2 = 1/s^2+3*s+2 [n1,d1]=numden(f1) n1 = 1 d1 = s^2+3*s+2 [n2,d2]=numden(f2) n2 = 1+3*s^3+2*s^2 d2 = s^2 3.4 符号极限、微积分和级数求和 3.4.1符号极限 假定符号表达式的极限存在,Symbolic Math Toolbox提供了直接求表达式极限的函数limit,函数limit的基本用法如表3.2所示。 表3.2 limit函数的用法 表达式 函数格式 说明 limt(f) 对x求趋近于0的极限 limt(f,x,a) 对x求趋近于a的极限,当左右极限不相等时极限不存在。 limt(f,x,a, left) 对x求左趋近于a的极限 limt(f,x,a, right) 对x求右趋近于a的极限 【例3.14】分别求1/x在0处从两边趋近、从左边趋近和从右边趋近的三个极限值。 f=sym('1/x') f = 1/x limit(f) %对x求趋近于0的极限 ans = NaN limit(f,'x',0) %对x求趋近于0的极限 ans = NaN limit(f,'x',0,'left') %左趋近于0 ans = -inf limit(f,'x',0,'right') %右趋近于0 ans = inf 程序分析:当左右极限不相等,表达式的极限不存在为NaN。 采用极限方法也可以用来求函数的导数:。 【例3.14续】求函数cos(x)的导数。 syms t x limit((cos(x+t)-cos(x))/t,t,0) ans = -sin(x) 3.4.2符号微分 函数diff是用来求符号表达式的微分。 语法: diff(f) %求f对自由变量的一阶微分 diff(f,t) %求f对符号变量t的一阶微分 diff(f,n) %求f对自由变量的n阶微分 diff(f,t,n) %求f对符号变量t的n阶微分 【例3.15】已知f(x)=ax2+bx+c,求f(x)的微分。 f=sym('a*x^2+b*x+c') f = a*x^2+b*x+c diff(f) %对默认自由变量x求一阶微分 ans = 2*a*x+b diff(f,'a') %对符号变量a求一阶微分 ans = x^2 diff(f,'x',2) %对符号变量x求二阶微分 ans = 2*a diff(f,3) %对默认自由变量x求三阶微分 ans = 0 微分函数diff也可以用于符号矩阵,其结果是对矩阵的每一个元素进行微分运算。 【例3.15续】对符号矩阵求微分。 syms t x g=[2*x t^2;t*sin(x) exp(x)] %创建符号矩阵 g = [ 2*x, t^2] [ t*sin(x), exp(x)] diff(g) %对默认自由变量x求一阶微分 ans = [ 2, 0] [ t*cos(x), exp(x)] diff(g,'t') %对符号变量t求一阶微分 ans = [ 0, 2*t] [ sin(x), 0] diff(g,2) %对默认自由变量x求二阶微分 ans = [ 0, 0] [ -t*sin(x), exp(x)] diff还可以用于对数组中的元素进行逐项求差值。 【例3.15续】可以使用diff计算向量间元素的差值。 x1=0:0.5:2; y1=sin(x1) y1 = 0 0.4794 0.8415 0.9975 0.9093 diff(y1) %计算元素差 ans = 0.4794 0.3620 0.1560 -0.0882 程序分析:计算出的差值比原来的向量少一列。 3.4.3符号积分 积分有定积分和不定积分,运用函数int可以求得符号表达式的积分。 语法: int(f,’t’) %求符号变量t的不定积分 int(f,’t’,a,b) %求符号变量t的积分 int(f,’t’,’m’,’n’) %求符号变量t的积分 说明:t为符号变量,当t省略则为默认自由变量;a和b为数值,[a,b]为积分区间;m和n为符号对象,[m,n]为积分区间;与符号微分相比,符号积分复杂得多。因为函数的积分有时可能不存在,即使存在,也可能限于很多条件,MATLAB无法顺利得出。当MATLAB不能找到积分时,它将给出警告提示并返回该函数的原表达式。 【例3.16】求积分和 。 f=sym('cos(x)'); int(f) %求不定积分 ans = sin(x) int(f,0,pi/3) %求定积分 ans = 1/2*3^(1/2) int(f,'a','b') %求定积分 ans = sin(b)-sin(a) int(int(f)) %求多重积分 ans = -cos(x) diff和int命令,也可以直接对字符串f进行运算: f='cos(x)'; 【例3.16续】求符号矩阵的积分。 syms t x g=[2*x t^2;t*sin(x) exp(x)] %创建符号矩阵 g = [ 2*x, t^2]
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 初中其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服