四MATLAB符号运算

合集下载

matlab数值运算和符号运算

matlab数值运算和符号运算

《深度探讨:从数值运算到符号运算的MATLAB应用》在科学计算领域中,MATLAB无疑是一个不可或缺的工具。

它被广泛应用于数学建模、数据分析、图形可视化和算法开发等领域。

在MATLAB中,数值运算和符号运算是两个核心概念,它们分别在不同的领域中发挥着重要作用。

本文将从数值运算和符号运算两个方面展开讨论,带您深入探索MATLAB的应用价值。

一、数值运算1. MATLAB中的数值数据类型在MATLAB中,常见的数值数据类型包括整数、浮点数和复数等。

它们在科学计算中有着广泛的应用,例如在矩阵运算、微分方程求解和优化算法中。

2. 数值计算函数的应用MATLAB提供了丰富的数值计算函数,包括线性代数运算、插值和拟合、统计分布和随机数生成等。

这些函数为科学计算提供了强大的支持,使得复杂的数值计算变得更加简单高效。

3. 数值方法在实际问题中的应用通过具体的案例,我们可以深入了解MATLAB在实际问题中的数值计算方法。

通过有限元分析解决结构力学问题、通过数值积分求解物理方程、通过数值微分求解工程问题等。

二、符号运算1. MATLAB中的符号计算工具MATLAB提供了符号计算工具包,可以进行符号变量的定义、代数运算、微分积分和方程求解等。

这为数学建模、符号推导和精确计算提供了强大的支持。

2. 符号计算函数的应用通过具体的例子,我们可以深入了解MATLAB中符号计算函数的应用。

利用符号计算求解微分方程、利用符号变量定义复杂的代数表达式等。

3. 符号计算在科学研究中的应用通过详细的案例,我们可以了解符号计算在科学研究中的应用。

利用符号计算推导物理模型、利用符号运算求解工程问题等。

总结与展望:通过本文的深度探讨,我们对MATLAB中的数值运算和符号运算有了全面的了解。

数值运算为我们提供了高效的数值计算工具,而符号运算则为我们提供了精确的符号计算工具。

这两者相辅相成,在不同的领域中发挥着重要的作用。

希望通过本文的阐述,读者可以更加深入地理解MATLAB中数值运算和符号运算的应用,提升科学计算的能力和水平。

MATLAB符号运算

MATLAB符号运算

符号运算科学计算包括数值计算和符号计算两种计算,数值计算是近似计算;而符号计算则是绝对精确的计算。

