MATLAB第6章符号运算功能1jsp.docx

上传人:b****5 文档编号:7845492 上传时间:2023-01-26 格式:DOCX 页数:16 大小:32.45KB
下载 相关 举报
MATLAB第6章符号运算功能1jsp.docx_第1页
第1页 / 共16页
MATLAB第6章符号运算功能1jsp.docx_第2页
第2页 / 共16页
MATLAB第6章符号运算功能1jsp.docx_第3页
第3页 / 共16页
MATLAB第6章符号运算功能1jsp.docx_第4页
第4页 / 共16页
MATLAB第6章符号运算功能1jsp.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

MATLAB第6章符号运算功能1jsp.docx

《MATLAB第6章符号运算功能1jsp.docx》由会员分享,可在线阅读,更多相关《MATLAB第6章符号运算功能1jsp.docx(16页珍藏版)》请在冰豆网上搜索。

MATLAB第6章符号运算功能1jsp.docx

MATLAB第6章符号运算功能1jsp

第6章符号运算功能

6.1符号表达式的生成

符号表达式包括函数和符号方程,两者的区别前者不包括等号,后者必须带等号。

●创建符号函数

f='log(x)'

●创建符号方程

equation='a*x^2+b*x+c'

●创建符号微分方程

diffeq='Dy-y=x'

●sym命令创建

f=sym('sin(x)')

f=sym('sin(x)^2=0')

●syms命令

symsx%定义符号变量

f=sin(x)+cos(x)

6.2符号和数值之间的转换

●digits函数

digits(D)函数设置为有效数字个数为D的近似精度

●vpa函数

格式1:

r=vpa(S)符号表达式S在digits函数设置下的精度的数值解。

格式2:

r=vpa(S,D)符号表达式S在digits(D)函数设置下的精度的数值解。

S=solve('3*x^2-exp(x)')

解为:

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

[-2*lambertw(-1,-1/6*3^(1/2))]

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

执行:

vpa(S)

结果为:

(数值解)

[.91000767248870906066733829676944]

[3.7330790286328142006199640298434]

[-.46896226763694861469867243243408]

执行digits(4)

vpa(S)

结果为:

(数值解,精度为4位)

[.9100]

[3.734]

[-.4690]

●numeric

将不含自由变量的符号表达式转换为数值形式。

6.3符号函数的运算

一、复合函数

compose(f,g):

返回当f=f(x)和g=g(y)时的符合函数f(g(y)),其中x和y均为符号变量。

