第五章 符号数学基础.docx

上传人:b****7 文档编号:10214068 上传时间:2023-02-09 格式:DOCX 页数:19 大小:45.34KB
下载 相关 举报
第五章 符号数学基础.docx_第1页
第1页 / 共19页
第五章 符号数学基础.docx_第2页
第2页 / 共19页
第五章 符号数学基础.docx_第3页
第3页 / 共19页
第五章 符号数学基础.docx_第4页
第4页 / 共19页
第五章 符号数学基础.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

第五章 符号数学基础.docx

《第五章 符号数学基础.docx》由会员分享,可在线阅读,更多相关《第五章 符号数学基础.docx(19页珍藏版)》请在冰豆网上搜索。

第五章 符号数学基础.docx

第五章符号数学基础

第五章符号数学基础

Chapter5:

FoundationofSymbolicMathematics

一.符号对象的创建(Creatingasymbolicobject)

1.创建符号变量和表达式(Creatingasymbolicvariableandexpression)

创建符号变量和表达式的两个基本函数:

sym,syms

*x=sym(‘x’)创建一个符号变量x,可以是字符、字符串、表达式或字符表达式。

*syms用于方便地一次创建多个符号变量,调用格式为:

symsabcd.书写简洁意义清楚,建议使用。

例1:

使用sym函数创建符号变量.

a=sym(‘a’)

b=sym(‘hello’)

