当前位置:文档之家› Matlab笔记之二---- 符号工具箱的应用2

Matlab笔记之二---- 符号工具箱的应用2

Matlab笔记之二---- 符号工具箱的应用2
Matlab笔记之二---- 符号工具箱的应用2

符号计算有两个特点:

1. 运算对象和运算过程允许存在非数值的符号变量;

2. 可以获得任意精度的数值解。

A=sym('[a11,a12],[a21,a22]')

inv(A)

determ(A)

eigensys(A)

syms a b c d

A=[a b c d;b -a d -c;c -d -a b;d c -b -a]

A1=det(A)

simple(A1)

A1=simple(A1)

Symbolic Math Toolbox 2.1 版沿用数值计算的这种模式,规定:在进行符号计算时,首先要定义基本的符号对象(可以是常数、变量、表达式),然后利用这些基本符号对象去构成新的表达式,进而从事所需的符号运算。在运算中,凡是由包含符号对象的表达式所生成的衍生对象也都是符号对象。定义基本符号对象的命令有两个:sym, syms。它们常用的使用格式有:f=sym(arg) 把数字、字符串或表达式arg转换为符号对象f。f=sym(argn,flagn) 把数值或数值表达式argn转换为flagn格式的符号对象。

argv=sym(…argv?, flagv) 按flagv指定的要求把字符串…argv?定义为符号对象arg v。

syms(…argv1?,…argv2?,…argvk?) 把字符argv1 argv2 argvk 定义为基本符号对象。syms argv1 argv2 argvk 上述格式的简洁形式

y=sym('2*sin(x)*cos(x)')

y=simple(y)

syms fai1 fai2

y=simple(sin(fai1)*cos(fai2)-cos(fai1)*sin(fai2))

在符号运算中,倘若事先没对表达式中的独立符号变量进行定义,那么MATLA B将会自动检查哪些字符是符号函数,哪些是变量符号,且总把在英文字母表中离x最近的字母认作为独立符号变量。

MATLAB采用了重载技术,使得用来构成符号计算表达式的算符和基本函数,无论在形状、名称上,还是在使用方法上,都与数值计算中的算符和基本函数几乎完全相同。

1 基本运算符算符“+”,“-”,“*”,“\”,“/”, “^”分别实现矩阵的加、减、乘、左除、右除、求幂运算。算符“.*”,“./”,“.\”,“.^”分别实现“元素对元素”的数组乘、除、求幂。算符“?”,“.?”分别实现矩阵的共轭转置、非共轭转置。

2 关系运算符在符号对象的比较中,没有“大于”、“大于等于”、“小于”、“小于等于”的概念,而只有是否“等于”的概念。算符“= =”,“~ =”分别对算符两边的对

象进行“相等”、“不等”的比较。当事实为“真”时,比较结果用1表示;当事实为“假”时,比较结果则用0表示。

3 三角函数、双曲函数及它们的反函数除atan2仅能用于数值计算外,其余的三角函数(如sin)、双曲函数(如cosh)及它们的反函数(如asin,acosh),无论在数值计算还是符号计算中,它们的使用方法相同。

4 指数、对数函数在数值、符号计算中,函数sqrt,exp,expm的使用方法完全相同。至于对数函数,符号计算中只有自然对数log(即一般教材中用ln),而没有数值计算中的log2,log10。

5 复数函数涉及复数的共轭conj、求实部real、求虚部imag和求模abs函数,在符号、数值计算中的使用方法相同。但注意,在符号计算中,MATLAB没有提供求相角的命令。

6 矩阵代数指令在矩阵计算中,MATLAB提供的常用矩阵代数指令有diag,tri u,tril,inv,det,rank,rref,null,colspace,poly,expm,eig,svd。它们的用法几乎与数值计算中的情况完全一样,只有svd稍微不同。

findsym可以实现对表达式中所有自由变量或指定数目的独立自变量的自动认定。具体如下:

findsym(EXPR) 确认表达式EXPR中所有“自由”符号“变量”。

findsym(EXPR, N) 从表达式EXPR中确认出靠x最近的N个独立自变量。

syms a b x X Y

k=sym('3')

z=sym('c*sqrt(delta)+y*sin(theta)')

EXPR=a*z*X+(b*x^2+k)*Y

findsym(EXPR)

findsym(EXPR,1)

findsym(EXPR,2)

findsym(EXPR,3)

syms a b t u v x y

A=[a+b*x,sin(t)+u;x*exp(-t),log(y)+v]

findsym(A,1)

[RS, ssub]=subexpr(S, ssub) 运用符号变量置换子表达式,重写S为RS。

syms a b c d W

[V,D]=eig([a b;c d])

[RVD,W]=subexpr([V;D],W)

被置换的子表达式是机器自动寻找的。其置换原则是:只有比较长的子表达式才被置换;至于比较短的子表达式,即便多次重复出现,也不被置换。

RES=subs(ES, old, new) 用new置换ES中的old后产生RES。RES=subs (ES, new) 用new置换ES中的自由变量后产生RES。

syms a x

f=a*sin(x)+5

f1=subs(f,'sin(x)',sym('y'))

double(x) 把符号常数转化为16位相对精度的浮点数值对象。

digits(n) 设置今后数值计算以n位相对精度进行。

xs=vpa(x) 在digits指定精度下,给出x的数值型符号结果xs。

xs=vpa(x, n) 在n位相对精度下,给出x的数值型符号结果xs。

1 double指令运作所得结果一定是双精度数值对象。

