qinjiao符号变量.docx

上传人:b****6 文档编号:3035797 上传时间:2022-11-17 格式:DOCX 页数:20 大小:18.45KB
下载 相关 举报
qinjiao符号变量.docx_第1页
第1页 / 共20页
qinjiao符号变量.docx_第2页
第2页 / 共20页
qinjiao符号变量.docx_第3页
第3页 / 共20页
qinjiao符号变量.docx_第4页
第4页 / 共20页
qinjiao符号变量.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

qinjiao符号变量.docx

《qinjiao符号变量.docx》由会员分享,可在线阅读,更多相关《qinjiao符号变量.docx(20页珍藏版)》请在冰豆网上搜索。

qinjiao符号变量.docx

qinjiao符号变量

MATLAB符号运算

一、实验目的

掌握符号变量和符号表达式的创建,掌握MATLAB的symbol工具箱的一些基本应用。

二、实验内容

(1)符号变量、表达式、方程及函数的表示。

(2)符号表达式的操作和转换。

三、实验步骤

1.符号运算的引入

>>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+3y-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)%为什么会出错

?

?

?

Undefinedfunctionorvariable'x'.

>>x=1

x=

1

>>f4=sym(2*x+3)

f4=

5

>>

通过看MATLAB的帮助可知,sym()的参数可以是字符串或数值类型,无论是哪种类

型都会生成符号类型数据。

2)使用syms创建

>>clear

>>symsxyz%注意观察x,y,z都是什么类型的,它们的内容是什么

>>x,y,z

>>f1=x^2+2*x+1

>>f2=exp(y)+exp(z)^2

>>f3=f1+f2

>>clear

>>symsxyz

>>x,y,z

x=

x

y=

y

z=

z

>>f1=x^2+2*x+1

f1=

x^2+2*x+1

>>f2=exp(y)+exp(z)^2

f2=

exp(y)+exp(z)^2

>>f3=f1+f2

f3=

x^2+2*x+1+exp(y)+exp(z)^2

>>

通过以上实验,知道生成符号表达式的第二种方法:

由符号类型的变量经过运算(加减

乘除等)得到。

又如:

>>f1=sym('x^2+y+sin

(2)')

>>symsxy

>>f2=x^2+y+sin

(2)

>>x=sym('2'),y=sym('1')

>>f3=x^2+y+sin

(2)

>>y=sym('w')

>>f4=x^2+y+sin

(2)

>>f1=sym('x^2+y+sin

(2)')

f1=

x^2+y+sin

(2)

>>symsxy

>>f2=x^2+y+sin

(2)

f2=

x^2+y+4095111552621091/4503599627370496

>>x=sym('2'),y=sym('1')

x=

2

y=

1

>>f3=x^2+y+sin

(2)

f3=

26613109689473571/4503599627370496

>>y=sym('w')

y=

w

>>f4=x^2+y+sin

(2)

f4=

22109510062103075/4503599627370496+w

>>

思考题:

symsx是不是相当于x=sym('x')?

3.符号算术运算

1)符号量相乘、相除

符号量相乘运算和数值量相乘一样,分成矩阵乘和数组乘。

>>a=sym(5);b=sym(7);

>>c1=a*b

>>c2=a/b

>>a=sym(5);B=sym([345]);

>>C1=a*B,C2=a\B

>>symsab

>>A=[5a;b3];B=[2*ab;2*ba];

>>C1=A*B,C2=A.*B

>>C3=A\B,C4=A./B

>>a=sym(5);b=sym(7);

>>c1=a*b

c1=

35

>>c2=a/b

c2=

5/7

>>a=sym(5);B=sym([345]);

>>C1=a*B,C2=a\B

C1=

[15,20,25]

C2=

[3/5,4/5,1]

>>symsab

>>A=[5a;b3];B=[2*ab;2*ba];

>>C1=A*B,C2=A.*B

C1=

[10*a+2*a*b,5*b+a^2]

[2*a*b+6*b,b^2+3*a]

C2=

[10*a,a*b]

[2*b^2,3*a]

>>C3=A\B,C4=A/B

C3=

[2*a*(b-3)/(-15+a*b),(a^2-3*b)/(-15+a*b)]

[2*b*(a-5)/(-15+a*b),-(5*a-b^2)/(-15+a*b)]

C4=

[-1/2*a*(-5+2*b)/(-b^2+a^2),1/2*(2*a^2-5*b)/(-b^2+a^2)]

[1/2*b*(a-6)/(-b^2+a^2),1/2*(-b^2+6*a)/(-b^2+a^2)]

>>

2)符号数值任意精度控制和运算