c=sym((‘(1+sqrt(5))/2’)

y=sym(‘x^3+5*x^2+12*x+20’)

a=

a

b=

hello

C=

(1+sqrt(5))/2

Y=

x^3+5*x^2+12*x+20

例2:

用syms函数创建符号变量。

symsabcd

2.创建符号矩阵(SymbolicmatrixCreating)

例1:

创建一个循环矩阵。

symsabcd

n=[abcd;bcda;cdab;dabc]

n=

[a,b,c,d]

[b,c,d,a]

[c,d,a,b]

[d,a,b,c]

例2:

将3阶Hilbert矩阵转换为符号矩阵。

h=hilb(3)

h1=sym(h)

h=

1.00000.50000.3333

0.50000.33330.2500

0.33330.25000.2000

h1=

[1,1/2,1/3]

[1/2,1/3,1/4]

[1/3,1/4,1/5]

注意符号矩阵于数值矩阵的区别。

3.默认符号变量(Impliedsymbolicvariable)

在MATLAB的符号数学工具箱中,以最接近x的顺序排列默认自变量的顺序,可利用findsym函数对默认自变量进行查询。

例1:

求符号函数在不同自变量情况下的结果。

创建符号变量x和n,建立函数f=xn,然后分别求f对x和f对n的导数.

symsxn

f=x^n

diff(f)%x作为自变量,求f对x的导数

diff(f,n)%n作为自变量,求f对n的导数

f=

x^n

ans=

x^n*n/x

ans=

x^n*log(x)

例2:

查询符号函数中的默认自变量。

创建符号变量a,b,n,x和t,建立函数f=axn+bt,然后求f的默认自变量。

symsabntx

f=a*x^n+b*t

findsym(f,1)

findsym(f,2)

findsym(f,5)%f表达式中按最接近x顺序排列的5个默认自变量

findsym(f)%f表达式中按最接远字母顺序排列的全部自变量

f=

a*x^n+b*t

ans=

x

ans=

x,t

ans=

x,t,n,b,a

ans=

a,b,n,t,x

>>

二.符号表达式的化简和替换(simplifyingandreplacingofSymbolicexpressions)

符号数学工具箱提供的符号表达式的因式分解、展开、合并、化简、通分等操作:

1.符号表达式的化简(Simplifyingofsymbolicexpression)

(1).因式分解(Factorization)

符号表达式的因式分解函数为factor(S),可分解符号表达式S的各个元素。

例1:

对表达式f=x9-1进行因式分解。

symsx

f=factor(x^9-1)

pretty(f)

f=

(x-1)*(x^2+x+1)*(x^6+x^3+1)

(x-1)(x2+x+1)(x6+x3+1)

例2:

对大整数12345678901234567890进行因式分解。

factor(sym(‘12345678901234567890’))

ans=

(2)*(3)^2*(5)*(101)*(3803)*(3607)*(27961)*(3541)

(2)符号表达式的展开(Expandingofsymbolicexpressions)

符号表达式的展开函数为expand(S),此函数因数展开符号表达式S.

例:

展开表达式f=(x+1)5和f=sin(x+y)

symsxy

f=(x+1)^5;

expand(f)

f=sin(x+y);

expand(f)

ans=

x^5+5*x^4+10*x^3+10*x^2+5*x+1

ans=

sin(x)*cos(y)+cos(x)*sin(y)

(3).符号表达式的同类项合并(Similarteammergingforsymbolicexpression)

符号表达式的同类项合并函数为collect(S,n),此函数将符号表达式中自变量的同次幂项的系数合并。

例:

对于表达式f=x(x(x-6)+12)t,分别将自变量x和t的同类项合并。

symsxt

f=x*(x*(x-6)+12)*t;

collect(f)

collect(f,t)

ans=

t*x^3-6*t*x^2+12*t*x

ans=

x*(x*(x-6)+12)*t

(4).符号表达式的化简(Simplifyingofsymbolicexpression)

符号表达式的两个化简函数:

simplify,simple,

simplify:

化简函数,可用于化简各种表达式

例1:

对表达式f=sin2(x)+cos2(x)进行化简.

symsx

f=sin(x)^2+cos(x)^2;

simplify(f)

ans=

1

[r,how]=simple(S)函数可寻找符号表达式S的最简型,r为返回的简化形式,how为化简过程中使用的主要方法,simple函数综合使用了下列化简方法:

*simplify函数对表达式进行化简

*radsimp函数对含根式(surd)的表达式进行化简

*combine函数对表达式中以求和、乘积、幂运算等形式出现的项进行合并

*collect合并同类项

*factor函数实现因式分解

*convert函数完成表达式形式的转换

例2:

最简表达式的获得。

symsxt

f=cos(x)^2-sin(x)^2;

[r,how]=simple(f)

r=

cos(2*x)

how=

combine

(5)符号表达式的分式通分(Reductionsymbolicexpressiontocommondenominator)

符号表达式的分式通分函数为[n,d]=numden(S),此函数将符号表达式转换为分子(Numerator)和分母(denominator)都是正系数的最佳多项式。

例:

对表达式f=x/y+y/x进行通分。

symsxy

f=x/y+y/x;

[n,d]=numden(f)

n=

x^2+y^2

d=

y*x

(6)符号表达式的嵌套形式重写(Representationofnestedsymbolicexpression)

符号表达式的嵌套形式重写函数为horner(S),此函数将符号表达式转换为嵌套形式。

例:

对表达式f=x3+6x2+11x-6进行嵌套形式重写。

symsx

f=x^3+6*x^2+11*x-6;

horner(f)

ans=

-6+(11+(6+x)*x)*x

2.符号表达式的替换(Replacingofsymbolicexpression)

MATLAB的符号数学工具箱提供了两个符号表达式的替换函数subexpr和subs,可通过符号替换使表达式的输出形式简化。

subexpr函数可将表达式中重复出现的字符串用变量代替。

调用格式:

[Y,SIGMA]=subexpr(S,SIGMA):

用变量SIGMA的值代替符号表达式S中重复出现的字符串,Y返回替换后的结果。

例:

求解并化简三次方程x3+ax+1=0的符号解。

t=solve(‘x^3+a*x+1=0’)

[r,s]=subexpr(t,’s’)

t=[1/6*(-108+12*(12*a^3+81)^(1/2))^(1/3)-2*a/(-108+12*(12*a^3+81)^(1/2))^(1/3)]

[-1/12*(-108+12*(12*a^3+81)^(1/2))^(1/3)+a/(-108+12*(12*a^3+81)^(1/2))^(1/3)+1/2*i*3^(1/2)*(1/6*(-108+12*(12*a^3+81)^(1/2))^(1/3)+2*a/(-108+12*(12*a^3+81)^(1/2))^(1/3))]

[-1/12*(-108+12*(12*a^3+81)^(1/2))^(1/3)+a/(-108+12*(12*a^3+81)^(1/2))^(1/3)-1/2*i*3^(1/2)*(1/6*(-108+12*(12*a^3+81)^(1/2))^(1/3)+2*a/(-108+12*(12*a^3+81)^(1/2))^(1/3))]

r=

[1/6*s^(1/3)-2*a/s^(1/3)]

[-1/12*s^(1/3)+a/s^(1/3)+1/2*i*3^(1/2)*(1/6*s^(1/3)+2*a/s^(1/3))]

[-1/12*s^(1/3)+a/s^(1/3)-1/2*i*3^(1/2)*(1/6*s^(1/3)+2*a/s^(1/3))]

s=

-108+12*(12*a^3+81)^(1/2)

函数subs是用指定符号替换符号表达式中的某一特定符号,调用格式为:

R=subs(S,old,new),它可用新的符号变量new替换原来符号表达式S中的old.当new为数值形式时,显示的结果虽然是数值,但它事实上是符号变量。

例:

分别用新变量替换表达式a+b和cos(a)+sin(b)中变量。

symsab

subs(a+b,a,4)

subs(cos(a)+sin(b),{a,b},{sym('alpha'),2})%用单元数组完成不同性质

%元素的替换

 

ans=

4+b

ans=

cos(alpha)+sin

(2)

三.符号微积分(Differentialandintegralcalculus)

1.符号极限(Symboliclimit)

*limit(F,x,a)计算符号表达式F在x→a条件下的极限;

*limit(F,a)计算符号表达式F中由默认自变量趋向于a条件下的极限;

*limit(F,)计算符号表达式F在默认自变量趋向于0条件下的极限;

*limit(F,x,a,‘right’)和limit(F,x,a,’left’)计算符号表达式F在x→a条件下的右极限和左极限。

例:

分别计算表达式

symsxa;

limit(sin(x)/x)

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

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

v=[(1+a/x)^x,exp(-x)];

limit(v,x,inf,’left’)

ans=

1

ans=

inf

ans=

-inf

ans=

[exp(a),0]

2.符号微分(symbolicdifferentialcalculus)

*diff(S)求符号表达式S对于默认自变量的微分;

*diff(S,v)求符号表达式S对于自变量v的微分;

*diff(S,n)求符号表达式S对于默认自变量的n次微分;

例:

分别计算表达式f=xx的导数和3次导数.

symsx;

f=x^x;

diff(f)

diff(f,3)

ans=

x^x*(log(x)+1)

ans=

x^x*(log(x)+1)^3+3*x^x*(log(x)+1)/x-x^x/x^2

3.符号积分(Symbolicintegralcalculus)

*int(S)求符号表达式S对于默认自变量的不定积分;

*int(S,v)求符号表达式S对于自变量v的不定积分;

*int(S,a,b)求符号表达式S对于默认自变量从a到b的定积分;

例:

分别计算表达式

symsxz;

f=-2*x/(1+x^2)^2;

int(f)

f=x/(1+z^2);

int(f)

int(f,z)

f=x*log(1+x);

int(f,0,1)

ans=

1/(1+x^2)

ans=

1/2*x^2/(1+z^2)

ans=

x*atan(z)

ans=

1/4

4.符号求和(Symbolicsummation)

*symsum(S)求符号表达式S对于默认自变量的不定和;

*symsum(S,v)求符号表达式S对于自变量v的不定和;

*symsum(S,a,b)求符号表达式S对于默认自变量从a到b的有限和;

例:

分别计算表达式∑k,

symskx

symsum(k)

symsum(k^2,0,10)

symsum(x^k/sym(‘k!

’),k,0,inf)

ans=

1/2*k^2-1/2*k

ans=

385

ans=

exp(x)

5.Taylor级数展开(Taylorseriesexpanding)

*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级数展开式。

例:

分别计算表达式

的5阶Taylor级数展开式和f=exsin(x)的

5阶及12阶Taylor级数展开式。

symsx

f=1/(5+cos(x));

r=taylor(f)

f=exp(x*sin(x));

r=taylor(f,12)

r=taylor(f)

r=

1/6+1/72*x^2

r=

1+x^2+1/3*x^4+1/120*x^6-11/560*x^8-1079/362880*x^10

r=

1+x^2+1/3*x^4

四.符号方程的求解(Symbolicequationsolution)

1.符号代数方程组的求解(symbolicalgebraequationssetsolution)

*g=solve(eq)求解符号表达式eq=0的代数方程,自变量为默认自变量;

*g=solve(eq,var)求解符号表达式eq=0的代数方程,自变量为var;

*g=solve(eq1,eq2,…,eqn,var1,var2,…,varn))求解符号表达式eq1,eq2,…eqn组成的代数方程组,自变量分别为var1,var2,…varn。