2 除了使用vpa(x,n)对特定符号对象指定具体精度外,所有vpa(x)的精度都受其前的digit指令控制。digit指令的缺省精度是32位。

3 x可以是符号对象,也可以是数值对象,但指令运作后所得结果xs一定是符号对象。

p0=sym('(1+sqrt(5))/2')

p1=sym((1+sqrt(5))/2)

pd=double(p0)

e01=vpa(abs(p0-p1))

e0d=vpa(abs(p0-pd))

p2=vpa(p0)

e02=vpa(abs(p0-p2),64)

digits

符号序列求和

s=symsum(f, v, a, b) 求f在指定变量v取遍[a, b]中所有整数时的和。

1 f是矩阵时,求和对元素逐个进行,但自变量定义在整个矩阵上。

2 v缺省时,f中的自变量由findsym自动辨认;b可以取有限整数,也可以取无穷大。

3 a, b可同时缺省,此时默认求和的自变量区间为[0, v-1]。

syms k t

f1=[t k^3]

f2=[1/(2*k-1)^2,(-1)^k/k]

s1=simple(symsum(f1))

s2=simple(symsum(f2,1,inf))

符号微分和Jacobian矩阵

diff(f, v, n)

jacobian(f, v) 求多元向量函数f的Jacobian矩阵。对一个矩阵的各个元素求偏导,结果仍为矩阵。

syms a t x

f=[a t^3;t*cos(x) log(x)]

dfx=diff(f)

dft2=diff(f,t,2)

dfxt=diff(diff(f,x),t)

syms x1 x2

f=[x1*exp(x2);x2;cos(x1)*sin(x2)]

v=[x1 x2]

fjac=jacobian(f,v)

积分函数:

int(f,v) 求f对指定变量v(不带积分常数的)不定积分。

int(f, v, a, b) 求f对指定变量v的定积分

syms a b x

f=[a*x b*x^2; 1/x sin(x)]

disp('The integeral of f is');pretty(int(f))

f1=int('1/log(t)','t',0,'x')

x=0.5:0.1:0.9

f11=-mfun('Ei',1,-log(x))

syms x y z

f=int(int(int(x^2+y^2+z^2,z,sqrt(x*y),x^2*y),y,sqrt(x),x^2),x,1,2)

vf=vpa(f)

符号卷积

卷积在物理学与信号分析学起着极为重要的作用:一个信号,记为f(t),通过某个线性系统S时,如果线性系统的脉冲响应是h(t),则其输出信号就是f(t)与h(t)的卷积。

syms T t positive

syms tao

ut=exp(-t)

ht=exp(-t/T)/T

uh_tao=subs(ut,t,tao)*subs(ht,t,t-tao)

yt=int(uh_tao,tao,0,t)

求函数u(t)=U(t)-U(t-1)和h(t)=t*exp(-t)U(t)的卷积。

syms tao

t=sym('t','positive') %定义t为正的符号变量

ut=sym('Heaviside(t)-Heaviside(t-1)')

ht=t*exp(-t)

yt=int(subs(ut,t,tao)*subs(ht,t,t-tao),tao,0,t)

yt=collect(yt,'Heaviside(t-1)')

SYMS arg1 arg2 ... %定义arg1,arg2为符号变量is short-hand notation for

arg1 = sym('arg1');

arg2 = sym('arg2'); ...

SYMS arg1 arg2 ... real %定义arg1,arg2为实数符号变量is short-hand notation for

arg1 = sym('arg1','real');

arg2 = sym('arg2','real'); ...

SYMS arg1 arg2 ... positive %定义arg1,arg2为正数符号变量is short-hand notation for

arg1 = sym('arg1','positive');

arg2 = sym('arg2','positive'); ...

SYMS arg1 arg2 ... unreal %定义arg1,arg2为非实数符号变量is short-hand notation for

arg1 = sym('arg1','unreal');

arg2 = sym('arg2','unreal'); ...

实验四 MATLAB符号运算

实验四 MATLAB 符号运算 一、实验目的 掌握符号变量和符号表达式的创建,掌握MATLAB 的symbol 工具箱的一些基本应用。 二、实验内容 (1) 符号变量、表达式、方程及函数的表示。 (2) 符号微积分运算。 (3) 符号表达式的操作和转换。 (4) 符号微分方程求解。 三、实验步骤 1. 符号运算的引入 在数值运算中如果求x x x πsin lim 0→,则可以不断地让x 接近于0,以求得表达式接近什么数,但是终究不能令0=x ,因为在数值运算中0是不能作除数的。MATLAB 的符号运算能解决这类问题。输入如下命令: >>f=sym('sin(pi*x)/x') >>limit(f,'x',0) >> 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') >> B=sym('x') >> f=sym('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) >> x=1 >> f4=sym(2*x+3) > 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') f1 = 1+2 >> f2=sym(1+2) f2 = 3 >> f3=sym('2*x+3') f3 = 2*x+3 >> f4=sym(2*x+3) ??? Undefined function or variable 'x'. >> x=1 x = >> f4=sym(2*x+3) f4 =

matlab符号运算

MATLAB程序设计教程(9)——MATLAB符号计算 by:ysuncn(欢迎转载,请注明原创信息) 第9章MATLAB符号计算 9.1 符号对象 9.2 符号微积分 9.3 级数 9.4 符号方程求解 9.1 符号对象 9.1.1 建立符号对象 1.建立符号变量和符号常量 MATLAB提供了两个建立符号对象的函数:sym和syms,两个函数的用法不同。 (1) sym函数 sym函数用来建立单个符号量,一般调用格式为: 符号量名=sym('符号字符串') 该函数可以建立一个符号量,符号字符串可以是常量、变量、函数或表达式。 应用sym函数还可以定义符号常量,使用符号常量进行代数运算时和数值常量进行的运算不同。