符号变量的生成和使用1、符号变量、符号表达式和符号方程的生成(1)、使用sym函数定义符号变量和符号表达式单个符号变量sqrt(2)sym(sqrt(2)) %显示精确结果a=sqrt(sym(2)) %显示精确结果double(a)sym(2)/sym(3) %显示精确结果2/5+1/3sym(2/5+1/3) %显示精确结果sym(2)/sym(5)+sym(1)/sym(3) %显示精确结果sym函数定义符号表达式:单个变量定义法,整体定义法单个变量定义法a=sym('a')b=sym('b')c=sym('c')x=sym('x')f=a*x^2+b*x+c整体定义法f=sym('a*x^2+b*x+c')g=f^2+4*f-2(2)、使用syms函数定义符号变量和符号表达式一次可以创建任意多个符号变量syms var1 var2 var3…syms a b c xf=a*x^2+b*x+cg=f^2+4*f-2(3)、符号方程的生成函数:数字和变量组陈的代数式方程:函数和等号组成的等式用sym函数生成符号方程:equation1=sym('sin(x)+cos(x)=1')2、符号变量的基本操作(1)、findsym函数用于寻找符号变量findsym(f):找出f表达式中的符号变量findsym(s,n):找出表达式s中n个与x接近的变量syms a alpha b x1 yfindsym(alpha+a+b)findsym(cos(alpha)*b*x1+14*y,2) %x1,yfindsym(y*(4+3i)+6j)findsym(cos(alpha)*b*x1+14*y,1) %x1findsym(cos(alpha)*b*x1+14*y,3) %x1,y,b(2)、任意精确度的符号表达式digits函数设定所用数值的精度digits:在command window显示当前设定的数值精度digits(D):设置数值的精度为DD=digits:在command window中返回当前设定数值精度digitsdigits(100)D=digitsvpa函数进行可控精度运算R=vpa(S):显示符号表达式S在当前精度D下的值,D是使用digits函数设置的数值精度vpa(S,D):显示符号表达式S在精度D下的值,D不是当前精度值,只是临时设置的r=vpa(pi)r=vpa(pi,1000)q=vpa(hilb(2))q=vpa(hilb(2),6)(3)、数值型变量与符号型变量的转换形式数值型变量t转换成符号型变量有理数形式:sym(t)或sym(t,’r’)浮点数形式:sym(t,’f’)指数形式:sym(t,’e’)指数精度形式:sym(t,’d’)t=0.1sym(t)sym(t,'r')sym(t,'f')sym(t,'e')sym(t,'d')可以通过digits函数改变精度digits(7)sym(t,'d')也可以用于矩阵,但是矩阵只能转换为有理数形式A=hilb(4)A=sym(A)A=sym(A,'d') %报错A=sym(A,'e') %报错A=sym(A,'f') %报错3、符号表达式(符号函数)的操作(1)、四则运算(与通常算术式一样)syms x y a bfun1=sin(x)+cos(y)fun1+fun2(2)、合并同类项collect(S,v):将符号矩阵S中所有同类项合并,并以v为符号变量输出collect(S):使用findsym函数规定的默认变量,代替上式的vsyms x ycollect(x^2*y+y*x-x^2-2*x)f=-1/4*x*exp(-2*x)+3/16*exp(-2*x)collect(f)(3)、因式分解horner(P):将表达式P进行因式分解syms xfun1=2*x^3+2*x^2-32*x+40horner(fun1)fun2=x^3-6*x^2+11*x-6horner(fun2)(4)、简化simplify(S):将表达式S中的每个元素都进行简化,即便使用多次simplify也不一定能得到最简形式syms xfun1=(1/x+7/x^2+12/x+8)^(1/3)sfy1=simplify(fun1)sfy2=simplify(sfy1)simplify(sin(x)^2+cos(x)^2)simple(S):使用多种代数方法对S进行简化,显其中最简单的结果[R,how]=simple(S):R为最简结果,how为简化方法的字符串s=2*cos(x)^2-sin(x)^2simple(s)[R how]=simple(s)simple(f)(5)、subs函数用于替换求值subs函数可以将符号表达式的符号变量替换为数值变量subs(S):将S中自由符号变量用调用函数中的值或是MATLAB工作区间值替换subs(S,new):将S中自由符号变量用数值型变量或表达式new替换subs(S,old,new):将S中符号变量old用数值型变量或表达式new替换syms x yf=x^2*y+5*x*sqrt(y)subs(f)subs(f,x,3)subs(f,y,3)subs(f,3) %与subs(f,x,3)结果相同用户没指定被替换的符号变量,对单个字母的变量,MATLAB选择在字母表中与x接近的字母,若有两个变量离x一样近,则选择字母表中靠后的那个findsym(f,1)g=s+tfindsym(g,1) %找到tsubs(g,1) %替换为s+1多个变量替换syms a bsubs(cos(a)+sin(b),{a,b},{sym('alpha'),2})用矩阵替换syms t x ysubs(exp(a*t),a,-magic(2))subs(x*y,{x,y},{[0 1;-1 -1],[1 -1;-2 1]})(6)、反函数g=finverse(f):求函数f的反函数,返回g也是符号函数g=finverse(f,v):设定f的自变量是v,当f包括不止一个变量时最好使用该命令syms x yf=x^2+yfinverse(f,y)finverse(f) %由于没指明自变量,给出警告syms xf=x^2g=finverse(f) %x^2的反函数不唯一,默认给出正值fg=simple(compose(g,f)) %验证反函数正确性(7)、复合函数compose(f,g):返回f=f(x),g=g(y)的复合函数f(g(y)),x是findsym定义的f的符号变量,y是findsym定义的g的符号变量compose(f,g,z):返回f=f(x),g=g(y)的复合函数f(g(z)),返回函数以z为自变量compose(f,g,x,z):返回f(g(z)),x为函数f的独立变量compose(f,g,x,y,z):返回f(g(z)),x为函数f的独立变量,y为函数g的独立变量syms x y z t uf=1/(1+x^2)g=sin(y)h=x^tp=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)、使用sym函数直接生成符号矩阵a1=sym('[1/3 2/3 5/7;9/11 11/13 13/17;17/19 19/23 23/29]')a1=sym('[1/3,0.2+sqrt(2),pi;2/7,sin(x),cos(x),log(x);sin(x)^2,sin(22*x),exp(x)]') %长度不一致的行补0(2)、用生成子矩阵的方法生成符号矩阵与字符串矩阵的直接输入法类似,同一列元素长度须相同(不同补0)a=['[100,cos(x)]';'[1/s,x ]'](3)、由数值矩阵转换为符号矩阵系统首先将自动在MATLAB工作区间将数值型变量转换为符号型变量,用户也可以用sym函数进行转换M=[30 1 1 1;6 1 5 9;9 8 25 4;32 45 62 0]S=sym(M)M1=[0.3 0.33 0.333 1/3;3.14 3.142 3.1416 pi;log(2) log(3) log(5) log(7);sin(1) cos(1) tan(1) atan(1)]S1=sym(M1)2、符号矩阵及符号数组的运算(1)、符号矩阵的四则运算A+B和A-B同型矩阵可以分别对对应分量进行加减,若A与B至少有一个为标量,则把标量扩大为与另一个同型的阵列A*B为线性代数中定义的矩阵乘法A\B实现左除,X=A\B为符号线性方程组A*X=B的解,A\B近似等于inv(A)*B,X不存在或不唯一,则产生警告,A可以是非方阵,要求方程组必须是相容的A/B实现右除,X=B/A为符号线性方程组X*A=B的解,B/A近似等于B*inv(A),X不存在或不唯一,则产生警告,A可以是非方阵,要求方程组必须是相容的m=sym('[x,x^2,x*2,1/x]')n=sym('[2*x,y,x,x^2]')m+nm-nm*n %出错m\nm/n %出错(2)、符号数组的四则运算若有标量,则扩展为同型阵列.*乘法./右除.\左除q=sym('[3 4 9 6;x y z w;a b c d]')p=sym('[x 1/x x^2 x^3;a b c d;5 2 3 6]')q.*pq./pq.\pr=q*p %矩阵行列不匹配,出错(3)、矩阵和数组的逆运算A’实现矩阵的Hermition转置,若A为复数矩阵,则A’为共轭转置q=sym('[3 4 9 6;x y z w;a b c d]')q' %符号变量具体值不知,只能用conj给出q.' %普通转置(4)、矩阵和数组的幂运算A^B实现矩阵幂运算,若A为标量B为方阵,A^B用方阵B的特征值与特征向量计算数值。

