matlab实验五.docx

上传人:b****5 文档编号:5609045 上传时间:2022-12-29 格式:DOCX 页数:9 大小:60.23KB
下载 相关 举报
matlab实验五.docx_第1页
第1页 / 共9页
matlab实验五.docx_第2页
第2页 / 共9页
matlab实验五.docx_第3页
第3页 / 共9页
matlab实验五.docx_第4页
第4页 / 共9页
matlab实验五.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

matlab实验五.docx

《matlab实验五.docx》由会员分享,可在线阅读,更多相关《matlab实验五.docx(9页珍藏版)》请在冰豆网上搜索。

matlab实验五.docx

matlab实验五

实验五Matlab符号运算

一、实验目的:

1、熟练掌握MATLAB符号表达式的创建。

2、掌握符号和数值的替换。

3、熟练掌握符号矩阵的创立及运算。

4、熟练掌握符号微积分。

5、掌握符号积分变换。

6、熟悉符号方程的求解。

 

二、实验内容与步骤:

符号运算允许在运算对象和运算过程中出现非数值的符号对象,利用符号对象进行运算。

在工程时间和科学研究等各个方面,经常会遇到数值运算无法进行描述的问题,存在非数值问题,引入符号运算就可以解决这方面的问题。

1.创建符号对象

MATLAB提供了两个建立符号对象的函数:

sym和syms,两个函数的用法不同。

sym函数用来建立单个符号量,一般调用格式为:

符号量名=sym('符号字符串')

该函数可以建立一个符号量,符号字符串可以是常量、变量、函数或表达式。

应用sym函数还可以定义符号常量,使用符号常量进行代数运算时和数值常量进行的运算不同。

函数sym一次只能定义一个符号变量,使用不方便。

MATLAB提供了另一个函数syms,一次可以定义多个符号变量。

syms函数的一般调用格式为:

syms符号变量名1符号变量名2…符号变量名n

用这种格式定义符号变量时不要在变量名上加字符串分界符(‘),变量间用空格而不要用逗号分隔。

2.创建符号表达式和符号表达式的操作

含有符号对象的表达式称为符号表达式。

建立符号表达式有以下3种方法:

(1)利用单引号来生成符号表达式。

(2)用sym函数建立符号表达式。

(3)使用已经定义的符号变量组成符号表达式。

对符号表达式f=sinx,g=

进行操作。

(1).创建符号变量。

使用sym命令创建符号表达式:

>>f=sym('sin(x)')

f=

sin(x)

>>g=sym('y/exp(-2*t)')

g=

y/exp(-2*t)

syms命令创建符号表达式f,g:

>>symsxyt

>>f=sin(x)

f=

sin(x)

>>g=y/exp(-2*t)

g=

y/exp(-2*t)

自由变量的确定。

使用findsym确定符号表达式g的自由变量:

>>findsym(g)%得出所有符号变量

Ans=

t,y

>>findsym(g,1)%得出第1个符号变量

ans=

y

>>findsym(g,2)%按顺序得出两个符号变量

Ans=

y,t

用常数替换符号变量。

用行向量替换x,使符号对象f转变为行向量:

>>x=0:

10;

>>f=sin(x);

>>y=subs(f,x)

⑷符号对象与数值的转换.采用double,numeric和eval将符号对象转换为数值:

>>f=sin(x);

>>f1=subs(f,'5')

f1=

sin((5))

>>y1=double(f1)

y1=

-0.9589

>>y2=eval(f1)

y2=

-0.9589

⑸求反函数和复合函数。

①用finverse函数求f,g的反函数:

>>finverse(f)

ans=

asin(x)

>>finverse(g)%对默认独立变量y求反函数

ans=

y*exp(-2*t)

>>finverse(g,'t')%对符号变量t求反函数

ans=

-1/2*log(y/t)

②用compose函数求f,g的复合函数:

>>compose(f,g)%计算f(g(x))

ans=

sin(y/exp(-2*t))

>>compose(f,g,'z')%计算f(g(z))

ans=

sin(z/exp(-2*t))

⑹符号微积分和极限。

①对f和g用diff求微分:

>>diff(f)

ans=

cos(x)

>>diff(g)%对默认自由变量y求微分

ans=

1/exp(t^2)

>>diff(g,'t')%对符号变量t求微分

Ans=

-2*y/exp(t^2)*t

②对f和g用int求积分:

>>int(f)%求不定积分