下面的命令用于比较符号常量与数值常量在代数运算时的差别。 (2) syms函数 函数sym一次只能定义一个符号变量,使用不方便。MATLAB提供了另一个函数syms,一次可以定义多个符号变量。syms函数的一般调用格式为: syms 符号变量名1 符号变量名2 … 符号变量名n 用这种格式定义符号变量时不要在变量名上加字符串分界符(‘),变量间用空格而不要用逗号分隔。 2.建立符号表达式 含有符号对象的表达式称为符号表达式。建立符号表达式有以下3种方法: (1)利用单引号来生成符号表达式。 (2)用sym函数建立符号表达式。 (3) 使用已经定义的符号变量组成符号表达式。 9.1.2 符号表达式运算 1.符号表达式的四则运算 符号表达式的加、减、乘、除运算可分别由函数symadd、symsub、symmul和symdiv来实现,幂运算可以由sympow来实现。

matlab图中特殊符号的输入

在MATLAB中使用LaTex字符 1.Tex字符表 在text对象的函数中(函数title、xlabel、ylabel、zlabel或text),说明文字除使用标准的ASCII字符外,还可使用LaTeX格式的控制字符,这样就可以在图形上添加希腊字母、数学符号及公式等内容。例如, text(0.3,0.5,‘sin({\omega}t+{\beta})’)将在图形窗口的(0.3,0.5)位置得 到标注效果sin(ωt+β)。 Tex字符在输出一些数学公式时经常使用,它只能由类型为text的对象创建。函数title、xlabel、ylabel、zlabel或text都能创建一个text对象,因此Tex字符转义符(带“\”的字符串)经常作为这些函数的输入参数。Tex字符及其函数见下表。 函数字符代表符号函数字符代表符号函数字符代表符号\alpha α\upsilon υ\sim ~ \beta β\phi φ\leq ≤ \gamma γ\chi χ\infty ∞ \delta δ\psi ψ\clubsuit ? \epsilon ε\omega ω\diamondsuit ? \zeta ζ\Gamma Γ\heartsuit ? \eta η\Delta ?\spadesuit ? \theta θ\Theta Θ\leftrightarrow ? \vartheta ?\Lambda Λ\leftarrow ← \iota ι\Xi Ξ\uparrow \kappa κ\Pi ∏\rightarrow → \lambda λ\Sigma ∑\downarrow ↓ \mu μ\Upsilon Y\circ ? \nu ν\Phi Φ\pm ± \xi ξ\Psi ψ\geq ≥ \pi π\Omega Ω\propto ∝ \rho ρ\formall ?\partial ? \sigma σ\exists ?\bullet ? \varsigma ?\ni ?\div ÷ \tau τ\cong ?\neq ≠ \equiv ≡\approx ≈\aleph ? \Im \Re ?\wp ? \otimes ?\oplus ⊕\oslash ? \cap ?\cup ?\supseteq ? \supset ?\subseteq ?\subset ? \int ?\in ∈\o ο \rfloor ?\lceil ?\nabla ?

实验MATLAB符号计算

实验四符号计算 符号计算的特点:一,运算以推理解析的方式进行,因此不受计算误差积累问题困扰;二,符号计算,或给出完全正确的封闭解,或给出任意精度的数值解(当封闭解不存在时);三,符号计算指令的调用比较简单,经典教科书公式相近;四,计算所需时间较长,有时难以忍受。 在MATLAB中,符号计算虽以数值计算的补充身份出现,但涉及符号计算的指令使用、运算符操作、计算结果可视化、程序编制以及在线帮助系统都是十分完整、便捷的。 MATLAB的升级和符号计算内核Maple的升级,决定着符号计算工具包的升级。但从用户使用角度看,这些升级所引起的变化相当细微。即使这样,本章还是及时作了相应的更新和说明。如MATLAB 6.5+ 版开始启用Maple VIII的计算引擎,从而克服了Maple V计算“广义Fourier变换”时的错误(详见第5.4.1节)。 5.1符号对象和符号表达式 5.1.1符号对象的生成和使用 【例5.1.1-1】符号常数形成中的差异 a1=[1/3,pi/7,sqrt(5),pi+sqrt(5)] % <1> a2=sym([1/3,pi/7,sqrt(5),pi+sqrt(5)]) % <2> a3=sym([1/3,pi/7,sqrt(5),pi+sqrt(5)],'e') % <3> a4=sym('[1/3,pi/7,sqrt(5),pi+sqrt(5)]') % <4> a24=a2-a4 a1 = 0.3333 0.4488 2.2361 5.3777 a2 = [ 1/3, pi/7, sqrt(5), 6054707603575008*2^(-50)] a3 = [ 1/3-eps/12, pi/7-13*eps/165, sqrt(5)+137*eps/280, 6054707603575008*2^(-50)] a4 = [ 1/3, pi/7, sqrt(5), pi+sqrt(5)] a24 = [ 0, 0, 0, 189209612611719/35184372088832-pi-5^(1/2)] 【例5.1.1-2】演示:几种输入下产生矩阵的异同。 a1=sym([1/3,0.2+sqrt(2),pi]) % <1> a2=sym('[1/3,0.2+sqrt(2),pi]') % <2> a3=sym('[1/3 0.2+sqrt(2) pi]') % <3> a1_a2=a1-a2 % a1 = [ 1/3, 7269771597999872*2^(-52), pi] a2 = [ 1/3, 0.2+sqrt(2), pi] a3 = [ 1/3, 0.2+sqrt(2), pi] a1_a2 = [ 0, 1.4142135623730951010657008737326-2^(1/2), 0]