matlab符号运算函数大全

matlab符号运算函数大全

3.1 算术符号操作命令+、-、*、.*、\、.\、/、./、^、.^、’、.’功能符号矩阵的算术操作用法如下:A+B、A-B 符号阵列的加法与减法。

若A与B为同型阵列时,A+B、A-B分别对对应分量进行加减;若A与B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行加减。

A*B 符号矩阵乘法。

A*B为线性代数中定义的矩阵乘法。

按乘法定义要求必须有矩阵A的列数等于矩阵B的行数。

即:若A n*k*B k*m=(a ij)n*k.*(b ij)k*m=C n*m=(c ij)n*m,则,i=1,2,…,n;j=1,2,…,m。

或者至少有一个为标量时,方可进行乘法操作,否则将返回一出错信息。

A.*B 符号数组的乘法。

A.*B为按参量A与B对应的分量进行相乘。

A与B必须为同型阵列,或至少有一个为标量。

即:A n*m.*B n*m=(a ij)n*m.*(b ij)n*m=C n*m=(c ij)n*m,则c ij= a ij* b ij,i=1,2,…,n;j=1,2,…,m。

A\B 矩阵的左除法。

X=A\B为符号线性方程组A*X=B的解。

我们指出的是,A\B近似地等于inv(A)*B。