例1:

分别求解代数方程ax2+bx+c=0和cos(2x)+sin(x)=1

symsabcx

s=a*x^2+b*x+c;

solve(s)

solve('cos(2*x)+sin(x)=1')

ans=

[1/2/a*(-b+(b^2-4*a*c)^(1/2))]

[1/2/a*(-b-(b^2-4*a*c)^(1/2))]

ans=[0]

[pi]

[1/6*pi]

[5/6*pi]

例2:

求解代数方程组x2-y2+z=10,x+y-5z=0,2x-4y+z=0

symsxyz

f=x^2-y^2+z-10;

g=x+y-5*z;

h=2*x-4*y+z;

[x,y,z]=solve(f,g,h)%以数值数组形式输出求解结果

S=solve(f,g,h);%缺省情况将方程组的解存放在结构变量中

[Sx,Sy,Sz]

x=

[-19/80+19/240*2409^(1/2)]

[-19/80-19/240*2409^(1/2)]

y=

[-11/80+11/240*2409^(1/2)]

[-11/80-11/240*2409^(1/2)]

z=

[-3/40+1/40*2409^(1/2)]

[-3/40-1/40*2409^(1/2)]

ans=

[-19/80+19/240*2409^(1/2),-11/80+11/240*2409^(1/2),-3/40+1/40*2409^(1/2)]