matlab符号运算函数大全

m a t l a b符号运算函数大 全 The Standardization Office was revised on the afternoon of December 13, 2020

算术符号操作 命令 +、-、*、.*、\、.\、/、./、^、.^、’、.’ 功能符号矩阵的算术操作 用法如下: 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不存在或者不唯一,则产生一警告信 息。矩阵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 矩阵的方幂。

matlab期末考试复习资料

如何使某个窗口脱离桌面成为独立窗口?又如何将脱离出的窗口重新集成在桌面?MATLAB 操作桌面有几个窗口? 答: MATLAB的默认操作桌面包括命令窗口(Command Window)、启动平台窗口(Launch Dad)、工作空间窗口(Workspace)、命令历史窗口(Command History)和当前路径窗口(Current Directory)等5个窗口。 每个窗口的右上角都有按钮,可以使该窗口脱离操作桌面独立出来; 2、 who和whos命令有什么不同之处? 答: 查看工作空间中有哪些变量名,可以使用who命令完成;若想了解这些变量具体细节,可以使用whos命令查看。 3、分别使用help命令和lookfor命令查找plot函数的帮助信息。 答: >> help plot >> lookfor plot 4、一些命令在matlab中的应用 1.clf 清除图对象 clear清除工作空间内的所有变量 clc 清除当前屏幕上显示的所有内容,但不清除工作空间中的数据 2.ceil 沿+∞方向取整 factor符号计算的因式分解 3.box on 打开框状坐标轴开 grid off网格关一些 4.logspace 对数分度向量 cat 串接成高维数组 5.sym2poly 符号多项式转变为双精度多项式系数向量 poly2sym 双精度多项式系数转变为向量符号多项式 6.plot3 三维线图 poly2str 以习惯方式显示多项式 7.bar 二维直方图 pie 二维饼图 8.zoom on打开图形缩放模式 edit M文件编辑

9.whos 对当前工作空间变量的信息进行列表 figure 生成图形窗口 10.cart2sph 直角坐标变为球坐标 pol2cart 极或柱坐标变为直角坐标 11.diff数值差分、符号微分 dsolve 符号计算解微分方程 12.ezplot3画三维曲线的简捷指令 fix向零取整 factor 符号计算的因式分解 5. 在MATLAB中有几种获得帮助的途径? 答:(1)help 命令:在命令窗口输入help命令,也是MATLAB寻找在线帮助的一种方便而快捷的方式。(图示、操作演示) (2)帮助浏览器: MATLAB通过选择help可以获得各类帮助信息,通过勾选或删除勾选Desktop 菜单中的Help选项可打开或关闭窗口中独立的交互式帮助浏览器。 (3)lookfor 命令:(lookfor commend) 可以根据用户提供的完整或不完整的关键词,搜索出一组与之相关的命令或函数。(图示、操作演示) (4)模糊查询:(fuzzy Inquiry) 用户只须输入命令的前几个字母,然后键入Tab 键MATLAB 就会列出所有以这个字母开始的命令。(图示、操作演示) (5)帮助台:(doc)帮助台比帮助命令及帮助窗口提供更多的帮助信息。键入命令helpdesk可进入帮助台,可以利用浏览器的功能浏览帮助信息。 (6)在线帮助页:(doc)命令doc后加关键字,MATLAB会自动定位到相关页码,在线帮助页包括所有的字体、图形和图像都可以直接打印。 6. 在进行算术运算时,数组运算和矩阵运算各有什么特点,如何区分两种运算? 左除与右除有什麽区别? 答:普通的数组运算方式:(Array computation) 在数组中对应元素之间进行运算;矩阵运算方式:(matrix computations) 将标量当作1×1阶矩阵,一维数组当作一行或一列的矢量(即1×n阶或n×1阶的矩阵),二维数组当作m×n阶矩阵,然后按照矩阵的运算规则进行运算。 二者输入形式和书写方法相同,差别仅在于使用不同的运算符号,执行不同的计算过程,数组的运算是对应元素之间的运算,而矩阵运算是根据矩阵的运算规则进行。 数组的除法(Array division) 条件:a与b必须具有相同的维数。符号“. \ ”或“. / ”,运算结果相同,a.\b 表示b中的元素分别除以a中的对应元素,即z(i,j)=x(i,j)\y(i,j)=y(i,j)/x(i,j)。 矩阵除法(Matrix division) 条件:a矩阵是非奇异方阵,则a\b(左除)和b/a(右除)都可以实现。a\b等效于a矩阵的逆左乘b矩阵,即a\b=inv(a)*b,b/a等效于a矩阵的逆右乘b矩阵,即

MATLAB符号计算实验报告