若X不存在或者不唯一,则产生一警告信息。

矩阵A可以是矩形矩阵(即非正方形矩阵),但此时要求方程组必须是相容的。

A.\B 数组的左除法。

A.\B为按对应的分量进行相除。

若A与B为同型阵列时,A n*m.\B n*m=(a ij)n*m.\(b ij)n*m=C n*m=(c ij)n*m,则c ij= a ij\ b ij,i=1,2,…,n;j=1,2,…,m。

若若A与B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行操作。

A/B 矩阵的右除法。

X=B/A为符号线性方程组X*A=B的解。

我们指出的是,B/A粗略地等于B*inv(A)。

若X不存在或者不唯一,则产生一警告信息。

第3章 MATLAB符号计算

第3章  MATLAB符号计算
指数和对数函数。在符号计算中,指数函数sqrt、exp、expm的使用 方法与数值计算的使用方法完全相同;对数函数在符号计算中只有 自然对数log(表示ln),而没有数值计算中的log2和log10。
复数函数。在符号计算中,复数的共轭conj、求实部real、求虚部 imag和求模abs函数与数值计算中的使用方法相同。但注意,在符号 计算中,MATLAB没有提供求相角的命令。
2.使用syms命令创建符号变量和符号表达式
语法:
syms('arg1', ' arg2',…,参数) syms arg1 arg2 … 参数
%把字符变量定义为符号变量 %把字符变量定义为符号变量的简洁形式
说明:syms用来创建多个符号变量,以上两种方式创建的符号对象是相同的。参数设置和前面的sym命令 相同,省略时符号表达式直接由各符号变量组成。 【例3.2续】 使用syms命令创建符号变量和符号表达式。
>> syms x y real >> z=x+i*y; >> real(z) ans = x >> sym('x','unreal'); >> real(z) ans = x/2 + conj(x)/2
%创建实数符号变量 %创建z为复数符号变量 %复数z的实部是实数x
%清除符号变量的实数特性 %复数z的实部
符号运算中的运算符有以下2种。 (1)基本运算符。
① 运算符“”、“”、“*”、 “\”、“/”、“^”分别实现符号 矩阵的加、减、乘、左除、 右除、求幂运算。
② 运算符“.*”、“./”、“.\”、 “.^”分别实现符号数组的乘、 左除、右除、求幂,即数 组间元素与元素的运算。

matlab运算符号

matlab运算符号

MATLAB是一种面向矩阵与科学计算的广泛使用的软件工具包。

它能
够帮助用户解算数学和工程问题,快速生成精确计算和符号运算结果。

它使用各种强大的运算符号来支持非常高效的计算,这也是MATLAB
的最大优势之一。

Matlab的运算符号分为算术运算符号、关系运算符号、逻辑运算符号、按位置运算符号等。

算术运算符号是最常用的,它包括:加号(+)、减号(-)、乘号(*)、除号(/)、乘方(^)、商(\)等。

关系运算符号是用来比较两种不同对象之间大小关系的,常用的有:
等于(==)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)。

逻辑运算符号是用来描述逻辑的真假的,常用的有:与(&)、或(|)、否定(~)、非(~)。

按位运算符号用于操作位元,它包括:按位与(&)、按位或(|)、
按位异或(XOR)、取反(~)等。

Matlab的其他运算符号还包括赋值运算符号(=)、逗号(,)、句号(.)、冒号(:)、分号(;)、圆括号()、方括号([])、花括号({})等。

