第九章 matlab符号计算
matlab符号表示法
matlab符号表示法
Matlab中的符号表示法指的是符号计算工具箱(Symbolic
Math Toolbox)的功能,该工具箱允许用户使用符号来执行代
数运算、微积分、方程求解、符号求导等等。
使用符号表示法,用户可以定义符号变量,并使用这些变量进行代数运算。
用户可以使用符号运算符来进行加减乘除,指数、对数、三角函数等各种数学操作。
Matlab会根据符号变量的
定义和给定的运算规则,自动化简和计算表达式的结果。
下面是一些常见的符号表示法的示例:
1. 定义符号变量:
```
syms x y z
```
2. 代数运算:
```
expr = x^2 + y^2 - z^2;
result = expand(expr);
```
3. 求解方程:
```
eqn = x^2 + 2*x + 1 == 0;
sol = solve(eqn, x);
```
4. 计算符号导数:
```
f = sin(x);
df = diff(f, x);
```
通过使用符号表示法,用户可以进行更复杂的符号计算,探索并解决各种数学问题。
matlab的符号运算
符号矩阵运算的函数:
symadd(a,d) 或+—— 符号矩阵的加
symsub(a,b) 或- —— 符号矩阵的减
symmul(a,b) 或* —— 符号矩阵的乘
symdiv(a,b)或 /、\—— 符号矩阵的除
sympow(a,b) 或^ —— 符号矩阵的幂运算
symop(a,b) —— 符号矩阵的综合运算
n 2 2
n
[y1,y2…]=dsolve(x1,x2,…xn) —— 返回 微分方程的解
例1:求解一阶微分方程 x = dsolve('Dx = -a*x','x(0) = 1','s')
x= exp(-a*s)
例2:求解二阶微分方程
dsolve('D2y=-a^2*y','y(0)=1','Dy(pi/a)=0')
ans = cos(a*x)
小 结 本节介绍了matlab语言的符号运算 功能,通过学习应该掌握: 掌握如何创建、修改符号矩阵 掌握符号运算功能
练习不作业
练习:
1、掌握如何创建、修改符号矩阵 2、掌握符号运算功能
作业: 创建一个符号矩阵; 实现符号运算功能
t d a dx t cos x ln x
2. 任意精度的数学运算
在symbolic中有三种不同的算术运算: (1) 数值类型 matlab的浮点算术运算
(2) 有理数类型 maple的精确符号运算
(3) vpa类型
maple的任意精度算术运算
浮点算术运算
1/2+1/3 --(定义输出格式format long)
ans =
MATLAB_符号计算
第 2 章符号计算所谓符号计算是指:解算数学表达式、方程不是在离散化的数值点上进行,而是凭借一系列恒等式,数学定理,通过推理和演绎,力求获得解析结果。
这种计算建立在数值完全准确表达和推演严格解析的基础之上,因此所得结果是完全准确的。
2.1符号对象和符号表达式2.1.1基本符号对象和运算算符1生成符号对象的基本规则生成符号对象的MATLAB规则:(1)必须定义(2)包含符号对象的也一定是符号对象2精准符号数字和符号常数sc=sym(Num)【例2.1-1】演示:精准符号数字或数字表达式的创建。
1)clear allR1=sin(sym(0.3)) %R2=sin(sym(3e-1)) %R3=sin(sym(3/10)) %R4=sin(sym('3/10')) %disp(['R1属于什么类别?答:',class(R1)])disp(['R1与R4是否相等?(是为1,否为0)答:',int2str(logical(R1==R4))]) R1 =sin(3/10)R2 =sin(3/10)R3 =sin(3/10)R4 =sin(3/10)R1属于什么类别?答:symR1与R4是否相等?(是为1,否为0)答:13基本符号变量sym: 创建符合数字、符号常数、符号表达式syms: 创建多个符号变量、抽象符号函数以及变量2.1.2符号计算中的函数指令符号与数值计算中有些函数同名,使用时注意数据类型!2.1.3符号表达式和符号函数1符号表达式和符号函数2自由符号变量【例2.1-2】1)clearsyms a b c x y u v %syms F(X,Y,Z) %k=sym(3) %G=sym('p*sqrt(q)+r*sin(t)') %EXPR=a*G*u+(b*x^2+k)*v %f(x,y)=a*x^2+b*y^2-c %disp(F) %k =3G =p*q^(1/2) + r*sin(t)EXPR =v*(b*x^2 + 3) + a*u*(p*q^(1/2) + r*sin(t)) f(x, y) =a*x^2 + b*y^2 - cF(X, Y, Z)symbolic function inputs: X, Y, Z2)symvar(EXPR) %% ans =[ a, b, p, q, r, t, u, v, x]symvar(EXPR,1) % ans = x3)disp(symvar(f)) % [ a, b, c, x, y]disp(symvar(f,2)) % [ x, y]【例2.1-3】用符号法求方程2uw zw v +=的解。
MATLAB的符号计算
diff(s,’v’,n)
【例】求导数: 2 d s in x dx x = sym('x'); diff(sin(x^2),x) ans = 2*cos(x^2)*x
%定义符号变量 %求导运算
3.积分函数 积分函数int(s ,v,a,b)可以对被积函 数或符号表达式s求积分。其引用格式为: int(s ,v,a,b) 说明:
1、建立m-文件rigid.m如下: function dy=rigid(t,y) dy=zeros(3,1); dy(1)=y(2)*y(3); dy(2)=-y(1)*y(3); dy(3)=-0.51*y(1)*y(2);
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 2 4 6 8 10 12
例1
解
d2y dx
2
0 应表达为:D2y=0.
求
du 1 u 2 的通解. dt
输入命令:dsolve('Du=1+u^2','t')
结 果:u = tg(t-c)
例2
求微分方程的特解.
d 2 y dy 2 4 29 y 0 dx dx y (0) 0, y ' (0) 15
解
2、取t0=0,tf=12,输入命令: [T,Y]=ode45('rigid',[0 12],[0 1 1]); plot(T,Y(:,1),'-',T,Y(:,2),'*',T,Y(:,3),'+')
3、结果如图 图中,y1的图形为实线,y2的图形为“*”线,y3的图形为“+”线.
MATLAB课件第九篇微积分基础
第九章微积分基础1函数的极限(符号解法)一元函数求极限函数 limit格式 limit(F,x,a) %计算符号表达式F=F(x) 当x→a时的极限值。
limit(F,a) %用命令findsym(F)确信F中的自变量,设为变量x,再计算F当x→a时的极限值。
limit(F) %用命令findsym(F)确信F中的自变量,设为变量x,再计算F当x→0时的极限值。
limit(F,x,a,'right')或limit(F,x,a,'left') %计算符号函数F的单侧极限:左极限x →a- 或右极限x→a+。
【例1】>>syms x a t h n;>>L1 = limit((cos(x)-1)/x)>>L2 = limit(1/x^2,x,0,'right')>>L3 = limit(1/x,x,0,'left')>>L4 = limit((log(x+h)-log(x))/h,h,0)>>v = [(1+a/x)^x, exp(-x)];>>L5 = limit(v,x,inf,'left')>>L6 = limit((1+2/n)^(3*n),n,inf)计算结果为:L1 =L2 =infL3 =-infL4 =1/xL5 = [ exp(a), 0] L6 = exp(6)注:在求解之前,应该先声明自变量x,再概念极限表达式fun,假设0x 为∞,那么能够用inf 直接表示。
若是需要求解左右极限问题,还需要给出左右选项。
【例2】 试别离求出tan 函数关于pi/2点处的左右极限。
>> syms t;f=tan(t);L1=limit(f,t,pi/2,'left'), L2=limit(f,t,pi/2,'right') L1 = Inf L2 = -Inf【例3】求以下极限1)312lim20+-→x x x 2)x x x t 3)21(lim +∞→解:编程如下:>>syms x t ;L1 = limit((2*x-1)/(x^2+3)) >>L2 = limit((1+2*t/x)^(3*x),x,inf)回车后可得: L1 = -1/3 L2 = exp(6*t) 多元函数求极限求多元函数的极限能够嵌套利用limit()函数,其挪用格式为:limit(limit(f,x,x0),y,y0)或limit(limit(f,y,y0),x,x0)【例4】求极限:x xy y x )sin(lim 30→→>> syms x y;f=sin(x*y)/x;limit(limit(f,x,0),y,3)ans = 3注:若是x0或y0不是确信的值,而是另一个变量的函数,如)(y g x →,那么上述的极限求取顺序不能互换。
第9章MATLAB符号计算习题答案.doc
第9章 MATLAB符号计算习题9一、选择题1.设有a=sym(4)。
则1/a+1/a的值是()。
BA.0.5 B.1/2 C.1/4+1/4 D.2/a2.函数factor(sym(15))的值是()。
DA.'15' B.15 C.[ 1, 3, 5] D.[ 3, 5]3.在命令行窗口输入下列命令:>> f=sym(1);>> eval(int(f,1,4))则命令执行后的输出结果是()。
AA.3 B.4 C.5 D.14.MA TLAB将函数展开为幂级数,所使用的函数是()。
DA.tailor B.tayler C.diff D.taylor5.MATLAB用于符号常微分方程求解的函数是()。
CA.solve B.solver C.dsolve D.dsolver二、填空题1.在进行符号运算之前首先要建立,所使用的函数或命令有和。
符号对象,sym,syms2.对于“没有定义”的极限,MATLAB给出的结果为;对于极限值为无穷大的极限,MA TLAB给出的结果为。
NaN,Inf3.在命令行窗口输入下列命令:>> syms n;>> s=symsum(n,1,10)命令执行后s的值是。
554.在MATLAB中,函数solve(s,v)用于代数方程符号求解,其中s代表,v 代表。
符号代数方程,求解变量5.在MA TLAB符号计算中y的二阶导数表示为。
D2y三、应用题1.分解因式。
(1)x9-1 (2)x4+x3+2x2+x+1(3)125x6+75x4+15x2+1 (4)x2+y2+z2+2(xy+yz+zx)(1):2x=sym('x'); A=x^9-1; factor(A) (2):x=sym('x');B=x^4+x^3+2*x^2+x+1; factor(B) 2.求函数的极限。
(1)4586lim 22++x x x x --4→x (2)xx -0→x lim(1):x=sym('x');A=(x^2-6*x+8)/(x^2-5*x+4); limit(A,x,4) (2):x=sym('x'); B=abs(x)/x; limit(B)3.求函数的符号导数。
matlab 求解符号方程
一、背景介绍Matlab是一种强大的数学软件,常用于数学建模、仿真、数据分析等领域。
在工程和科学研究中,求解符号方程是一个常见的问题,Matlab提供了丰富的符号计算工具,可以帮助用户高效地求解符号方程。
二、Matlab符号计算工具1. 符号变量定义在Matlab中,我们可以通过syms命令定义符号变量,使用符号变量进行符号运算。
例如:```matlabsyms x y```2. 求解符号方程Matlab提供了solve函数,可以用来求解符号方程。
solve函数的基本语法如下:```matlabsol = solve(equations, variables)```其中,equations表示要求解的方程组,variables表示待求解的变量。
solve函数会返回符号方程的解。
三、示例接下来,我们通过一个示例来演示如何使用Matlab求解符号方程。
假设我们要求解如下的符号方程:```matlabsyms xeqn = x^2 - 4*x + 3 == 0;sol = solve(eqn, x);disp(sol);```运行以上代码,可以得到方程x^2 - 4*x + 3 = 0的解为x = 1或x = 3。
四、注意事项在使用Matlab求解符号方程时,有一些需要注意的事项:1. 可能存在多解或无解的情况,在求解后需要对解进行检查;2. 符号计算是一种复杂的运算,可能存在数值精度问题,需要注意数值的精确性;3. 在求解复杂的方程组时,可能需要对方程组进行化简或变形,以提高求解效率。
五、总结通过Matlab的符号计算工具,我们可以较为方便地求解符号方程,实现高效的符号计算。
在工程和科学研究中,这些工具能够帮助我们快速解决复杂的数学问题,提高工作效率。
希望本文的介绍和示例能够帮助读者更好地理解和应用Matlab的符号计算工具。
Matlab在求解符号方程方面具有广泛的应用。
通过利用Matlab的符号计算工具,用户可以轻松地进行符号方程的求解和符号计算,并获得高精度的结果。
MATLAB符号计算(MATLAB程序设计教程电子教案
MATLAB符号计算(MATLAB程序设计教程电子教案)教案章节:一、MATLAB简介1.1 MATLAB的发展历程1.2 MATLAB的主要功能1.3 MATLAB的界面组成1.4 MATLAB的帮助系统二、MATLAB基本操作2.1 MATLAB的工作空间2.2 变量及其操作2.3 矩阵及其操作2.4 字符串及其操作2.5 数据类型转换三、MATLAB编程基础3.1 MATLAB编程规则3.2 脚本文件与函数文件3.3 函数的基本结构3.4 变量作用域3.5 编程技巧与风格四、MATLAB符号计算4.1 符号计算概述4.2 符号变量与符号表达式4.3 符号计算的基本函数4.4 符号方程求解4.5 符号微积分运算五、MATLAB图形绘制5.1 MATLAB图形绘制基础5.2 二维图形绘制5.3 三维图形绘制5.4 图形编辑与标注5.5 图形保存与打印六、MATLAB数值计算6.1 数值计算概述6.2 线性方程组的求解6.3 非线性方程(组)的求解6.4 插值与拟合6.5 数值积分与数值微分七、MATLAB稀疏矩阵与优化工具箱7.1 稀疏矩阵的概念与操作7.2 稀疏矩阵的存储格式7.3 稀疏矩阵的求解与运算7.4 MATLAB优化工具箱简介7.5 优化问题的求解实例八、MATLAB控制系统设计与分析8.1 控制系统概述8.2 传递函数的定义与性质8.3 控制系统仿真与分析8.4 频域分析8.5 状态空间分析九、MATLAB信号处理与应用9.1 信号处理基础9.2 信号的时域分析9.3 信号的频域分析9.4 滤波器设计9.5 MATLAB在信号处理中的应用实例十、MATLAB图像处理与应用10.1 图像处理基础10.2 图像处理基本算法10.3 图像的形态学处理10.4 图像的增强与复原10.5 MATLAB在图像处理中的应用实例十一、MATLAB傅里叶分析11.1 傅里叶分析概述11.2 傅里叶变换及其性质11.3 快速傅里叶变换(FFT)11.4 傅里叶分析在信号处理中的应用11.5 MATLAB中傅里叶分析的实现十二、MATLAB小波分析12.1 小波分析概述12.2 小波变换及其性质12.3 小波变换的应用12.4 MATLAB中小波分析的实现12.5 小波分析在信号处理中的应用实例十三、MATLAB仿真与实验13.1 MATLAB仿真概述13.2 搭建仿真模型13.3 仿真实验的运行与调试13.4 实验数据的分析与处理13.5 MATLAB在实验中的应用实例十四、MATLAB在工程实践中的应用14.1 MATLAB在电子工程中的应用14.2 MATLAB在机械工程中的应用14.3 MATLAB在civil engineering 中的应用14.4 MATLAB在生物医学工程中的应用14.5 MATLAB在其他工程领域中的应用实例十五、MATLAB编程实践与案例分析15.1 MATLAB编程实践的重要性15.2 MATLAB编程实践的项目设计与实施15.3 MATLAB编程案例分析15.4 MATLAB编程实践的总结与反思15.5 提高MATLAB编程能力的建议重点和难点解析本文档为您提供了一整套关于“MATLAB符号计算(MATLAB程序设计教程电子教案)”的教学内容,涵盖了从基础简介到高级应用的各个方面。
Matlab基础——符号的计算
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试用几种不同的化简工具,然后选择在结果表达式中含有
第9章 MATLAB符号计算
例: >> syms x >> A=[3/2,(x^2+3)/(2*x-1)+3*x/(x-1);4/x^2,3*x+4] A= [3/2, (x^2+3)/(2*x-1)+3*x/(x-1)] [4/x^2, 3*x+4]
>> det(A) ans = 1/2*(18*x^5-3*x^4-35*x^3-28*x^2+24)/(2*x-1)/(x-1)/x^2
limit(f):求符号函数f(x)的极限值。符号函数f(x) f(x)的极限值 f(x)的 (3) limit(f):求符号函数f(x)的极限值。符号函数f(x)的 变量为函数findsym(f)确定的默认变量; findsym(f)确定的默认变量 变量为函数findsym(f)确定的默认变量;没有指定变量的 目标值时,系统默认变量趋近于0 a=0的情况 的情况。 目标值时,系统默认变量趋近于0,即a=0的情况。 limit(f,x,a,'right'):求符号函数f的极限值。 (4) limit(f,x,a,'right'):求符号函数f的极限值。 'right'表示变量 从右边趋近于a 表示变量x 'right'表示变量x从右边趋近于a。 limit(f,x,a,‘left left’) 求符号函数f的极限值。 left’ (5) limit(f,x,a, left ):求符号函数f的极限值。‘left 表示变量x从左边趋近于a 表示变量x从左边趋近于a。
y=sym('2*sin(x)*cos(x)') y= 2*sin(x)*cos(x) simple(y) simplify: 2*sin(x)*cos(x) radsimp: 2*sin(x)*cos(x) combine(trig): sin(2*x) factor: 2*sin(x)*cos(x) expand: 2*sin(x)*cos(x)
第9章 MATLAB符号计算_习题答案
第9章 MATLAB符号计算习题9一、选择题1.设有a=sym(4)。
则1/a+1/a的值是()。
BA.0.5 B.1/2 C.1/4+1/4 D.2/a2.函数factor(sym(15))的值是()。
DA.'15' B.15 C.[ 1, 3, 5] D.[ 3, 5]3.在命令行窗口输入下列命令:>> f=sym(1);>> eval(int(f,1,4))则命令执行后的输出结果是()。
AA.3 B.4 C.5 D.14.MA TLAB将函数展开为幂级数,所使用的函数是()。
DA.tailor B.tayler C.diff D.taylor5.MATLAB用于符号常微分方程求解的函数是()。
CA.solve B.solver C.dsolve D.dsolver二、填空题1.在进行符号运算之前首先要建立,所使用的函数或命令有和。
符号对象,sym,syms2.对于“没有定义”的极限,MATLAB给出的结果为;对于极限值为无穷大的极限,MA TLAB给出的结果为。
NaN,Inf3.在命令行窗口输入下列命令:>> syms n;>> s=symsum(n,1,10)命令执行后s的值是。
554.在MATLAB中,函数solve(s,v)用于代数方程符号求解,其中s代表,v 代表。
符号代数方程,求解变量5.在MA TLAB符号计算中y的二阶导数表示为。
D2y三、应用题1.分解因式。
(1)x9-1 (2)x4+x3+2x2+x+1(3)125x6+75x4+15x2+1 (4)x2+y2+z2+2(xy+yz+zx)(1):2x=sym('x'); A=x^9-1; factor(A) (2):x=sym('x');B=x^4+x^3+2*x^2+x+1; factor(B) 2.求函数的极限。
(1)4586lim 22++x x x x --4→x (2)xx -0→x lim(1):x=sym('x');A=(x^2-6*x+8)/(x^2-5*x+4); limit(A,x,4) (2):x=sym('x'); B=abs(x)/x; limit(B)3.求函数的符号导数。
MATLAB中的符号计算方法及应用
MATLAB中的符号计算方法及应用导言在计算机科学领域,符号计算是一种重要的技术手段,它通过代数符号的表达和计算,使得计算机能够处理和求解数学问题,尤其是涉及到复杂的代数式和方程组的求解。
MATLAB是一款功能强大的数值计算软件,其内置了丰富的符号计算工具包,使得符号计算在MATLAB中得以广泛应用。
本文将介绍MATLAB中常用的符号计算方法及其应用,包括符号变量的定义与操作、符号表达式的简化与计算、符号方程的求解以及符号积分和微分运算等方面。
一. 符号变量的定义与操作在MATLAB中,通过声明符号变量可以创建代表数学符号的对象。
符号变量可以表示任意复杂的代数式,包括常数、变量、函数等。
定义符号变量的基本语法是使用"syms"关键字,后跟一个或多个以空格或逗号分隔的变量名。
例如,下面的代码定义了两个符号变量x和y:```MATLABsyms x y;```在定义符号变量后,我们可以对其进行各种操作,包括代数运算、求导、求积等。
例如,我们可以定义一个符号表达式expr,并通过操作符对其进行计算:```MATLABexpr = x^2 + 2*x + 1;result = simplify(expr + 1);```上述代码中,我们对表达式expr进行了简化操作,将其与常数1相加,并将结果存储在变量result中。
通过这种方式,我们可以对复杂的代数式进行简化和计算,从而得到更清晰和简洁的结果。
二. 符号表达式的简化与计算MATLAB中的符号计算工具包提供了丰富的函数,用于对符号表达式进行求值、简化、展开等操作。
这些函数可以大大简化数学计算的过程,提高计算效率。
1. 符号表达式的求值在MATLAB中,我们可以使用subs函数对符号表达式进行求值。
subs函数接受两个参数,第一个参数是要求值的表达式,第二个参数是用于替换变量的数值。
例如,我们可以使用subs函数将符号表达式expr中的x替换为3,求得结果:```MATLABresult = subs(expr, x, 3);```上述代码中,我们将表达式expr中的x替换为3,并将结果存储在变量result 中。
matlab的符号计算
matlab的符号计算符号数学工具箱是操作和解决符号表达式的符号数学工具箱(函数)集合,有复合、简化、微分、积分以及求解代数方程和微分方程的工具。
另外还有一些用于线性代数的工具,求解逆、行列式、正则型式的精确结果,找出符号矩阵的特征值而无由数值计算引入的误差。
工具箱还支持可变精度运算,即支持符号计算并能以指定的精度返回结果。
符号数学工具箱中的工具是建立在功能强大的称作Maple软件的基础上。
它最初是由加拿大的滑铁卢(Waterloo)大学开发的。
当要求MATLAB进行符号运算时,它就请求Maple去计算并将结果返回到MATLAB命令窗口。
因此,在MATLAB中的符号运算是MATLAB处理数字的自然扩展。
8.1 符号表达式符号表达式是代表数字、函数、算子和变量的MATLAB字符串,或字符串数组。
不要求变量有预先确定的值,符号方程式是含有等号的符号表达式。
符号算术是使用已知的规则和给定符号恒等式求解这些符号方程的实践,它与代数和微积分所学到的求解方法完全一样。
符号矩阵是数组,其元素是符号表达式。
MATLAB在内部把符号表达式表示成字符串,以与数字变量或运算相区别;否则,这些符号表达式几乎完全象基本的MATLAB命令。
下表列有几则符号表达式例子以及MATLAB等效表达式。
符号表达式 MATLAB表达式'1/(2*x^n)'y='1/sqrt(2*x)''cos(x^2)-sin(2*x)'M=sym('[a,b;c,d]')f=int('x^3/sqrt(1-x)','a','b')MATLAB符号函数使我们能用多种方法来操作符号表达式,比如,>>diff('cos(x)') %differentiate cos(x) with respect to xans=-sin(x)>>M=sym('[a,b;c,d]') %create a symbolic matrix MM=[a,b][c,d]>>determ(M) %find the determinant of the symbolic matrix Mans=a*d-b*c要注意的是,以上第一例的符号表达式是用单引号以隐含方式定义的。
matlab符号运算
matlab符号运算符号计算1.符号计算的优点:所谓符号计算是指解算数学表达式、方程时,不是在离散化的数值点上进行的,而是凭借一系列的恒等式和数学定理,通过推理和演算获得的解析结果。
这种计算建立在数值完全准确表达和严格推演的基础之上,因而所得结果完全准确。
当然,也存在者不足,后文将会提到。
符号变量的优点是,使用符号变量运算得到的只是一个解析解,例如,在符号变量运算过程中pi就用pi表示,而不是具体的近似数值3.14或3.14159。
使用符号变量进行运算能最大限度减少运算过程中因舍入造成的误差。
符号变量也便于进行运算过程的演示。
2.符号对象的创建:2.1单个符号变量S = sym(A)将非符号对象(如,数字,表达式,变量等)A转换为符号对象,并存储在符号变量S中。
x = sym('x')创建符号变量x,其名字是'x'。
示例:alpha = sym('alpha')x = sym('x', 'real')这里假设x是实数,因此有x的共轭conj(x)等于x。
示例:r = sym('Rho','real')k = sym('k', 'positive') %09版不能用这个方法实现这里创建一个正的(实数)符号变量。
x = sym('x', 'clear')创建一个没有额外属性的纯形式上的符号变量x(例如,创建符号变量x,但是并没指定它是正的或它是一个实数)。
为了兼容旧的MATLAB版本,x = sym('x','unreal')的功能和x = sym('x', 'clear')一样。
S = sym(A, flag)把一个数值标量或矩阵转换为符号型的对象。
这里flag参数的值可以是:'r', 'd', 'e', or 'f',它指定了对浮点数进行转换时的规则:'f':表示“floating-p oint”。
第九章 matlab符号计算-席
convert(exp): (x^2-1)/(x^2+2*x-3) convert(sincos): (x^2-1)/(x^2+2*x-3) convert(tan): (x^2-1)/(x^2+2*x-3) collect(x): (x^2-1)/(x^2+2*x-3) mwcos2sin: (x^2-1)/(x^2+2*x-3) ans = (x+1)/(x+3)
>> syms a b c d x; >> t=solve('a*x^3+b*x^2+c*x+d=0') >> [r,s]=subexpr(t,'s')
函数subs是用指定符号替换符号表达式中 的某一特定符号。 调用格式为:R=subs(S,old,new) 它可用新的符号变量new替换原来符号表达式 S中的old。当new为数值形式时,显示的结果 虽然是数值,但它事实上是符号变量。
符号表达式的化简 MATLAB提供的对符号表达式化简的函 数有: simplify(s):对表达式s进行化简; [r,how]=simple(S) :通过对表达式尝试多 种不同的算法进行化简,并显示化简过程,寻 求符号表达式S的最简形式;r为返回的简化形 式,how 为化简过程中使用的主要方法。 simple 函数综合使用了下列化简方法:
符号对象的生成
符号对象的建立:sym 和 syms
sym 函数用来建立单个符号变量,一般调用格式为:
符号变量 = sym(A) 参数 A 可以是一个数或数值矩阵,也可以是字符串
例
>> a=sym('a') >> b=sym(1/3)
MATLAB符号计算
第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 参数设置a=sym('sin(2)')a =sin(2)例如,把常量转换为符号常量,按系统默认格式转换:a=sym(sin(2))a =8190223105242182*2^(-53)【例3.1】创建数值常量和符号常量。
a1=2*sqrt(5)+pi %创建数值常量a1 =7.6137a2=sym('2*sqrt(5)+pi') %创建符号表达式a2 =2*sqrt(5)+pia3=sym(2*sqrt(5)+pi) %按最接近的有理数型表示符号常量a3 =8572296331135796*2^(-50)a4=sym(2*sqrt(5)+pi,'d') %按最接近的十进制浮点数表示符号常量a4 =7.6137286085893727261009189533070a31=a3-a1 %数值常量和符号常量的计算a31 =a5='2*sqrt(5)+pi' %字符串常量a5 =2*sqrt(5)+pi图3.1 工作空间窗口可以通过查看工作空间来查看各变量的数据类型和存储空间,工作空间如图3.1所示。
MATLAB第九讲 符号运算(续)
例 1 解下列方程
(1)
1 4x 2 2 1 x2 x 4 x2
x=solve('1/(x+2)+4*x/(x^2-4)=1+2/(x-2)','x') %解方程(1) x= 1 (2)
x x 4x 7 1
3 3
f=sym('x-(x^3-4*x-7)^(1/3)=1'); x=solve(f) x= 3
a(i)=int(f*cos(i*x),-pi,pi);
b(i)=int(f*sin(i*x),-pi,pi); mfourier=mfourier+a(i)*cos(i*x)+b(i)*
调用该函数时,需给出被展开的符号函数f和展开项数n,不可缺省。
例6.26在[-π,π]区间展开函数为傅立叶级数。 命令如下: x=sym('x');a=sym('a'); f=x; mfourier(f,5) %求f(x)=x的傅立叶级数的前5项 f=abs(x); mfourier(f,5) %求f(x)=|x|的傅立叶级数的前5项 syms a; f=cos(a*x); mfourier(f,6) %求f(x)=cos(ax)的傅立叶级数的前6项 f=sin(a*x); mfourier(f,4) %求f(x)=sin(ax)的傅立叶级数的前4项
x' , y' ans = [ 2, -1, 1, -2] ans = [ 1, 2, -2, -1]
在应用MATLAB求解方程组时,应充分发挥其功能。当 MATLAB给出无解或未找到所期望的解时,不要认为原方程 组就真正无解了,还需要用其他方法试探着求解。如果知道
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2008-7-2
1
符号对象 符号微积分 级数 符号方程求解
2008-7-2
2
9.1 符号对象
9.1.1 建立符号对象
1. 建立符号变量和符号常量 MATLAB提供了两个建立符号对象的函数:sym 和syms,两个函数的用法不同。 (1) sym函数 sym函数用来建立单个符号量,一般调用格式 为:符号量名=sym('符号字符串') 该函数可以建立一个符号量,符号字符串可以是 常量、变量、函数或表达式。 应用sym函数还可以定义符号常量,使用符号常 量进行代数运算时和数值常量进行的运算不同。
2008-7-2 17
(3) limit(f):求符号函数f(x)的极限值。符号 函数f(x)的变量为函数findsym(f)确定的默认 变量;没有指定变量的目标值时,系统默 认变量趋近于0,即a=0的情况。 (4) limit(f,x,a,'right'):求符号函数f的极限 值。'right'表示变量x从右边趋近于a。 (5) limit(f,x,a,‘left’):求符号函数f的极限 值。‘left’表示变量x从左边趋近于a。 例9-1 求下列极限。
符号积分由函数int来实现。该函数的一般 调用格式为: int(s):没有指定积分变量和积分阶数时, 系统按findsym函数指示的默认变量对被积函 数或符号表达式s求不定积分。 int(s,v):以v为自变量,对被积函数或符号 表达式s求不定积分。
2008-7-2
21
int(s,v,a,b):求定积分运算。a,b分别表示定积 分的下限和上限。该函数求被积函数在区间 [a,b]上的定积分。a和b可以是两个具体的 数,也可以是一个符号表达式,还可以是无 穷(inf)。当函数f关于变量x在闭区间[a,b]上可 积时,函数返回一个定积分结果。当a,b中有 一个是inf时,函数返回一个广义积分。当a,b 中有一个符号表达式时,函数返回一个符号 函数。 例9-3 求积分
2008-7-2 22
9.2.4 积分变换 常见的积分变换有傅立叶变换、拉普拉斯变 换和Z变换。 1. 傅立叶(Fourier)变换 在MATLAB中,进行傅立叶变换的函数是: fourier(f,x,t):求函数f(x)的傅立叶像函数 F(t)。 ifourier(F,t,x):求傅立叶像函数F(t)的原函 数f(x)。 例9-4 求函数的傅立叶变换及其逆变换。
19
diff(s,n):按findsym函数指示的默认变量对 符号表达式s求n阶导数,n为正整数。 diff(s,'v',n):以v为自变量,对符号表达式s求 n阶导数。 例9-2 求[a t3; tcos(x) lnx]对x的一阶导数、对t二 阶导数、二阶混合导数
2008-7-2
20
9.2.3 符号积分
2008-7-2 27
9.4 符号方程求解
9.4.1 符号代数方程求解 在MATLAB中,求解用符号表达式表示的代 数方程可由函数solve实现,其调用格式为: solve(s):求解符号表达式s的代数方程,求解 变量为默认变量。 solve(s,v):求解符号表达式s的代数方程,求 解变量为v。 solve(s1,s2,…,sn,v1,v2,…,vn):求解符号表达 式s1,s2,…,sn组成的代数方程组,求解变量分别 v1,v2,…,vn。 例9-9 解下列方程。
2008-7-2
15
9.1.4 符号矩阵(ex9_5.m)
符号矩阵也是一种符号表达式,所以前面介绍的符 号表达式运算都可以在矩阵意义下进行。但应注意这 些函数作用于符号矩阵时,是分别作用于矩阵的每一 个元素。 由于符号矩阵是一个矩阵,所以符号矩阵还能进行 有关矩阵的运算。MATLAB还有一些专用于符号矩 阵的函数,这些函数作用于单个的数据无意义。例如 transpose(s):返回s矩阵的转置矩阵。 determ(s):返回s矩阵的行列式值。 其实,曾介绍过的许多应用于数值矩阵的函数,如 diag、triu、tril、inv、det、rank、eig等,也可直接 应用于符号矩阵。
2008-7-2
10
9.1.3 符号表达式中变量的确定(ex9_3.m)
MATLAB中的符号可以表示符号变量和符号 常量。findsym可以帮助用户查找一个符号表 达式中的的符号变量。该函数的调用格式 为: findsym(s,n) 函数返回符号表达式s中的n个符号变量,若 没有指定n,则返回s中的全部符号变量。
2008-7-2 29
dsolve在求常微分方程组时的调用格式为: dsolve(e1,e2,…,en,c1,…,cn,v1,…,vn) 该函数求解常微分方程组e1,…,en在初值条件 c1,…,cn下的特解,若不给出初值条件,则求 方程组的通解,v1,…,vn给出求解变量。 例9-10 求下列微分方程的解。
2008-7-2 11
在MATLAB中,以最接近x的顺序排列默认 自变量的顺序,由于i和j通常表示虚数单位, 在符号运算中不能作为自变量。
2008-7-2
12
9.1.4 符号表达式的替换(ex9_4.m) MATLAB 的符号数学工具箱提供了两个符号 表达式的替换函数 subexpr 和 subs, 可以通 过符号替换使表达式的输出形式简化,以 得到一个简单的表达式。
2008-7-2 3
(2) syms函数 函数sym一次只能定义一个符号变量,使用 不方便。MATLAB提供了另一个函数syms, 一次可以定义多个符号变量。syms函数的一 般调用格式为: syms 符号变量名1 符号变量名2 … 符号变 量名n 用这种格式定义符号变量时不要在变量名 上加字符串分界符(‘),变量间用空格而不要用 逗号分隔。
2008-7-2
25
9.3 级数
9.3.1 级数符号求和 求无穷级数的和需要符号表达式求和函数 symsum,其调用格式为: symsum(s,v,n,m) 其中s表示一个级数的通项,是一个符号表 达式。v是求和变量,v省略时使用系统的默 认变量。n和m是求和的开始项和末项。 例9-7 求
2008-7-2 26
2008-7-2 23
2. 拉普拉斯(Laplace)变换 在MATLAB中,进行拉普拉斯变换的函数是: laplace(fx,x,t):求函数f(x)的拉普拉斯像函数 F(t)。 ilaplace(Fw,t,x):求拉普拉斯像函数F(t)的原函 数f(x)。 例9-5 计算y=x3的拉普拉斯变换及其逆变换。
2008-7-2 18
9.2.2 符号导数
diff函数用于对符号表达式求导数。该函数 的一般调用格式为: diff(s):没有指定变量和导数阶数,则系统 按findsym函数指示的默认变量对符号表达式s 求一阶导数。 diff(s,'v'):以v为自变量,对符号表达式s求 一阶导数。
2008-7-2
2008-7-2 16
9.2 符号微积分
9.2.1 符号极限 limit函数的调用格式为: (1) limit(f,x,a):求符号函数f(x)的极限值。 即计算当变量x趋近于常数a时,f(x)函数的极 限值。 (2) limit(f,a):求符号函数f(x)的极限值。由 于没有指定符号函数f(x)的自变量,则使用该 格式时,符号函数f(x)的变量为函数findsym(f) 确定的默认自变量,即变量x趋近于a。
2008-7-2 4
2. 建立符号表达式 含有符号对象的表达式称为符号表达式。 建立符号表达式有以下3种方法: (1) 利用单引号来生成符号表达式。 (2) 用sym函数建立符号表达式。 (3) 使用已经定义的符号变量组成符号表达 式。
2008-7-2
5
9.1.2 符号表达式运算
1. 符号表达式的四则运算 符号表达式的加、减、乘、除运算可分别 由函数symadd、symsub、symmul和symdiv 来实现,幂运算可以由sympow来实现。 2. 符号表达式的提取分子和分母运算 如果符号表达式是一个有理分式或可以 展开为有理分式,可利用numden函数来提取 符号表达式中的分子或分母。其一般调用格 式为:[n,d]=numden(s) 该函数提取符号表达式s的分子和分母, 分别将它们存放在n与d中。
2008-7-2
7
4. 符号表达式的化简 MATLAB提供的对符号表达式化简的函数 有: simplify(s):应用函数规则对s进行化简。 [r,how]=simple(S) :通过对表达式尝试多种 不同的算法进行化简,以寻求符号表达式S的 最简形式;r为返回的简化形式,how 为化简过 程中使用的主要方法,simple 函数综合使用了 下列化简方法: simplify函数对表达式进行化简; simple(s):调用MATLAB的其他函数对表达 式进行综合化简,并显示化简过程。
2008-7-2 6
3. 符号表达式的因式分解与展开(ex9_2.m) MATLAB提供了符号表达式的因式分解与 展开的函数,函数的调用格式为: factor(s):对符号表达式s分解因式。 expand(s):对符号表达式s进行展开。 collect(s):对符号表达式s合并同类项。 collect(s,v):对符号表达式s按变量v合并同 类项。
9.3.2 函数的泰勒级数 MATLAB提供了taylor函数将函数展开为幂 级数,其调用格式为: taylor(f):计算符号表达式f在默认自变量等于0 处的5阶Taylor级数展开式。 taylor(f,n,v):计算符号表达式f在自变量v=0处 的n-1阶Taylor级数展开式。 taylor(f,n,v,a):计算符号表达式f在自变量v=a处 的n-1阶Taylor级数展开式 例9-8 求函数的泰勒级数展开式。
2008-7-2
30
9.5 符号函数的简易绘图函数(examp9_11.m) 二维绘图函数 plot 是 MATLAB 最基本和最 常用的绘图函数,其简易绘图函数为 ezplot。ezplot的调用格式为: ezplot(f):绘制表达式 f(x) 的二维图形, x轴 坐标的近似范围为[-2pi,2pi]。 ezplot(f,[xmin,xmax]):绘制表达式f(x)的二 维图形,x轴坐标的范围[xmin,xmax]。