实验六符号计算 学院:数计学院班级:1003班姓名:黄晓丹学号:1051020144 一、实验目的 1、了解富符号对象和数值对象之间的差别,以及它们之间的互相转换 2、了解符号运算和数值运算的特点、区别和优缺点 3、掌握符号对象的基本操作和运算,以及符号运算的基本运用 二、实验内容 1、符号常数形成和使用 (1)符号常数形成中的差异 >> a1=[1/3,pi/7,sqrt(5),pi+sqrt(5)] a1 = 0.3333 0.4488 2.2361 5.3777 >> a2=sym([1/3,pi/7,sqrt(5),pi+sqrt(5)]) a2 = [ 1/3, pi/7, sqrt(5),

6054707603575008*2^(-50)] >> a3=sym('[1/3,pi/7,sqrt(5),pi+sqrt(5)]') a3 = [ 1/3, pi/7, sqrt(5), pi+sqrt(5)] >> a24=a2-a3 a24 = [ 0, 0, 0, 189209612611719/35184372088832-pi-5^(1/2)] (2)把字符表达式转化为符号变量 >> y=sym('2*sin(x)*cos(x)') y = 2*sin(x)*cos(x) >> y=simple(y)

y = sin(2*x) (3)用符号计算验证三角等式 >> syms fai1 fai2;y=simple(sin(fai1)*cos(fai2)-cos(fai1)*sin(fai2)) y = sin(fai1-fai2) (4)求矩阵的行列式值、逆和特征值 >> syms a11 a12 a21 a22;A=[a11,a12;a21,a22] A = [ a11, a12] [ a21, a22] >> DA=det(A),IA=inv(A),EA=eig(A) DA =

完整word版,MATLAB符号运算

