当前位置:文档之家› 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/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)

findsym(cos(alpha)*b*x1+14*y,2) %x1,y

findsym(y*(4+3i)+6j)

findsym(cos(alpha)*b*x1+14*y,1) %x1

findsym(cos(alpha)*b*x1+14*y,3) %x1,y,b

(2)、任意精确度的符号表达式

digits函数设定所用数值的精度

digits:在command window显示当前设定的数值精度

digits(D):设置数值的精度为D

D=digits:在command window中返回当前设定数值精度

digits

digits(100)

D=digits

vpa函数进行可控精度运算

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.1

sym(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 b

fun1=sin(x)+cos(y)

fun1+fun2

(2)、合并同类项

collect(S,v):将符号矩阵S中所有同类项合并,并以v为符号变量输出

collect(S):使用findsym函数规定的默认变量,代替上式的v

syms x y

collect(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 x

fun1=2*x^3+2*x^2-32*x+40

horner(fun1)

fun2=x^3-6*x^2+11*x-6

horner(fun2)

(4)、简化

simplify(S):将表达式S中的每个元素都进行简化,即便使用多次simplify也不一定能得到最简形式

syms x

fun1=(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)^2

simple(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 y

f=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+t

findsym(g,1) %找到t

subs(g,1) %替换为s+1

多个变量替换

syms a b

subs(cos(a)+sin(b),{a,b},{sym('alpha'),2})

用矩阵替换

syms t x y

subs(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 y

f=x^2+y

finverse(f,y)

finverse(f) %由于没指明自变量,给出警告

syms x

f=x^2

g=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 u

f=1/(1+x^2)

g=sin(y)

h=x^t

p=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+n

m-n

m*n %出错

m\n

m/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.*p

q./p

q.\p

r=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的特征值与特征向量计算数值。若A、B均为矩阵,则返回错误

A.^B实现数组幂运算,若A与B为同型矩阵,则按对应分量进行计算。若A与B中至少有一个为标量,则现将标量扩大为另一个同型的阵列

p=sym('[x 1/x x^2 x^3;a b c d;5 2 3 6]')

q=sym('[3 4 9 6;x y z w;a b c d;1 3 5 7]')

q^2

p^2 %p矩阵不为方阵,报错

q.^2

p.^2

(5)、符号矩阵的秩

rank(A):求出方阵A的线性不相关的独立行和列的个数

rank(A,tol):求出比tol值大的值的个数,在上个命令中默认tol=max(size(A))*norm(A)*eps

a=sym('[1 1/x x^2;xin(x) cos(x) tan(x);log(x) 2 9]')

rank(a)

(6)、符号矩阵的逆和行列式运算

inv(X):求方阵X的逆,当X奇异或者范数很小时,系统给出一个出错信息

det(X):求方阵X的行列式

h=sym(hilb(4))

inv(h)

det(h)

b=sym('[1 x x^2;0 0 sin(x);0 0 log(x)]')

inv(b) %b矩阵行列式为0,不存在逆,返回FAIL

b=sym('[1,x;x;x^2]')

inv(b) %矩阵不是方阵,报错

符号微积分

1、符号极限

limit(F,x,a):计算符号表达式当x趋于a时F=F(x)的极限值

limit(F,a):x默认为findsym(F)

limit(F):a默认为0

limit(F,x,a,’right’) 或Limit(F,x,a,’left’):计算右极限和左极限

limit(sin(x)/x)

limit((x-2)/(x^2-4),2)

limit((1-2*1/x)^(3*x),x,inf)

limit(1/x,x,0,'left')

limit(1/x,x,0,'right')

limit((sin(x+h)-sin(x))/h,h,0)

2、符号微分和求导

(1)、diff函数的使用

diff(x):根据findsym(x)命令返回的自变量v,求表达式x的一阶导数

diff(x,n):根据findsym(x)命令返回的自变量v,求表达式x的n阶导数

diff(x,’v’)或diff(x,sym(‘v’)):对v求x的一阶导数

diff(x, ‘v’,n):对v求x的n阶导数

syms x y

diff(x^3+3*x^2+2*x+5)

diff(sin(x^3),6)

diff(sin(x^3),'x',6)

diff(sin(x^3),'v',6) %对v求x的6阶导数,结果为0

diff(x*y+y^2+sin(x)+cos(y),y)

diff(x*y+y^2+sin(x)+cos(y),y,3)

(2)、jacobian函数的使用

jacobian(f,v):计算数量或向量f对向量v的jacobi矩阵,所得矩阵的第i行第j列的数是df(i)/dv(j),当f为数量的时候,该命令返回的是f的梯度,若此时v也是数量,则jacobian(f,v)等价于diff(f,v)

syms x y z

a=[x^2+x*y;sin(x)*cos(y)]

jacobian(a,[x,y])

3、符号积分

int(S):根据由findsym(S)命令返回的自变量v,求S的不定积分,其中S为符号矩阵或符号数量

int(S,v):求S对v的不定积分

int(S,a,b):求a到b的定积分

int(S,v,a,b):求a到b的定积分

syms x x1 alpha u t;

A=[cos(x*t) sin(x*t);-sin(x*t) cos(x*t)]

int(1/(1+x^2))

int(sin(alpha*u),alpha)

int(besselj(1,x),x)

int(x1*log(1+x1),0,1)

int(4*x*t,x,2,sin(t))

int([exp(t) exp(alpha*t)])

int(A,t)

符号积分变换

1、Fourier变换及其逆变换

(1)、Fourier变换

F=fourier(f):以x为默认独立变量,返回w的函数,若f是w的函数,则返回的F是t的函数

F=fourier(f,v):返回的F以v为自变量

fourier(f,u,v):返回的函数以v为自变量,f以u为自变量

fourier(1/t)

fourier(exp(-x^2),x,t)

fourier(exp(-t)*sym('Heaviside(t)'),v)

fourier(diff(sym('F(x)')),x,w)

(2)、Fourier反变换

f=ifourier(F):以w为默认独立变量,默认的返回函数是以x为自变量的函数,若F以x为变量,返回函数以t为自变量

f=ifourier(F,u):返回的函数f以u为自变量

f=ifourier(F,v,u):返回的函数f以u为自变量,F以v为自变量

syms t u v w x

ifourier(w*exp(-3*w)*sym('Heaviside(w)'))

ifourier(1/(1+w^2),u)

ifourier(v/(1+w^2),v,u)

ifourier(sym('fourier(f(x),x,w)'),w,x)

2、Laplace变换及其逆变换

(1)、Laplace变换

L=laplace(F):F以t为独立自变量,返回函数L以s为变量,若F以s为自变量,则L以t为自变量

L=laplace(F,t):返回函数以t为自变量

L-laplace(F,w,z):返回函数L以z为自变量,F以w为自变量

syms a s t w x

laplace(t^5)

laplace(exp(a*s))

laplace(sin(w*x),t)

laplace(cos(w*x),w,t)

laplace(x^sym(3/2),t)

laplace(diff(sym('F(t)')))

(2)、Laplace反变换

F=ilaplace(L):L以s为独立自变量,返回函数以t为自变量,若L以t为自变量,返回函数以x为自变量

F=ilaplace(L,x):返回函数以x为自变量

F=ilaplace(L,y,x):返回函数以x为自变量,L以y为自变量

syms s t w x y

ilaplace(1/(s-1))

ilaplace(1/(t^2-1))

ilaplace(t^sym(5/2),x)

ilaplace(y/(y^2+w^2),y,x)

ilaplace(sym('laplace(F(x),x,s)'),s,x)

3、Z变换及其反变换

(1)、Z变换

F=ztrans(f):返回函数以z为自变量,f以n为独立自变量,若f以z为自变量,返回函数以w为自变量

F=ztrans(f,w)

F=ztrans(f,k,w)

syms k n w z

ztrans(2^n)

ztrans(sin(k*n),w)

ztrans(cos(k*n),k,z)

ztrans(cos(k*n),n,w)

ztrans(sym('f(n+1)'))

(2)、Z反变换

f=iztrans(F):F以z为独立自变量,f以n为自变量,若F以n为自变量,f以k为自变量f=iztrans(F,k)

f=iztrans(F,w,k)

syms x z k

iztrans(z/(z-2))

iztrans(exp(x/z),z,k)

符号代数方程的求解

1、符号线性方程组的求解

X=linsolve(A,B):求解AX=B的解

a=rand(4)

b=[1;2;3;4]

linsolve(a,b)

2、符号非线性方程组的求解

F(X)=0

X=fsolve(fun,X0):以X0为初始矩阵来求解方程fun,fun接受输入并返回一个向量,使得F=fun(X)

%求解方程组

%3*x(1)^2-x(2)^2=0

%3*x(1)*x(2)^2-x(1)^2-1=0

建立myfun2.m文件

function y=myfun2(x)

y(1)=3*x(1)^2-x(2)^2;

y(2)=3*x(1)*x(2)^2-x(1)^2-1;

运行代码

x=[0.8 0.4]

x=fsolve('myfun2',x)

3、一般符号代数方程组的求解

solve(‘eqn1’,’eqn2’,…,’eqnN’)

solve(‘eqn1’,’eqn2’,…,’eqnN’,’var1,var2,…,varN’)

solve(‘eqn1’,’eqn2’,…,’eqnN’,’var1’,’var2’,…,’varN’)

eqns是一些具体方程的符号表达式或字符串,而vars是一些未知的符号变量或未知额的字符串

solve('p*sin(x)=r')

[x y]=solve('x^2+x*y+y=3','x^2-4*x+3=0')

S=solve('x^2*y^2-2*x-1=0','x^2-y^2-1=0') %S是一个结构体

[u v]=solve('a*u^2+v^2=0','u-v=1') %a被作为参数求解关于u和v的方程组

S=solve('a*u^2+v^2=0','u-v=1','a,u') %v作为参数

[a u v]=solve('a*u^2+v^2=0','u-v=1','a^2-5*a+6')

[x y]=solve('sin(x+y)-exp(x)*y=0','x^2-y=2') %系统无法给出符号解,只给出数值解

符号微分方程的求解

dsolve(‘eqn1’,’eqn2’,’eqn3’,…):求符号解,初始条件,边界条件也可以算作eqns,默认输出函数的自变量为t,D表示对x一阶微分,D2表示对x二阶微分,以此类推

dsolve('Dx = -a*x')

x = dsolve('Dx = -a*x','x(0) = 1','s')

dsolve('D2y = -a^2*y', 'y(0) = 1, Dy(pi/a) = 0')

图示化符号函数计算器

1、单变量符号函数计算器

使用funtool函数来调用图示化单变量符号函数计算器

(1)、输入框功能

f=显示代表函数f的符号表达式,按Enter显示图像(图形窗口1)

g=显示代表函数g的符号表达式,按Enter显示图像(图形窗口2)

x=显示用于函数f与g的绘制区间,按Enter改变图像

a=显示一个用于改变函数f的常量因子

(2)、控制按钮的功能

运算操作按钮的功能

df/dx:函数f的导数

int f:函数f的积分

simple f:化简函数f

num f:函数f的分子

den f:函数f的分母

1/f:函数f的倒数

finv:函数f的反函数

f+a:用f(x)+a代替函数f(x)

f-a:用f(x)-a代替函数f(x)

f*a:用f(x)*a代替函数f(x)

f/a:用f(x)/a代替函数f(x)

f^a:用f(x)^a代替函数f(x)

f(x+a):用f(x+a)代替函数f(x)

f(x*a):用f(x*a)代替函数f(x)

f+g:用f(x)+g(x)代替函数f(x)

f-g:用f(x)-g(x)代替函数f(x)

f*g:用f(x)*g(x)代替函数f(x)

f/g:用f(x)/g(x)代替函数f(x)

g=f: f*g:用f(x)代替函数g(x)

swap:函数f(x)与g(x)互换

系统操作按钮的功能

Insert;将函数f(x)保存到函数内存列表中的最后

Cycle:用内存函数列表中的第二项代替函数f(x)

Delete:从内存函数列表中删除函数f(x)

Reset:重新设计计算器为初始状态

Help:显示在线的关于计算器的帮助

Demo:运行该计算器的演示程序

Close:关闭计算器的三个窗口

2、泰勒级数逼近计算器

使用taylortool函数来调用图示化泰勒级数逼近计算器

绘制函数f 的前N阶泰勒级数

利用Maple的深层符号计算资源MATLAB2010a已经不再支持maple内核

实验四 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中,符号计算虽以数值计算的补充身份出现,但涉及符号计算的指令使用、运算符操作、计算结果可视化、程序编制以及在线帮助系统都是十分完整、便捷的。 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符号计算实验报告

实验六符号计算 学院:数计学院班级: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符号计算(含作业)

第 2 章符号计算 符号计算: 解算数学表达式、方程不是在离散化的数值点上进行,而是凭借一系列恒等式,数学定理,通过推理和演绎,获得解析结果。 符号计算建立在数值完全准确表达和推演严格解析的基础之上,所得结果完全准确。 特点: 一.相对于MATLAB的数值计算“引擎”和“函数库”而言,符号计算的“引擎”和“函数库”是独立的。 二.在相当一些场合,符号计算解算问题的命令和过程,显得比数值计算更自然、更简明。 三.大多数理工科的本科学生在学过高等数学和其他专业基础课以后,比较习惯符号计算的解题理念和模式。 2.1符号对象和符号表达式 MATLAB依靠基本符号对象(包括数字、参数、变量)、运算符及一些预定义函数来构造和衍生符号表达式和符号方程。 2.1.1基本符号对象和运算算符 1.生成符号对象的基本规则 ●任何基本符号对象(数字、参数、变量、表达式、函数)都必须借助 专门的符号命令sym、syms、symfun定义。 ●任何包含符号对象的表达式或方程,将继承符号对象的属性。

2.精准符号数字和符号常数 符号(类)数字的定义: sym(Num) 采用精准数值类数创建精准的符号数字(推荐格式!) sc=sym(Num) 采用精准数值类数创建精准的符号常数sc(推荐格式!) 说明:若输入量Num是精准的浮点数(如0.321、10/3等),能生成精准的符号数字; 若输入量Num是诸如sin(0.3)的数值表达式,那么就只能生成由数字表达式获得的16位精度的近似符号数字。 sym('Num') 采用有理分数字符串创建精准的符号数字 sc=sym('Num') 采用有理分数字符串创建精准的符号常数sc 说明: Num必须处于(英文状态下的)单引号内,构成字符串(关于字符串参见附录A); 只有当字符串数字'Num'采用诸如321/1000、10/3等整数构成的有理分数形式表达时,sym('Num') 才能生成精准的符号数字; 若字符串数字用诸如0.321、3.21e-1等“普通小数或科学记述数”表达,那么只能产生“近似符号数字”。在默认情况下,该近似符号数字为32位精度。 【例2.1-1】 (1)创建完全精准的符号数字或数字表达式 clear all R1=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属于什么类别?答:sym R1与R4是否相等?(是为1,否为0)答:1 (2)产生具有32位精度的“近似”符号数字(杜绝使用!) S1=sin(sym('0.3')) % sym的输入量是字符串小数,生成32位精度下的 % 近似符号数,进而在sin作用下给出近似符号数。 S2=sin(sym('3e-1')) % syms的输入量是字符串科学记述数。 eRS=vpa(abs(R1-S1),64); disp(['S1属于什么类别?答:',class(S1)]) disp(['S1与R1是否相同?答: ',int2str(logical(R1==S1))]) disp('S1与R1的误差为') disp(double(eRS)) S1 = 0.29552020666133957510532074568503

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常见函数和运算符号解读

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

实验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 代码为:

实验二2MATLAB地符号计算与可视化

实验二MATLAB的符号计算与可视化 1:完成教材实验三第1节“1.创建符号表达式和符号表达式的操作”中(1)-(5)部分的内容,分别用sym和syms创建符号表达式f和g,并对它们进行相关操作,思考每一条命令的作用是什么,并提交命令行和结果; (1)创建符号变量。 ①使用sym命令创建符号表达式: >> f=sym('sin(x)') f = sin(x) >> g=sym('y/exp(-2*t)') g = y*exp(2*t) ②使用syms命令创建符号表达式: >> syms x y t >> f=sym(sin(x)) f = sin(x) >> g=sym(y/exp(-2*t)) g = y*exp(2*t) (2):自由变量的确定:

>> symvar(g) ans = [ t, y] >> symvar(g,1) ans = y >> findsym(g,2) ans = y,t (3):用常数替换符号变量: >> x=0:10; >> y=subs(f,x) y = Columns 1 through 8 0 0.8415 0.9093 0.1411 -0.7568 -0.9589 -0.2794 0.6570 Columns 9 through 11 0.9894 0.4121 -0.5440 练习:用y替换x,查看结果及其数据类型。 z=subs(f,y) z = Columns 1 through 8

0 0.7456 0.7891 0.1407 -0.6866 -0.8186 -0.2758 0.6107 Columns 9 through 11 0.8357 0.4006 -0.5176 >> class(z) ans = double (4):符号对象与数值的转换和任意精度控制: >> f1=subs(f,'5') f1 = sin(5) >> y1=double(f1) y1 = -0.9589 >> y2=eval(f1) y2 = -0.9589 练习:将y1用sym函数转换为符号对象,并用’d’,’f’,’e’,’r’4种格式表示。>> y2=sym(y1,'d') y2 = -0.95892427466313845396683746002964

第9章MATLAB符号计算_习题答案

第9章MATLAB符号计算 习题9 一、选择题 1 .设有a=sym(4)。则1/a+1/a 的值是( A . 0.5 B . 1/2 2 .函数factor(sym(15))的值是( A . '15' B. 15 3 .在命令行窗口输入下列命令: >> f=sym(1); >> eval(i nt(f,1,4)) 则命令执行后的输 出结果是 A . 3 4 . MATLAB A . tailor 5. MATLAB A . solve 二、填空题 1. 在进行符号运算之前首先要 建立符号对象,sym, syms 2. 对于“没有定义”的极限, 大的极限,MATLAB给出的结果为 3. 在命令行窗口输入下列命 令: >> syms n; >> s=symsu m(n ,1,10) 命令执行后s的 值是 ________________________ , 4. 在MATLAB 中,函数 )。B C . 1/4+1/4 D . 2/a )。D C . [ 1, 3, 5] D . [ 3, 5] ,所使用的函数或命令有__________ 和 ________________________________ 代表________ 。符号代数方程,求解变量 5. 在MATLAB符号计算中 三、应用题 1 .分解因式。 (1) x9-1 (3) 125X6+75X4+15X2+1)。A B . 4 C . 5 D . 1将函数展开为幕级数,所使用的函数是( )。D B . tayler C . diff 用于符号常微分方程求解的函数是( )。C B . solver C . dsolve D . taylor D . dsolver MATLAB给出的结果为 _________ ;对于极限值为无穷 _______ 。 NaN, Inf 55 solve(s,v)用于代数方程符号求解,其中s代表________ , v y的二阶导数表示为__________ 。D2y (2) X4+X3+2X2+X+1 / 、 2 2 2 (4) X +y +z +2(xy+yz+zx) (1):

Matlab符号变量

Matlab的符号运算功能强大,看了些资料,都比较啰嗦,然后再次总结为一个m 文件测试大部分符号运算功能%% 符号变量与符号表达式%%%%%%%%%%%%%%%%%%%%%%%%%%% %1.符号变量与符号表达式 %%%%%%%%%%%%%%%%%%%%%%%%%%% clear all ; clc; close all; % f =sym( 'sin(x)+5x') % f ——符号变量名 % sin(x)+5x——符号表达式 % ' '——符号标识 % 符号表达式一定要用' ' 单引号括起来matlab才能识别 % ' ' 的内容可以是符号表达式,也可以是符号方程。 % 例: % f1=sym('a*x^2+b*x+c') ——二次三项式 % f2=sym('a*x^2+b*x+c=0' )——方程 % f3=sym('Dy+y^2=1') ——微分方程 % 符号表达式或符号方程可以赋给符号变量,以后调用方便;也可以不赋给符号变量直接参与运算 % syms 命令用来建立多个符号量,一般调用格式为: % syms 变量1 变量2 ... 变量n %% 符号矩阵的创建 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %2.符号矩阵的创建 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 数值矩阵A=[1,2;3,4] % A=[a,b;c,d] ——不识别 % @1.用matlab函数sym创建矩阵(symbolic的缩写) % 命令格式:A=sym('[ ]') % ※ 符号矩阵内容同数值矩阵 % ※ 需用sym指令定义 % ※ 需用' '标识 % 例如: A = sym('[a , 2*b ; 3*a , 0]') % A = % [ a, 2*b] % [3*a, 0] % 这就完成了一个符号矩阵的创建。 % 注意:符号矩阵的每一行的两端都有方括号,这是与 matlab数值矩阵的一个重要区别。%@2.用字符串直接创建矩阵(这种方法创建的没有什么用处)

MATLAB符号计算函数用法总结

MATLAB符号计算函数用法总结 符号计算是对未赋值的符号对象(可以是常数、变量、表达式)进行运算和处理。MTALAB具有符号数学工具箱(Symbolic Math toolbox),将符号运算结合到MATLAB的属具运算环境。符号数学工具箱是建立在Maple软件基础上的。 算术符号操作: 命令有:+、-、*、.*、\、.\、/、./、^、.^、’、.’ 用法如下: A+B、A-B符号阵列的加法和减法。 若A与B为同型阵列时,A+B、A-B分别对对应分量进行加减;若A与B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行加减。 A*B符号矩阵乘法。 A*B为线性代数中定义的矩阵乘法。按乘法定义要求必须有矩阵A的列数等于矩阵B的行数。即:若 An*k*Bk*m=(aij)n*k.*(bij)k*m=Cn*m=(cij)n*m,则,i=1,2,…,n;j=1,2,…,m。 或者至少有一个为标量时,方可进行乘法操作,否则将返回一出错 信息。 A.*B符号数组的乘法。 A.*B为按参量A与B对应的分量进行相乘。A与B必须为同型阵列,或至少有一个为标量。即: An*m.*Bn*m=(aij)n*m.*(bij)n*m=Cn*m=(cij)n*m,则cij= aij* bij,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为同型阵列时, An*m.\Bn*m=(aij)n*m.\(bij)n*m=Cn*m=(cij)n*m,则cij= aij\ bij,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为同型阵列时, An*m./Bn*m=(aij)n*m./(bij)n*m=Cn*m=(cij)n*m,则cij= aij/bij,i=1,2,…,n; j=1,2,…,m。若A与B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行操作。 A^B矩阵的方幂。 计算矩阵A的整数B次方幂。若A为标量而B为方阵,A^B用方阵B的特征值与特征向量计算数值。若A与B同时为矩阵,则返回一错误信息。 A.^B数组的方幂。 A.^B为按A与B对应的分量进行方幂计算。若A与B为同型阵列时, An*m..^Bn*m=(aij)n*m..^(bij)n*m=Cn*m=(cij)n*m,则cij= aij^bij,i=1,2,…,n; j=1,2,…,m。若A与B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行操作。 A'矩阵的Hermition转置。 若A为复数矩阵,则A'为复数矩阵的共轭转置。即,若A=(aij)=(xij+i*yij),则 。

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不存在或者不唯一,则产生一警告信息。矩阵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 矩阵的方幂。 计算矩阵A的整数B次方幂。若A为标量而B为方阵,A^B用方阵B的特征值 与特征向量计算数值。若A与B同时为矩阵,则返回一错误信息。 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中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应 的分量进行操作。

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