[-19/80-19/240*2409^(1/2),-11/80-11/240*2409^(1/2),-3/40-1/40*2409^(1/2)]

2.符号微分方程求解(Symbolicdifferentialequationsolution)

符号微分方程求解函数:

r=dsolve(‘eq1,eq2…’,’cond1,cond2…’,’v’)

求由eq1,eq2,…指定的微分方程的符号解,参数cond1,cond2,…为指定常微分方程的边界条件或初始条件,自变量v如果不指定,将为默认自变量。

方程中D表示一次微分D2和D3分别表示二次及三次微分,D后的字符为默认自变量。

例1:

求微分方程dy/dx=ay的通解和当y(0)=b时的特解。

dsolve(‘Dy=a*y’)

dsolve(‘Dy=a*y’,’y(0)=b’,’x’)

ans=

C1*exp(a*t)默认自变量为t

ans=

b*exp(a*x)

例2:

求微分方程

=-a2y当y=(0)=1及

时的特解。

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

ans=

cos(a*t)

五.符号数学的简易绘图函数(Easyplotingfunctionofsymbolicmathematics)

1.二维图绘图函数(Twodimensionalplottingfunction)

*ezplot(f)绘制表达式f(x)的二维图形,轴坐标的近似范围为[-2π,2π].

*ezplot(f,[xmin,xmax])绘制表达式f(x)的二维图形,轴坐标的近似范围为[xmin,xmax].