符号运算 科学计算包括数值计算和符号计算两种计算,数值计算是近似计算;而符号计算则是绝对精确的计算。 符号变量的生成和使用 1、符号变量、符号表达式和符号方程的生成 (1)、使用sym函数定义符号变量和符号表达式 单个符号变量 sqrt(2) sym(sqrt(2)) %显示精确结果 a=sqrt(sym(2)) %显示精确结果 double(a) sym(2)/sym(3) %显示精确结果 2/5+1/3 sym(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 x f=a*x^2+b*x+c g=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 y findsym(alpha+a+b)

MATLAB 符号运算

1、MATLAB程序设计 M文件:M文件是一种以m为扩展名的33文件,将MA TLAB命令流写入一个文本文件中,在MATLAB命令窗口中输入文件名可运行文件中的命令流。此文件必须以m为扩展名,MATLAB系统才能识别。 MATLAB文件搜索路径为:安装目录下的work目录。 通过File|set path…菜单可以增加工作目录。 1.1 M函数 (1)M函数的格式: Function 返回变量列表=函数名(输入变量列表) 注释 函数体语句 End 【例1.1.1】: 打开Medit窗口,编写如下程序: function n=fibfun(m) %FIBFUN for calculating Fibonacci numbers %Incidengtally, the name Fibonacci comes from %Filius Bonassi, or”son of Bonassus” %fibfun.m if m>10 n=fibfun (m-1) + fibfun (m-2); else n=10; end 编写完后以fibfun.m文件名存盘 然后在MATLAB主命令窗口中执行如下程序: >> fibfun (15) ans = 130 >> fibfun (8) ans = 10 文件保存名称必须与函数名相同,这样才能保证调用成功。 m文件与m函数的主要区别在于m函数中定义的变量在函数调用完成后会清除,为局部变量,而m文件中定义的变量在MA TLAB运行期内始终存在。一般以m文件作为主程序,在主程序中将一些功能模块以m函数的形式进行调用。 【例1.1.2】: M函数文件 Function [y1 y2]=proab(a,b) Y1=a^3;

matlab符号运算符

Matlab符号运算符的使用 一、&&/||/&/| |:数组逻辑或 ||:先决逻辑或 &:数组逻辑与 &&:先决逻辑与 &&和||被称为&和|的short circuit形式。 先决逻辑符号含义: 先判断左边是否为真;若为真,则不再判断右边;若为假,才继续进行或运算 先判断左边是否为假;若为假,则不再判断右边;若为真,才继续进行与运算两种运算符号的区别: 先决逻辑运算的运算对象只能是标量 数组逻辑运算可为任何维数组,运算符两边维数要相同 举例分析: A&B :首先判断A的逻辑值,然后判断B的值,然后进行逻辑与的计算。 A&&B:首先判断A的逻辑值,如果A的值为假,就可以判断整个表达式的值为假, 就可以判断整个表达式的值为假,就不需要再判断B的值。这种用法非常有用, 如果A是一个计算量较小的函数,B是一个计算量较大的函数,那么首先判断A 对减少计算量是有好处的。 另外这也可以防止类似被0除的错误。 Matlab中的if和while语句中的逻辑与和逻辑或都是默认使用short-circuit形式。// 这可能就是有时候用&和| 会报错的原因。

二、系统结构体内的变量 一般都是小写。 matlab区分大小写。 三、== 表示逻辑相等,返回结果,相等为1,不等为0。 四、.*(times)点乘 times Array multiply 数组乘 Syntax c = a.*b c = times(a,b) Description c = a.*b multiplies arrays a an d b element-by-element and returns th e result in c. Inputs a and b must have the same size unless one is a scalar. 注释:a、b要同尺寸,或其中一个为标量。 c = times(a,b) is calle d for th e syntax a.*b when a or b is an object. Example a = [1 2 3]'; b = [5 6 7]'; c = a.*b; 五、矩阵或向量共轭转置“’”和转置“.’” 若矩阵由实数构成,二者作用一样;

matlab实验五多项式和符号运算

实验五:Matlab多项式和符号运算 一、实验目的 1.掌握Matlab多项式的运算。 2.了解符号运算。 二、实验内容 1.将多项式()(2)(3)(7)(1) =-+-+化为x的降幂排列。 P x x x x x syms x; y=(x-2)*(x+3)*(x-7)*(x+1); expand(y) ans = x^4-5*x^3-19*x^2+29*x+42 2.求一元高次方程的根。 98765432 --++--++= 53015027313658204100576-28800 x x x x x x x x x syms x y; y=x^9-5*x^8-30*x^7+150*x^6-1365*x^4-820*x^3+410 0*x^2+576*x-2880; solve(y,x) ans = 6.81947687944124431946 1.42761488953013276419+.8192491831*i 2.865487219+2.49263348244446271927*i

-1.887673354+1.812452594*i -.9583509633 -5.922730991 -1.887673354-1.812452594*i 2.865487219-2.49263348244446271927*i 1.42761488953013276419-.8192491831*i 3.求一元高次方程的根,并画出左边多项式函数在[2,2] x∈-区间内的曲线。 42 -+= x x 210 a=[1 0 -2 0 1]; r=roots(a) syms x; x=-2:2; y=[1 0 -2 0 1]; plot(x,y) r = 1.0000 + 0.0000i 1.0000 - 0.0000i -1.0000 -1.0000

MATLAB 语言程序设计基础(1)

%第二章MATLAB 语言程序设计基础% % MATLAB 基本命令简介 % MATLAB 程序设计语言基础 % 基本数学运算 % MATLAB语言流程控制 % MATLAB 函数的编写 % 二维图形绘制 % 三维图形绘制 % 二维图形 % 基本平面 % plot % fplot%f(x) %fplot('tanh',[-2 2]) % loglog%双对数图形 % semilogx%x轴对数图形 % semilogy %zoom %meshgrid

% 特殊平面 %polar %bar %barh %compass %comet %errorbar %feather %hist 二维直方图%histc 直方图记数%rose 角度直方图%stairs %stem 柄形图 %stem3 %pie 饼形图 % 注释命令 % grid % gtext % text % legend % title

% xlabel,ylabel % 三维图形 % % 三维曲线,面填色命令 % comet3 三维彗星 % fill3 % 三维图形等高线 %clabel 二维等高线图中添加高度标签 % [x,y] = meshgrid(-2:.2:2); % z = x.*y.*exp(-x.^2-y.^2); % [C,h] = contour(x,y,z); % clabel(C,h); %contour %contourc 低级等高线图形计算命令。计算等高线矩阵c %contour3 三维空间等高线图 %contourf 填充二维等高线图 %contour,contour3和contourf %pie3

MatLab常见函数和运算符号解读

MatLab常见函数和运算符号 基本运算 convhull :凸壳函数 cumprod :累计积 cumsum :累计和 cumtrapz :累计梯形数值积分 delaunay :Delaunay三角化 dsearch :求最近点(这是两个有趣的函数 factor :质数分解inpolygon :搜索多边形内的点 max :最大元素 mean :平均值 median :数组的中间值 min :最小值 perms :向量所有排列组成矩阵 polyarea :多边形的面积 primes :生成质数列表 prod :数组元素积 sort :元素按升序排列 sortrows :将行按升序排列

std :标准差 sum :元素和 trapz :梯形数值积分 tsearch :搜索Delaunay三角形var :方差 voronoi :Voronoi图 del2 :Laplacian离散 diff :差分和近似微分gradient:数值梯度 corrcoef :相关系数 cov :协方差矩阵 xcorr :互相关系数 xcov :互协方差矩阵 xcorr2 :二维互相关 conv :卷积和多项式相乘conv2 :二维卷积 deconv :反卷积 filter :滤波 filter2 :二维数字滤波

傅立叶变换 abs :绝对值和模 angle :相角 cplxpair :按复共扼把复数分类 fft :一维快速傅立叶变换 fft2 :二维快速傅立叶变换 fftshit :将快速傅立叶变换的DC分量移到谱中央ifft :以为逆快速傅立叶变换 ifft2 :二维逆快速傅立叶变换 ifftn :多维逆快速傅立叶变换 ifftshift :逆fft平移 nextpow2 :最相邻的2的幂 unwrap :修正相角 cross :向量叉积 intersect:集合交集 ismember :是否集合中元素 setdiff :集合差集 setxor :集合异或(不在交集中的元素 union :两个集合的并

matlab符号计算实验报告

1. 已知x=6,y=5, 利用符号表达式求z =>> syms x >> z=(x+1)/(sqrt(x+3)-sqrt(y)); >> subs(z,x,5) ans =6/(8^(1/2)-y^(1/2)) >> subs(ans,6) ans = 15.8338 2. 分解因式。 (1)x y -44; >> syms x y >> factor(x^4-y^4) ans =(x-y)*(x+y)*(x^2+y^2) (2)x x x +++642 12575151 >> syms x >> factor(125*x^6+75*x^4+15*x^2+1) ans =(5*x^2+1)^3 3. 化简表达式 (1)sin cos cos sin ββββ-1212; >> syms x y >> f=sin(x).*cos(y)-cos(x).*sin(y); >> sfy1=simple(f) 结果:sfy1 =sin(x-y) (2)x x x +++248321 >> syms x >> f=(4*x^2+8*x+3)/(2*x+1);sfy1=simplify(f) sfy1 =2*x+3 4、求下列极限,将完成实验的程序写到文件sy1.m 中: (1) (2) (3) (4) (5) (1)>> syms x >> F1=atan(x)/(x); >> w=limit(F1) w =1 (2)>> syms x F2=((1+x)/(1-x))^(1/x); >> w=limit(F2) w =exp(2) (3)>> syms x F3=(x.*log(1+x))/(sin(x^2)); >> w=limit(F3) w =1 (4)>> syms x F4=atan(x)/(x); >> w=limit(F4,x,inf) w =0 (5)>> syms x F5=(1/(1-x)-1/(1-x^3)); >> w=limit(F5,x,1) w =NaN 5、求下列函数的导数,将完成实验的程序写到文件sy2.m 中: 1、 >> x = sym('x'); >> y1=(cos(x))^3-cos(3*x); >> diff(y1)ans =-3*cos(x)^2*sin(x)+3*sin(3*x) 2、 >> x = sym('x'); >> y2=x.*sin(x).*(log(x)); >> diff(y2)ans =sin(x)*log(x)+x*cos(x)*log(x)+sin(x) 3、 >> x = sym('x'); >> y3=(x.*exp(x)-1)/sin(x); >> diff(y3) ans =(exp(x)+x*exp(x))/sin(x)-(x*exp(x)-1)/sin(x)^2*cos(x) 4、 x x x x F 1011lim 2??? ??-+=→3 1115lim()11x F x x →=---20sin )1ln(lim 3x x x F x +=→x x F x arctan lim 10→=arctan 4lim x x F x →∞=x x y 3cos cos 13-=x x x y ln sin 2=x xe y x sin 13-=cos x y e x =

MATLAB实验——符号运算讲解

实验一符号运算 班级:电气4班姓名:叶元亮学号:B2012052409 一、实验目的 1、了解符号、数值、字符等数据类型的差别 2、了解符号运算的特点、优缺点 3、掌握符号变量的创建和运算,以及其运算的基本应用 4、掌握基本的符号绘图指令 二、实验内容 1、指出下面的 M1,M2,M3 分别是什么,并上机验证。 取a=1、b=2、c=3、d=4,M1=[a,b;c,d],M2='[a,b;c,d]',M3=sym('[a,b;c,d]'); >> a=1,b=2,c=3,d=4 a = 1 b = 2 c = 3 d = 4 >> M1=[a,b;c,d] M1 =

1 2 3 4 >> M2='[a,b;c,d]' M2 = [a,b;c,d] >> M3=sym('[a,b;c,d]') M3 = [ a, b] [ c, d] 结论:M1是矩阵,2是字符串,M3是字符变量。 2、下面2种取值情况下,计算b a b a- + 并赋给相应情况下的c1、c2,问c1、c2相等吗,为什么?上机验证。 (1) a1=1010; b1=10-10; (2)将a1、a2作为符号变量赋给a2、b2; >> a1=1e10; b1=1e-10; >> c1=(a1+b1-a1)/b1 c1 = >> a2=sym(a1); b2=sym(b1); >> c2=(a2+b2-a2)/b2 c2 = 1

结果:c1~=c2,因为c1=0,c2=1,a1、b1是具体的数值,a2、b2是符号变量。 3、符号表达式中自由变量的确定生成符号变量a 、b 、x 、X 、Y 、 k=3、z=a y w c sin +,表达式为 Y k bx azX f )(2++=。 (1)找出f 中的全部自由符号变量 (2)在f 中确定最优先的自由符号变量 (3)在f 中确定2个和3个自由变量时的执行情况 (4)试通过对各符号变量与x 的ASCII 值做绝对差值,分析自 由变量优秀顺序,能得出什么结论? >> syms a b x X Y k=sym('3'); z=sym('c*sqrt(w)+y*sin(a)'); f=a*z*X+(b*x^2+k)*Y; >> findsym(f) ans = X, Y, a, b, c, w, x, y >> findsym(f,1) ans = x >> findsym(f,2) ans = x,y

matlab基本【运算符】

基本运算 convhull :凸壳函数 cumprod :累计积 cumsum :累计和 cumtrapz :累计梯形数值积分 delaunay :Delaunay三角化 dsearch :求最近点(这是两个有趣的函数) factor :质数分解 inpolygon :搜索多边形内的点 max :最大元素 mean :平均值 median :数组的中间值 min :最小值 perms :向量所有排列组成矩阵 polyarea :多边形的面积 primes :生成质数列表 prod :数组元素积 sort :元素按升序排列 sortrows :将行按升序排列 std :标准差 sum :元素和 trapz :梯形数值积分 tsearch :搜索Delaunay三角形 var :方差 voronoi :Voronoi图 del2 :Laplacian离散 diff :差分和近似微分 gradient:数值梯度 corrcoef :相关系数 cov :协方差矩阵 xcorr :互相关系数 xcov :互协方差矩阵 xcorr2 :二维互相关 conv :卷积和多项式相乘 conv2 :二维卷积 deconv :反卷积 filter :滤波 filter2 :二维数字滤波 傅立叶变换 abs :绝对值和模 angle :相角 cplxpair :按复共扼把复数分类 fft :一维快速傅立叶变换

fft2 :二维快速傅立叶变换 fftshit :将快速傅立叶变换的DC分量移到谱中央 ifft :以为逆快速傅立叶变换 ifft2 :二维逆快速傅立叶变换 ifftn :多维逆快速傅立叶变换 ifftshift :逆fft平移 nextpow2 :最相邻的2的幂 unwrap :修正相角 cross :向量叉积 intersect:集合交集 ismember :是否集合中元素 setdiff :集合差集 setxor :集合异或(不在交集中的元素) union :两个集合的并 unique :返回向量作为一个集合所有元素(去掉相同元素) 基本数学函数 abs :绝对值 acos :反余弦 acosh :反双曲余弦函数 acot :反余切 acoth :反双曲线余切 acsc :反余割 acsch :反双曲线余割 angle :相位角 asec :反正割 asech :反双曲线正割 asin :反正弦 asinh :反双曲线正弦 atan :反正切 atanh :反双曲线正切 atan2 :四象限反正切 ceil :向正无穷方向舍入:ceil(4.3)=5 complex : 复数 conj :求共扼 cos :余弦 cosh :双曲余弦 cot :余切 coth :双曲线余切 csc :余割 csch :双曲线余割 exp :指数 fix :向零舍入 floor :向负无穷大舍入

实验3 Matlab 符号运算及求函数极值

实验3 Matlab 符号运算及求函数极值一、实验目的和要求 掌握用Matlab软件进行符号运算以及求函数的极值。 二、实验环境 Windows系列操作系统,Matlab软件。 三、实验内容 1.用MATLAB进行符号运算; 2.编程求函数的极值。 四、实验步骤 3.开启软件平台——Matlab,开启Matlab编辑窗口; 4.根据求解步骤编写M文件; 5.保存文件并运行; 6.观察运行结果(数值或图形); 7.根据观察到的结果和体会写出实验报告。 五、示例 1.计算一元函数的极值 例1求 2 2 344 1 x x y x x ++ = ++ 的极值 解首先建立函数关系: s yms x y=(3*x^2+4*x+4)/( x^2+x+1); 然后求函数的驻点: dy=diff(y); xz=solve(dy) xz= [0] [-2] 知道函数有两个驻点x 1=0和x 2 =-2, 接下来我们通过考察函数的图形,则它的极值情况和许多其它特性是一目了然的。而借助MATLAB的作图功能,我们很容易做到这一点。 例2 画出上例中函数的图形

解 syms x y=(3*x^2+4*x+4)/( x^2+x+1); 得到如下图形 ezplot(y) 2.计算二元函数的极值 MATLAB 中主要用diff 求函数的偏导数,用jacobian 求Jacobian 矩阵。 例1 求函数42823z x xy y =-+-的极值点和极值. 首先用diff 命令求z 关于x,y 的偏导数 >>clear; syms x y; >>z=x^4-8*x*y+2*y^2-3; >>diff(z,x) >>diff(z,y) 结果为 ans =4*x^3-8*y ans =-8*x+4*y 即348,84z z x y x y x y ??=-=-+??再求解方程,求得各驻点的坐标。一般方程组的符号解用solve 命令,当方程组不存在符号解时,solve 将给出数值解。求解方程的MA TLAB 代码为:

如何设置MATLAB的符号计算引擎。matlab_maple_engine

Access the world's best symbolic computation engine from within MATLAB 问题:我是一个MATLAB?用户,符号计算是我工作中重要的一部分。有哪些符号计算引擎方案可供我选择? 对需要符号计算的MATLAB用户,有以下三种配置方案: 选择1:Maple Toolbox for MATLAB Maplesoft提供Maple Toolbox for MATLAB,Maple-MATLAB的接口工具箱,让您可以选择在Maple 或MATLAB中工作,同时可以直接使用两个产品的命令、变量、和函数。对使用符号计算的MATLAB 用户而言,这是一个理想的选择,这个配置方案对现有的Symbolic Math Toolbox用户是完全兼容的。 软件要求:必须安装Maple,MATLAB,Maple Toolbox for MATLAB。版本说明:为了正确连接Maple和MATLAB,请尽量使用最新版本的Maple Toolbox for MATLAB。 如果MATLAB是您主要的工作环境,符号计算使用强大的Maple引擎完成。使用方式与Symbolic Math Toolbox?相同,使用sym和syms命令声明符号变量。应用在包含符号变量的表达式的命令,自动使用Maple符号引擎完成计算。您可以在MATLAB环境中使用Maple的所有命令,包括自定义程序。 Maple Toolbox for MATLAB让您能够在当前活动的Maple和MATLAB窗口中传输值,因此您可以在任一产品环境中对相同的问题完成计算。在MATLAB中,您可以在命令窗口中使用maple 命令打开Maple程序,然后使用setmaple命令发送MATLAB变量定义到Maple中。接着,您可以切换到Maple界面,使用Maple的工具(包括命令、菜单、面板、任务模板、交互式助手)使用这些变量完成计算。为了将值从Maple传递到MATLAB中,首先将值赋值给一个Maple变量,然后再MATLAB中使用getmaple命令,或者将变量声明为符号。MATLAB中的符号变量自动与对应Maple中的变量值同步。 学习资料:Maple Toolbox for MATLAB 工具箱使用介绍 https://www.doczj.com/doc/d41752718.html,/cn/maple/maplematlab/maple-matlab-connector1.pdf 在Maple Toolbox for MATLAB安装过程中,程序会提示您选择哪个符号计算引擎。如果您希望改变设置,您需要设置环境变量: Windows 系统: MATLAB_SYMBOLIC=maple 在Windows中如何设置:鼠标右击“我的电脑”,然后选择“属性(R)”,在“高级”标签栏中点击底部的“环境变量(N)”按钮。将MATLAB_SYMBOLIC变量值设为“Maple”,如果没有则创建一个新的系统变量。

相关主题
文本预览
相关文档 最新文档