以上就是MATLAB中最常用的运算符号,它们协同工作,结合
MATLAB的其他功能,能够高效的计算数据,帮助用户完成复杂的计算任务。

matlab 符号运算 特征多项式

matlab 符号运算 特征多项式

文章标题:深度解析MATLAB符号运算中的特征多项式1. 引言MATLAB是一款功能强大的数学软件,其符号运算功能可以帮助我们进行高效的代数运算。

特征多项式作为代数中的重要概念,在MATLAB中也有着重要的应用。

本文将深入探讨MATLAB符号运算中的特征多项式,以帮助读者更好地理解这一概念。

2. 特征多项式的基本概念特征多项式可以用于描述一个矩阵的特征值,是一个和矩阵相关的多项式。

在MATLAB中,我们可以使用符号运算来计算特征多项式,从而得到矩阵的特征值。

特征多项式的计算过程涉及到矩阵的代数运算和特征值的求解,需要结合符号运算的功能进行处理。

3. MATLAB中的符号运算MATLAB提供了丰富的符号运算功能,可以进行符号变量的定义、代数运算和方程求解等操作。

通过符号运算,我们可以将代数运算的过程表达为符号形式,而不需要具体数值的输入。

这为我们进行特征多项式的计算提供了便利,可以更加直观地展示代数运算的过程。

4. 特征多项式的计算在MATLAB中,通过定义符号变量和建立矩阵,我们可以使用符号运算来计算特征多项式。

通过调用MATLAB中的特征值求解函数,我们可以得到矩阵的特征值,从而进一步求解特征多项式。

这个过程需要利用MATLAB中的矩阵运算和符号运算相结合,以实现特征多项式的精确计算。

5. 个人观点和理解在使用MATLAB进行符号运算和特征多项式的计算过程中,我深刻体会到其便利性和高效性。

符号运算不仅提供了代数运算的便捷方式,还可以帮助我们更深入地理解代数运算的概念和过程。

特征多项式作为代数中的重要概念,在MATLAB中得到了很好的体现,通过符号运算和矩阵运算相结合,我们可以更加灵活和高效地进行特征多项式的计算和求解。

6. 总结与回顾通过本文的深度解析,读者可以更好地理解MATLAB中符号运算的特征多项式。

从基本概念的介绍到具体计算的过程,我们可以逐步深入地了解特征多项式的应用和计算方法。

通过个人观点和理解的共享,也可以对特征多项式有更加全面、深刻和灵活的认识。

MATLAB 符号运算1


– 新的符号计算形式已被改造得与“ MATLAB 风格数值计算形式”浑然统一。



f=sym('2*x^2+3*x-5') g=sym('x^2-x+7') f+g f-g f*g f/g a=sym('x') f^(3*a) 19
基本的符号运算(续)
符号表达式的提取分子和分母运算(分式通分)
例 syms x a y z b; s1=3*x+y;s2=a*y+b; findsym(s1) findsym(s2,2) findsym(5*x+2) c=sym('3') findsym(a*x+b*y+c)
12
查找符号变量(续)
findsym(S,1):查找系统的缺省变量,事实上MATLAB按离字符‘x’最
MATLAB将按缺省原则确定主变量并对其进行相应微积分运算。
13
符号矩阵
符号矩阵
–元素为符号表达式
符号矩阵的建立
使用 sym 函数直接生成 >> A=sym('[1+x, sin(x); 5, exp(x)]') 将数值矩阵转化成符号矩阵 >> B=[2/3, sqrt(2); 5.2, log(3)]; >> C=sym(B)
– determ(S) 返回S矩阵的行列式值。更正——新版本已不存在

– A=sym('[sin(x),cos(x);acos(x),asin(x)]') – B=inv(A) – C=transpose(A) – D=det (A)

MATLAB符号计算