任意精度的VPA运算可以使用命令digits(设定默认的精度)和vpa(对指定对象以新的

精度进行计算)来实现。

>>a=sym('2*sqrt(5)+pi')

>>b=sym(2*sqrt(5)+pi)

>>digits

>>vpa(a)

>>digits(15)

>>vpa(a)

>>c1=vpa(a,56)

>>c2=vpa(b,56)

>>a=sym('2*sqrt(5)+pi')

a=

2*sqrt(5)+pi

>>b=sym(2*sqrt(5)+pi)

b=

8572296331135796*2^(-50)

>>digits

Digits=32

>>vpa(a)

ans=

7.6137286085893726312809907207421

>>c1=vpa(a,56)

c1=

7.6137286085893726312809907207420553550784061185981572696

>>c2=vpa(b,56)

c2=

7.6137286085893727261009189533069729804992675781250000000

>>

注意观察c1和c2的数据类型,c1和c2是否相等。

3)符号类型与数值类型的转换

使用命令sym可以把数值型对象转换成有理数型符号对象,命令vpa可以将数值型对

象转换为任意精度的VPA型符号对象。

使用double,numeric函数可以将有理数型和VPA

型符号对象转换成数值对象。

>>clear

>>a1=sym('2*sqrt(5)+pi')

>>b1=double(a1)%符号转数值

>>b2=numeric(a1)%符号转数值

>>a2=vpa(a1,70)%数值转符号

clear

a1=sym('2*sqrt(5)+pi')

a1=

2*sqrt(5)+pi

>>b1=double(a1)%符号转数值、

b1=

7.6137

>>b2=numeric(a1)%符号转数值

?

?

?

Undefinedcommand/function'numeric'.

>>b2=num(a1)

?

?

?

Undefinedcommand/function'num'.

>>a2=vpa(a1,70)

a2=

7.613728608589372631280990720742055355078406118598157269516739083128858

>>

4.符号表达式的操作和转换

1)独立变量的确定原则

独立变量的确定原则:

在符号表达式中默认变量是唯一的。

MATLAB会对单个英文小

写字母(除i、j外)进行搜索,且以x为首选独立变量。

如果表达式中字母不唯一,且无x,

就选在字母表顺序中最接近x的字母。

如果有相连的字母,则选择在字母表中较后的那一

个。

例如:

'3*y+z'中,y是默认独立变量。

'sin(a*t+b)'中,t是默认独立变量。

输入以下命令,观察并分析结果。

>>clear

>>f=sym('a+b+i+j+x+y+xz')

>>findsym(f)

>>findsym(f,1),findsym(f,2),findsym(f,3)

>>findsym(f,4),findsym(f,5),findsym(f,6)

>>clear

>>f=sym('a+b+i+j+x+y+xz')

f=

a+b+i+j+x+y+xz

>>findsym(f)

ans=

a,b,j,x,xz,y

>>findsym(f,1),findsym(f,2),findsym(f,3)

ans=

x

ans=

x,xz

ans=

x,xz,y

>>findsym(f,4),findsym(f,5),findsym(f,6)

ans=

x,xz,y,j

ans=

x,xz,y,j,b

ans=

x,xz,y,j,b,a

>>

2)符号表达式的化简

符号表达式化简主要包括表达式美化(pretty)、合并同类项(collect)、多项式展开

(expand)、因式分解(factor)、化简(simple或

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

当前位置:首页 > 初中教育 > 数学

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

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