compose(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的独立变量。

举例:

symsxyztu%定义符号变量

f=1/(1+x^2)%定义符号函数

g=sin(y)%定义符号函数

h=x^t%定义符号函数

p=exp(-y/u)%定义符号函数

compose(f,g)%用sin(y)代替x,结果为1/(1+sin(y)^2)

compose(f,g,t)%用sin(y)代替x,t代替y,结果为1/(1+sin(t)^2)

compose(f,g,x,z)%返回复合函数f(g(z)),结果为sin(z)^t

compose(h,g,t,z)%结果为x^sin(z)

compose(h,p,x,y,z)%结果为exp(-z/u)^t

compose(h,p,t,u,z)%结果为x^exp(-y/z)

二、反函数

finverse(f)

finverse(f,v)

举例:

symsxy

f=x^2+y

finverse(f,y)结果为:

-x^2+y

6.4符号矩阵的创立

1.使用sym函数直接创建

2.用创建子阵的方法创建符号矩阵

3.将数值矩阵转化为符号矩阵

6.6符号矩阵的运算

一、基本运算

1.符号矩阵的四则运算(加、减、乘、除)

2.符号矩阵的行列式运算

3.符号矩阵的逆

4.符号矩阵的秩

5.符号矩阵的指数运算

二、矩阵分解

1.特征值函数

[x,y]=eig(b)

2.奇异值分解函数

svd(b)

3.约当标准型

符号矩阵的约当标准型由函数jordan计算得到。

4.三角抽取函数

diag:

对角线

tril:

上三角

triu:

下三角

5.符号矩阵的列空间

符号矩阵的列空间由函数colspace计算得到。

6.符号矩阵的零空间

符号矩阵的零空间由函数null计算得到。

三、符号矩阵的简化

1.因式分解

fact(S)

symsx

f=x^9-1

factor(f)%结果为:

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

2.符号矩阵的展开

expand(S)

举例:

expand((x+1)^3)得到:

x^3+3*x^2+3*x+1

3.同类式合并

collect(S,v)将符号矩阵S中的各元素的V的同幂项系数合并。

collect(S)将符号矩阵S中的各元素的默认变量进行同类项合并。

举例:

collect(x^2*y+y*x-x^2-2*x)%合并x的同类项,得到:

(y-1)*x^2+(y-2)*x

4.符号简化

simple(x)

simplify(x)

5.分式通分:

numden求解符号表达式的分子和分母,格式:

〔N,D〕=numden(A)把A的各元素转换为分子和分母都是整数的最佳多项式型

6.“秦九卲型”重写

horner(P)将多项式转换为嵌套形式的表达式

四、符号极限、微分、积分与差分

1.符号极限

limit(F,x,a):

计算符号表达式F在x→a条件下的极限值。

limit(F,a):

计算符号表达式中的独立变量趋向于a的极限值。

limit(F)计算在a=0时的极限。

limit(F,x,a,’right’):

计算符号表达式F在x→a+时的极限值。

limit(F,x,a,’left’):

计算符号表达式F在x→a-时的极限值。

举例:

symsxath

limit(sin(x)/x)

结果为:

ans=1

limit(sin(x)/x,a)

结果为:

ans=sin(a)/a

limit(cos(x)/x,a)

结果为:

ans=cos(a)/a

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

结果为:

ans=1

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

结果为:

ans=1

2.符号积分int(x)

(1)不定积分

在MATLAB中,求不定积分的函数是int,其调用格式为:

int(f,x)

int函数求函数f对变量x的不定积分。

参数x可以缺省,缺省原则与diff函数相同。

int(s):

int(s,v):

计算符号表达式S对符号自变量v的不定积分。

V是一数量符号量。

举例1:

求不定积分

int(sin(x)/x,a)

举例2求不定积分

int(cos(2*x)*cos(3*x))

ans=1/2*sin(x)+1/10*sin(5*x)

(2)符号函数的定积分

定积分在实际工作中有广泛的应用。

在MATLAB中,定积分的计算使用函数:

int(f,x,a,b)

int(s,a,b):

计算符号表达式S对默认符号变量从a到b的定积分。

A和b为双精度或符号数量。

int(s,v,a,b):

计算符号表达式对变量v从a到b的定积分。

举例1:

命令如下:

x=sym('x');t=sym('t');

int(abs(1-x),1,2)%求定积分

(1)

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

int(f,-inf,inf)%求定积分

(2)

int(4*t*x,x,2,sin(t))%求定积分(3)

f=x^3/(x-1)^100;

I=int(f,2,3)%用符号积分的方法求定积分(4)

double(I)%将上述符号结果转换为数值

例2求定积分

 

eval(int(x^2*log(x),1,exp

(1)))

使用函数trapz

x=1:

0.01:

exp

(1);

y=x.^2.*log(x);

trapz(x,y)

ans=4.5137

例3求二重积分

使用符号积分

symsxy;

f=y^2/x^2;

int(int(f,x,1/2,2),y,1,2)

结果:

ans=7/2

使用数值计算

f='(y.^2)./(x.^2)';

dblquad(f,1/2,2,1,2)

结果:

ans=3.5000

3.符号微分和差分diff

微分和差分函数

◆diff(s)对符号表达式S求自变量的微分

◆diff(s,’v’)或diff(s,sym(’v’))对以V为自变量的符号S求微分

◆diff(s,n)n为正整数,对函数表达式求n阶微分

◆diff(s,’v’,n)或diff(s,sym(’v’),n)对以V为自变量的符号S求n阶微分

举例1

symsabtxyz;

f=sqrt(1+exp(x));

diff(f)%求

(1)。

未指定求导变量和阶数,按缺省规则处理

f=x*cos(x);

diff(f,x,2)%求

(2)。

求f对x的二阶导数

diff(f,x,3)%求

(2)。

求f对x的三阶导数

f1=a*cos(t);f2=b*sin(t);

diff(f2)/diff(f1)%求(3)。

按参数方程求导公式求y对x的导数

(diff(f1)*diff(f2,2)-diff(f1,2)*diff(f2))/(diff(f1))^3%求(3)。

求y对x的二阶导数

f=x*exp(y)/y^2;

diff(f,x)%求(4)。

z对x的偏导数

diff(f,y)%求(4)。

z对y的偏导数

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

zx=-diff(f,x)/diff(f,z)%求(5)。

按隐函数求导公式求z对x的偏导数

zy=-diff(f,y)/diff(f,z)%求(5)。

按隐函数求导公式求z对y的偏导数

举例2:

在曲线y=x3+3x-2上哪一点的切线与直线y=4x-1平行。

命令如下:

x=sym('x');

y=x^3+3*x-2;%定义曲线函数

f=diff(y);%对曲线求导数

g=f-4;

solve(g)%求方程f-4=0的根,即求曲线何处的导数为4

6.7符号代数方程求解

1、线性代数方程式的符号解法

linsolve可得到方程组的精确解,得到的解析解可由函数vpa转换成浮点近似数值。

x=linsolve(a,b)只给出特解

例1:

对数值方程组用符号函数求解

a=sym([10-10;-110-2;0-210])

b=sym([9;7;6])

linsolve(a,b)

[473/476]

[91/96]

[376/476]

vpa(ans)

例2:

求给定线性方程组的解

a=sym('[1,1/2,1/3;311;121]')

b=sym('[1,2;1/3,1;1,1/7]')

linsolve(a,b)

例3:

求欠定方程组的解

a=sym('[11/21/3;311]')

b=sym('[1;1]')

x=linsolve(a,b)

例4:

求符号特征多项式的根

a=sym('[1,2,1/3;060;70a]')

ca=poly(a)

x^3-x^2*a-6*x^2+6*x*a+8/3*x-6*a+36/3

ra=solve(ca)

ra=

[6]

[1/2*a+1/2+1/6*(9*a^2-18*a+93)^(1/2)]

[1/2*a+1/2-1/6*(9*a^2-18*a+93)^(1/2)]

例6:

求三元非线性方程组的解

s1='x^2+sqrt

(2)*x+1=0'

s2='x+3*z=4'

s3='y*z=-1'

[x,y,z]=solve(s1,s2,s3)

例6:

求解超越方程组

[x,y]=solve('x^x=1/7','x/y=3')

得到:

x=-log(7)/lambertw(-log(7))

y=-1/3*log(7)/lambertw(-log(7))

例7:

求线性方程组AX=b的解。

解方程组

(1)的命令如下:

A=[34,8,4;3,34,3;3,6,8];

b=[4;6;2];

X=linsolve(A,b)%调用linsolve函数求

(1)的解

A\b%用另一种方法求

(1)的解

解方程组

(2)的命令如下:

symsa11a12a13a21a22a23a31a32a33b1b2b3;

A=[a11,a12,a13;a21,a22,a23;a31,a32,a33];

b=[b1;b2;b3];

X=linsolve(A,b)%调用linsolve函数求

(2)的解

XX=A\b%用左除运算求

(2)的解

2、非线性代数方程式的符号解法

(1)求解非线性方程(组)的函数是solve,调用格式为:

solve('eqn1','eqn2',…,'eqnN','var1,var2,…,varN')

举例1:

解方程。

命令如下:

x=solve('1/(x+2)+4*x/(x^2-4)=1+2/(x-2)','x')%解方程

(1)

f=sym('x-(x^3-4*x-7)^(1/3)=1');

x=solve(f)%解方程

(2)

x=solve('2*sin(3*x-pi/4)=1')%解方程(3)

x=solve('x+x*exp(x)-10','x')%解方程(4)。

仅标出方程的左端

格式2x=fsolve(‘fun’,x0)

例2:

x1-0.7sinx1-0.2cosx2=0

x2-0.7cosx1+0.2cosx2=0

functiony=fc(x)

y

(1)=x

(1)-0.7*Sin(x

(1))-0.2*Cos(x

(2));

y

(2)=x

(2)-0.7*Sin(x

(2))-0.2*Cos(x

(2));

y=[y

(1)y

(2)];

在命令窗口中输入:

x0=[0.50.5]

fsolve(‘fun’,x0)

6.8符号微分方程求解

MATLAB的符号运算工具箱中提供了功能强大的求解常微分方程的函数dsolve。

该函数的调用格式为:

dsolve('eqn1','condition','var')

该函数求解微分方程eqn1在初值条件condition下的特解。

参数var描述方程中的自变量符号,省略时按缺省原则处理,若没有给出初值条件condition,则求方程的通解。

dsolve在求微分方程组时的调用格式为:

dsolve('eqn1','eqn2',…,'eqnN','condition1',…,'conditionN','var1',…,'varN')

函数求解微分方程组eqn1、…、eqnN在初值条件conditoion1、…、conditionN下的解,若不给出初值条件,则求方程组的通解,var1、…、varN给出求解变量。

或者可以表达为:

[y1,y2,….]=dsolve(a1,a2,…,a12)

说明:

(1)a1,a2,…,a12为输入变量,输入变量包括三部分内容:

微分方程、初始条件和指定独立变量,其中微分方程是必不可少的输入内容,后两个内容视具体需要而定。

(2)关于指定独立变量的规定:

若指定独立变量,则总是由全部输入变量a1,a2,…,a12中的最后一个变量定义。

若不对独立变量加以专门的定义,则默认为小写的英文字母x或t为独立变量名。

(3)微分方程的记述规定:

当y是因变量,用Dny表示“y的n阶导数”,如Dy表示“y的1阶导数”,D2表示“y的2导数”,默认的变量为x或t。

(4)关于初始条件的规定:

初始条件要写成y(a)=b,Dy(c)=d等。

(6)输出变量可有可无

(7)输入变量个数不超过12个。

3.常微分方程求解

举例1:

求通解

[x,y]=dsolve('Dx=y,Dy=-x')

x=cos(t)*C1+sin(t)*C2

y=-sin(t)*C1+cos(t)*C2

其中:

t是默认的独立变量;C1和C2为任意常数

y=dsolve('Dy-(x^2+y^2)/x^2/2','x')%解

(1)。

方程的右端为0时可以不写

y=dsolve('Dy*x^2+2*x*y-exp(x)','x')%解

(2)

y=dsolve('Dy-x/y/sqrt(1-x^2)','x')%解(3)

举例2:

求特解

[f,g]=dsolve('Df=3*f+4*g,Dg=-4*f+3*g','f(0)=0,g(0)=1')

得到:

f=exp(3*t)*sin(4*t)

g=exp(3*t)*cos(4*t)

y=dsolve('Dy=2*x*y^2','y(0)=1','x')

y=dsolve('Dy-x^2/(1+y^2)','y

(2)=1','x')

举例3:

指定变量

y=dsolve('D3y=-y','y(0)=1,Dy(0)=0,D2y(0)=0','t')

得到:

y=1/3*exp(-t)+2/3*exp(1/2*t)*cos(1/2*3^(1/2)*t)

举例4:

计算初值问题:

dsolve('Dy=x+y','y(0)=1','x')

结果:

ans=-x-1+2*exp(x)

举例5:

常微分方程组求解

命令如下:

[x,y]=dsolve('Dx=4*x-2*y','Dy=2*x-y','t')%解方程组

(1)

[x,y]=dsolve('D2x-y','D2y+x','t')%解方程组

(2)

6.9级数展开

1、泰勒级数

MATLAB中提供了将函数展开为幂级数的函数taylor

格式1:

taylor(f),

taylor(f,n)返回n-1次幂多项式

taylor(f,a)返回a点附近的幂多项式近似值

taylor(f,x)使用独立变量代替函数findsym(f)

例1:

求函数的泰勒展开式,并计算该函数在x=3.42时的近似值。

symsx;

taylor(sin(x)/x,x,10)

ans=

1-1/6*x^2+1/120*x^4-1/5040*x^6+1/362880*x^8

x=3.42;

eval(ans)

ans=

-0.0753

调用格式2:

taylor(f,v,n,a)

举例2:

求函数在指定点的泰勒展开式。

命令如下:

x=sym('x');

f1=(1+x+x^2)/(1-x+x^2);

f2=sqrt(1-2*x+x^3)-(1-3*x+x^2)^(1/3);

taylor(f1,x,5)%求

(1)。

展开到x的4次幂时,应选择n=5

taylor(f2,6)%求

(2)。

举例3:

将多项式表示成x+1的幂的多项式。

命令如下:

x=sym('x');

p=1+3*x+5*x^2-2*x^3;

f=taylor(p,x,-1,4)

举例4:

应用泰勒公式近似计算。

命令如下:

x=sym('x');

f=(1-x)^(1/12);%定义函数,4000^(1/12)=2f(96/2^12)

g=taylor(f,4)%求f的泰勒展开式g,有4000^(1/12)≈2g(96/2^12)

b=96/2^12;

a=1-b/12-11/288*b^2-253/10368*b^3%计算g(b)

2*a%求4000^(1/12)的结果

4000^(1/12)%用MATLAB的乘方运算直接计算

2、傅立叶级数

MATLAB5.x版中,尚未提供求函数傅立叶级数的内部函数。

下面提供一个简化的求任意函数的傅立叶级数的函数文件。

functionmfourier=mfourier(f,n)

symsxabc;

mfourier=int(f,-pi,pi)/2;%计算a0

fori=1:

n

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)*sin(i*x);

end

return

调用该函数时,需给出被展开的符号函数f和展开项数n,不可缺省。

应用举例:

在[-π,π]区间展开函数为傅立叶级数。

命令如下:

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项

symsa;

f=cos(a*x);

mfourier(f,6)%求f(x)=cos(ax)的傅立叶级数的前6项

f=sin(a*x);

mfourier(f,4)%求f(x)=sin(ax)的傅立叶级数的前4项

3、级数的符号求和函数symsum,调用格式为:

symsum(a,n,n0,nn)

举例:

求级数之和。

命令如下:

n=sym('n');

s1=symsum(1/n^2,n,1,inf)%求s1

s2=symsum((-1)^(n+1)/n,1,inf)%求s2。

未指定求和变量,缺省为n

s3=symsum(n*x^n,n,1,inf)%求s3。

此处的求和变量n不能省略。

s4=symsum(n^2,1,100)%求s4。

计算有限级数的和

2、

6.10傅立叶(Fourier)变换

在MATLAB中,进行傅立叶变换的函数是:

fourier(fx,x,t)求函数f(x)的傅立叶像函数F(t)。

ifourier(Fw,t,x)求傅立叶像函数F(t)的原函数f(x)。

举例:

求函数的傅立叶变换及其逆变换。

命令如下:

symsxt;

y=abs(x);

Ft=fourier(y,x,t)%求y的傅立叶变换

fx=ifourier(Ft,t,x)%求Ft的傅立叶逆变换

6.11拉普拉斯(Laplace)变换

在MATLAB中,进行拉普拉斯变换的函数是:

(1)laplace(fx,x,t)求函数f(x)的拉普拉斯像函数F(t)。

(2)ilaplace(Fw,t,x)求拉普拉斯像函数F(t)的原函数f(x)。

举例:

计算y=x2的拉普拉斯变换及其逆变换.

命令如下:

x=sym('x');y=x^2;

Ft=laplace(y,x,t)%对函数y进行拉普拉斯变换

fx=ilaplace(Ft,t,x)%对函数Ft进行拉普拉斯逆变换

6.12Z变换

对数列f(n)进行z变换的MATLAB函数是:

ztrans(fn,n,z)求fn的Z变换像函数F(z)

iztrans(Fz,z,n)求Fz的z变换原函数f(n)

举例:

求数列fn=e-n的Z变换及其逆变换。

命令如下:

symsnz

fn=exp(-n);

Fz=ztrans(fn,n,z)%求fn的Z变换

f=iztrans(Fz,z,n)%求Fz的逆Z变换

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

当前位置:首页 > 农林牧渔 > 林学

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

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