f ( x) = ax 2 + bx + c 的根
例2: :
2、常微分方程 、 matlab解常微分方程式的函数为: 解常微分方程式的函数为: 解常微分方程式的函数为 dsolve(‘equ’,’condition’); 其中, 代表常微分方程式, 为初始条件, 其中,equ代表常微分方程式,condition为初始条件, 代表常微分方程式 为初始条件 如果初始条件没有给出,则给出通解形式。 如果初始条件没有给出,则给出通解形式。 equ中 用字母D来表示求微分 D的数字表示几 来表示求微分, 注:在equ中,用字母D来表示求微分,D的数字表示几 重微分, 后的变量为因变量 后的变量为因变量。 重微分,D后的变量为因变量。如Dy表示一阶微分项 表示一阶微分项 ,D2y表示二阶微分项 表示二阶微分项 量都是对自变量t求导 求导。 量都是对自变量 求导。 ,并默认所有这些变
3.级数运算 级数运算 可用于级数的函数有: 可用于级数的函数有: (1)symsum(s,v,a,b) 自变量 在[a,b]之间取值时, 自变量v在 之间取值时, 之间取值时 对通项s求和 求和; 对通项 求和; (2)toylor(f,v,n)求f对自变量 的泰勒级数展开 ( 对自变量v的泰勒级数展开 ) 对自变量 至n阶; 阶
例:计算时间函数 f (t ) = e
−t 2
的傅立叶变换
例:计算时间函数 f (t ) = 0.1e − t sin(t −
π
3
) 的拉氏变换。 的拉氏变换。
例:计算时间函数 f (t ) = 0.1e − t sin(t − 结果: 结果:
π
3
) 的拉氏变换。 的拉氏变换。
3.5 方程求解 1、代数方程 、 利用符号表达式解代数方程所需要的函数为solve(f), 利用符号表达式解代数方程所需要的函数为 作用为解符号方程式f; 作用为解符号方程式 例:求一元二次方程

Matlab基础——符号的计算

[3, 2*x + 1] [a*x + a*y, 3*x + 4] d= [ 2, 3] [ x*y, 1]
3.符号表达式的因式分解与展开
● factor(s):对符号表达式s分解因式。 ● expand(s):对符号表达式s进行展开。 ● collect(s):对符号表达式s合并同类项。 ● collect(s,v):对符号表达式s按变量v合并同类项。
表达式s求n阶导数,n为正整数。 ● diff(s,'v',n):以v为自变量,对符号表达式s求n阶
导数。
【例 7.3】求下列函数的导数。
(1)y=cosx2,求 y'、y''、y'''。
( 2)

x y

a(t sin t) b(1 cos t)
,求
y'x

(3)
z

x6
3 y4
● limit(f,x,a):求符号函数f(x)的极限值,即计算当变量x趋近于常数 a时,f(x)函数的极限值。变量可以是其他的符号变量。
● limit(f[,a]):求当默认自变量x趋近于常数a时,符号函数f(x)的极限 值。当a默认时,求当默认自变量x趋近于0时的极限值。
● limit(f,x,a,'right')或limit(f,x,a,'left'):求符号函数f的极限值或。 'right'表示变量x从右边趋近于a,'left'表示变量x从左边趋近于a。
例如:
s= sym('(x^2+5*x+6)/(x+2)'); simplify(s) ans= x+3 函数simple试用几种不同的化简工具,然后选择在结果表达式中含有

matlab中逻辑运算符号

matlab中逻辑运算符号
在 MATLAB 中,逻辑运算符号通常使用 &(与) 运算符、|(或) 运算符、~(非) 运算符和 xor(异或) 运算符。

与 (&) 运算符操作使两变量取交集,或称并集为 0。

或 (|) 运算符操作使两变量取并集,或称交集为 0。

非 (~) 运算符操作使两变量取差集,或称交集为 1。

异或 (xor) 运算符操作使两变量取异集,或称并集为 1。

下面是一些示例:
```matlab
x = 1 / 3;
y = 2 / 3;
z = x & y; % 与运算符
print(z);
x = 1;
y = 2;
z = x | y; % 或运算符
print(z);
x = 1;
y = 0;
z = ~x & y; % 非运算符
print(z);
x = 1 ^ 2;
y = 1;
z = x xor y; % 异或运算符
print(z);
```
输出结果为:
```
z =
1
1
```
以上是 MATLAB 中的逻辑运算符号的一些基本知识。