Ans=

-cos(x)

>>int(g)

Ans=

1/2*y^2/exp(-2*t)

>>int(g,'t')%对t求不定积分

Ans=

1/2*y/exp(-2*t)

>>int(g,'t',0,10)%对t求定积分

Ans=

1/2*y*exp(20)-1/2*y

③符号表达式的极限limit

>>symsxat;

>>limit(sin(x)/x)

ans=

1

>>limit((1+a/x)^x,x,inf)%x→inf条件下的极限

ans=

exp(a)

>>limit(1/x,x,0,'left')%left极限的方向

ans=

-Inf

④Taylor级数展开

>>clearall

>>symsx

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

>>r=taylor(f,'Order',12)

r=

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

3.符号矩阵的操作

(1)创建符号矩阵。

①使用sym函数直接创建符号矩阵

>>a=sym('[xx^2;2*xcos(2*t)]')

a=

[x,x^2]

[2*x,cos(2*t)]

②将数值矩阵转化为符号矩阵

在MATLAB中,数值矩阵不能直接参与符号运算,必需转化为符号符号矩阵。

>>a=[2/3,sqrt

(2),0.222;1.4,1/0.23,log(3)]

a=

0.6671,41420.2220

1.4004.34781.0986

>>b=sym(a)

b=

[2/3,sqrt

(2),111/500]

[7/5,100/23,4947709893870346*2^(-52)]

(2)符号矩阵的代数运算。

符号矩阵大多数运算与矩阵相同,包括加法、减法,乘法*,除法(/、\);矩阵的转置(’);矩阵的逆inv;幕运算(^);指数运算exp等。

(3)对符号矩阵的微积分运算就是对符号矩阵的每一个元素进行微积分:

a=[2*xt^2;t*sin(x)exp(x)]

b=[cos(x)1/t;x^2sin(x)]

创建符号矩阵a,b,进行符号矩阵的相关运算,查看输出结果。

对符号矩阵a求积分和微分,查看输出结果。

4.符号方程的求解

1)代数方程求解。

3x1-2x2+x3=8

对方程组:

x1+3x2+4x3=2进行求解。

2x1-x2+3x3=7

>>eq1=sym('3*x1-2*x2+x3=8');

>>eq2=sym('x1+3*x2+4*x3=2');

>>eq3=sym('2*x1-x2+3*x3=7');

>>[x1,x2,x3]=solve(eq1,eq2,eq3)

执行后查看输出结果。

[37/22,-23/22,19/22]

(2)符号微分方程求解。

MATLAB提供了dsolve命令,用于对符号常微分方程进行求解。

同学们可通过help帮助来查看函数使用。

解方程组:

dy/dx–z=cos(x)

dz/dx+y=1

>>[y,z]=dsolve('Dy-z=cos(x),Dz+y=1','x')

>>simplify(z)

y=

cos(x)*c1+sin(x)*c2+1/2*cos(x)*x+1/2*sin(x)+1

z=

-sin(x)*c1+cos(x)*c2-1/2*sin(x)*x

5.符号函数的可视化

为了将符号函数的数值计算结果可视化,MATLAB提供了十来个绘图命令,可以很容易的将符号表达式图形化,这些命令的开头都是“ez”。

同样,这些命令也可以用于字符串函数的绘图。

(1)ezplot和ezplot3命令

ezplot(f)绘制f(x)的函数图,这里f为代表数学表达式的包含单个符号变量x的字符串或符号表达式。

X轴的近似范围为[-2*pi,2*pi]。

>>y=sym('-1/3*x^3+1/3*x^4');

>>ezplot(y)%绘制函数y在[-2*pi,2*pi]中的图形,图1.1

图1.1

极坐标下绘制二维曲线

>>closeall

>>symst

>>ezpolar(1+cos(t))

ezplot3(x,y,z,[tmin,tmax],’animate’)%绘制三维曲线

说明:

x,y,z分别为符号表达式x(t),y(t),z(t);[tmin,tmax]为t的范围,可省略;’animate’用来设置动画的的绘制曲线的过程,可省略。

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

>>z=sym('t');

>>y=sym('cos(t)');

>>ezplot3(x,y,z,[0,10*pi],'animate')

(2)ezmesh命令

>>symsxy

>>ezmesh(x*exp(-x^2+-y^2),[-2.5,2.5],40,'circ')

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

当前位置:首页 > 解决方案 > 解决方案

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

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