*ezpolar(f)在极坐标下绘制函数表达式f(x)的二维图形。

例1:

绘制函数表达式x2-y2的二维图形

symsxy

ezplot(x^2-y^4)

例2:

绘制误差函数f(x)=

的二维图形.

symsx

ezplot(erf(x))

grid

例3:

在极坐标下绘制函数表达式1+cos(t)的二维图形。

symst

figure

(1)

ezplot(1+cos(t))

figure

(2)

ezpolar(1+cos(t))

2.三维绘图函数(Threedimensionalplottingfunction)

*ezplot3(x,y,z)绘制由表达式x=x(t),y=y(t)和z=z(t)定义的三维曲线,自变量t的变化范围为[-2π,2π]。

*ezplot3(x,y,z,[tmin,tmax])绘制由表达式x=x(t),y=y(t)和z=z(t)定义的三维曲线,自变量t的变化范围为[tmin,tmax]。

*ezplot3(…,’animate’)如果在函数中增加参数’animate’,则绘制三维动态轨迹图。

例;根据表达式x=sin(t),y=cos(t)和z=t,绘制三维曲线.

symst;

ezplot3(sin(t),cos(t),t,[0,6*pi])

绘动态轨迹图

symst;

ezplot3(sin(t),cos(t),t,[0,6*pi],'animate')

4.网格图绘图函数(Netplotplottingfunction)

*ezmesh(f)绘制由表达式f(x,y)定义的网格图,自变量x和y的变化范围为[-2π,2π];

*ezmesh(f,domain)绘制由表达式f(x,y)定义的网格图,自变量x和y的变化范围由domain确定,domain可以是4×1的矢量[xmin,xmax,ymin,ymax],也可以是2×1的矢量[min,max],当domain为的矢量时,min

*ezmesh(x,y,z)绘制由表达式x=x(s,t),y=y(s,t)和z=z(s,t)定义的参数表面网格图,自变量s和t的变化范围为[-2π,2π];

*ezmesh(x,y,z,[smin,smax,tmin,tmax])绘制由表达式x=x(s,t),y=y(s,t)和z=z(s,t)定义的参数表面网格图,自变量s和t的变化范围为[smin,smax,tmin,tmax];

*ezmesh(…,n)绘网格图时按n×n的网格密度绘图,n的缺省值为60;

*ezmesh(…,’circ’)以圆盘为自变量域绘制网格图

例1:

根据表达式f=

,绘制f的网格图.

symsxy

ezmesh(x*exp(-x^2-y^2),[-2.5,2.5],40)

colormap([001])

例2:

根据表达式

,以圆盘为自变量域绘制f的网格图.

symsxy

ezmesh(x*exp(-x^2-y^2),[-2.5,2.5],40,’circ’);

5.表面图绘图函数(surfaceplotplottingfunction)

*ezsurf(f)绘制由表达式f(x,y)定义的表面图,自变量x和y的变化范围为[-2π,2π];

*ezsurf(f,domain)绘制由表达式f(x,y)定义的表面图,自变量x和y的变化范围由domain确定,domain可以是4×1的矢量[xmin,xmax,ymin,ymax],也可以是2×1的矢量[min,max],当domain为的矢量时,min

*ezsurf(x,y,z)绘制由表达式x=x(s,t),y=y(s,t)和z=z(s,t)定义的参数表面图,自变量s和t的变化范围均为[-2π,2π];

ezsurf(x,y,z,[smin,smax,tmin,tmax])绘制由表达式x=x(s,t),y=y(s,t)和z=z(s,t)定义的参数表面图,自变量s和t的变化范围为[smin,smax,tmin,tmax];

*ezsurf(…,n)绘表面图时按n×n的网格密度绘图,n的缺省值为60

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1