使用这些运算符可以简化代码并提高算法的效率。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实用标准文案 文档 实验四 MATLAB符号运算 一.实验目的 掌握符号变量和符号表达式的创建,掌握matlab的symbol工具箱的一些基本应用。 二.实验内容 (1)符号变量、表达式、方程及函数的表示。 (2)符号为积分运算。 (3)符号表达式的操作和转换。 (4)符号微分方程求解。 三.实验步骤 1.符号运算的引入 在数值运算中如果求lim(sin(pi*x)/x(x-0),则可以不断让x趋近0,一球的表达式趋近什么数,但是终究不能令x=0,在数值运算中0不能做除数。Matlab的符号运算能解决这类问题。输入如下命令: >> f=sym('sin(pi*x)/x')

f =

sin(pi*x)/x

>> limit(f,'x',0)

ans =

pi 2.符号常量、符号变量、符号表达式的创建 1)使用sym()创建 输入以下命令,观察workspace中a,b,f是什么类型的数据,占用多少字节的内存空间。 >> a=sym('1')

a =

1

>> b=sym('x')

b =

x

>> f=sym('2*x^2+3*y-1')

实用标准文案 文档 f = 2*x^2+3*y-1 >> clear >> f1=sym('1+2'),f2=sym(1+2),f3=sym('2*x+3'),f4=sym(2*x+3) f1 = 1+2

f2 = 3

f3 =

2*x+3

??? Undefined function or variable 'x'.

>> x=2,f4=sym(2*x+3) x = 2 f4 =

7 Sym()的参数可以是字符串或数值类型,无论你是哪种类型都会生成符号类型数据。 2)使用syms创建 >> clear >> syms x y z >> x,y,z x = x y = y z = z >> f1=x^2+2*x+1 f1 = x^2+2*x+1 >> f2=exp(y)+exp(z)^2 f2 = exp(y)+exp(z)^2 >> f3=f1+f2 f3 = x^2+2*x+1+exp(y)+exp(z)^2 实用标准文案 文档 用符号类型的变量经过运算(加减乘除)得到。又如: >> f1=sym('x^2+y+siin(2)') f1 = x^2+y+siin(2) >> syms x y >> f2=x^2+y+sin(2) f2 = x^2+y+4095111552621091/4503599627370496 >> x=sym('2'),y=sym('1') x = 2 y = 1 >> f3=x^2+y+sin(2) f3 = 26613109689473571/4503599627370496 >> y=sym('w'),f4=x^2+y+sin(2) y = w f4 = 22109510062103075/4503599627370496+w 思考题:syms x是不是相当于x=sym(‘x’)? 答:不等于,前者是符号x作用于整个工作空间,除非clear,后者只作用于变量x。 3.符号矩阵创建 >> syms a1 a2 a3 a4 >> a=[a1 a2;a3 a4] a = [ a1, a2] [ a3, a4] >> a(1),a(3) ans = a1 ans = a2 >> b=sym('[b1 b2;b3 b5]') b = [ b1, b2] [ b3, b5] >> c1=sym('sin(x)'),c2=sym('x^2'),c3=sym('3*y+z'),c4=sym('3'),c=[c1 c2;c3 c4] c1 = sin(x) c2 = x^2 c3 = 实用标准文案 文档 3*y+z c4 = 3 c = [ sin(x), x^2] [ 3*y+z, 3] 思考题:分别用sym和syms创建符号表达式:f1=cosx+(-(sin(x))^2)^(1/2),f2=y/exp(-2*t)。 答:>> sym('f1=cos(x)+(-(sin(x))^2)^(1/2)'),sym('f2=y/exp(-2*t)') ans = f1=cos(x)+(-(sin(x))^2)^(1/2) ans = f2=y/exp(-2*t) >> syms x y t >> f1=cos(x)+(-(sin(x))^2)^(1/2),f2=y/exp(-2*t) f1 = cos(x)+(-sin(x)^2)^(1/2) f2 = y/exp(-2*t) 4.符号算术运算 1)符号量相乘、相除(分成矩阵乘和数组乘)。 >> a=sym(5);b=sym(7); >> c1=a*b,c2=a/b c1 = 35 c2 = 5/7 >> a=sym(5);b=sym([3 4 5]); >> c1=a*b,c2=a\b c1 = [ 15, 20, 25] c2 = [ 3/5, 4/5, 1] >> syms a b >> A=[5 a;b 3];B=[2*a b;2*b a] B = [ 2*a, b] [ 2*b, a] >> c1=A*B,c2=A.*B,C3=A\B,C4=A./B c1 = [ 10*a+2*a*b, 5*b+a^2] [ 2*a*b+6*b, b^2+3*a] c2 = [ 10*a, a*b] 实用标准文案 文档 [ 2*b^2, 3*a] C3 = [ 2*a*(b-3)/(-15+a*b), (a^2-3*b)/(-15+a*b)] [ 2*b*(a-5)/(-15+a*b), -(5*a-b^2)/(-15+a*b)] C4 = [ 5/2/a, a/b] [ 1/2, 3/a] 2)符号数值任意精度控制和运算 任意精度的VPA运算可以使用命令digits(设定默认的精度)和vpa(对指定对象以新的精度进行计算)来实现。 >> a=sym('2*sqrt(5)+pi'),b=sym(2*sqrt(5)+pi) a = 2*sqrt(5)+pi b = 8572296331135796*2^(-50) >> digits

Digits = 32

>> vpa(a),c1=vpa(a,56),c2=vpa(b,56) ans = 7.6137286085893726312809907207421 c1 = 7.6137286085893726312809907207420553550784061185981572696 c2 = 7.6137286085893727261009189533069729804992675781250000000 3)符号类型与数值类型的转换 使用double,numeric函数可以将有理数型和vpa型符号对象转换成数值对象。 >> clear >> a1=sym('2*sqrt(5)+pi'),b1=double(a1),b2=isnumeric(b1),a2=vpa(a1,70) a1 = 2*sqrt(5)+pi b1 = 7.6137 b2 = 1 a2 = 7.613728608589372631280990720742055355078406118598157269516739083128858 5.符号表达式的操作和转换 1)独立变量的确定原则 独立变量的确定原则:在符号表达式中默认变量是唯一的。Matlab会对单个英文小写字母(除i,j)进行搜索,且以为首选独立变量。如果表达式中字幕唯一,且无x,就选在字母表顺序中最接近x的字母。如果有相连的字母,则选择在字母表中较后的那一个; 输入以下命令: 实用标准文案 文档 >> clear >> f=sym('a+b+i+j+x+y+xz') f = a+b+i+j+x+y+xz >> findsym(f) ans = a, b, j, x, xz, y >> findsym(f,1),findsym(f,2),findsym(f,3),findsym(f,4),findsym(f,5),findsym(f,6) ans = x ans = x,xz ans = x,xz,y ans = x,xz,y,j ans = x,xz,y,j,b ans = x,xz,y,j,b,a 2)符号表达式的化简 (1)合并同类项collect >> syms x t;f=(x^2+x*exp(-t)+1)*(x+exp(-t)); >> f1=collect(f),f2=collect(f,'exp(-t)') f1 = x^3+2*exp(-t)*x^2+(1+exp(-t)^2)*x+exp(-t) f2 = x*exp(-t)^2+(2*x^2+1)*exp(-t)+(x^2+1)*x (2)显示格式美化pretty >> pretty(f1),pretty(f2)

3 2 2 x + 2 exp(-t) x + (1 + exp(-t) ) x + exp(-t)

2 2 2 x exp(-t) + (2 x + 1) exp(-t) + (x + 1) x (3)多项式展开expand函数。展开(x-1)^12。 >> syms x; >> f=(x-1)^12;

相关文档
最新文档