实验四 MATLAB符号运算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四MATLAB符号运算
一、实验目的:
1、掌握定义符号对象的方法;
2、掌握符号表达式的运算法则以及符号矩阵运算。
3、掌握求符号函数极限及导数的方法。
4、掌握求符号函数定积分和不定积分的方法。
二、实验原理
1、符号常量、符号变量、符号表达式的创建
(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)
通过看MATLAB 的帮助可知,sym( )的参数可以是字符串或数值类型,无论是哪种类型都会生成符号类型数据。
(2) 使用syms 创建
>>clear
>>syms x y z %注意观察x,y,z都是什么类型的,它们的内容是什么
>>x,y,z
>>f1=x^2+2*x+1
>>f2=exp(y)+exp(z)^2
>>f3=f1+f2
通过以上实验,知道生成符号表达式的第二种方法:由符号类型的变量经过运算(加减乘除等)得到。又如:
>>f1=sym('x^2+y +sin(2)')
>>syms x y
>>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)
(3)符号矩阵创建
>>syms a1 a2 a3 a4
>>A=[a1 a2;a3 a4]
>>A(1),A(3)
或者
>>B=sym('[ b1 b2 ;b3 b4] ')
>>c1=sym('sin(x) ')
>>c2=sym('x^2')
>>c3=sym('3*y+z')
>>c4=sym('3 ')
>>C=[c1 c2; c3 c4]
2、符号算术运算
(1) 符号量相乘、相除
符号量相乘运算和数值量相乘一样,分成矩阵乘和数组乘。
>>a=sym(5);b=sym(7);
>>c1=a*b
>>c2=a/b
>>a=sym(5);B=sym([3 4 5]);
>>C1=a*B, C2=a\B
>>syms a b
>>A=[5 a;b 3]; B=[2*a b;2*b a];
>>C1=A*B, C2=A.*B
>>C3=A\B, C4=A./B
(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)
注意:观察c1 和c2 的数据类型,c1 和c2 是否相等。
3、符号表达式的操作和转换
符号表达式化简主要包括表达式美化(pretty)、合并同类项(collect)、多项式展开(expand)、因式分解(factor)、化简(simple 或simplify)等函数。
①合并同类项(collect)。分别按x的同幂项和e指数同幂项合并表达式:
>>syms x t; f=(x^2+x*exp(-t)+1)*(x+exp(-t));
>>f1=collect(f)
>>f2=collect(f,’exp(-t)’)
②对显示格式加以美化(pretty)。针对上例,用格式美化函数可以使显示出的格式更符合数学书写习惯。
>>pretty(f1)
>>pretty(f2)
注意:与直接输出的f1 和f2 对比。
③多项式展开(expand)。展开(x-1)12 成x 不同幂次的多项式。
>>clear all
>>syms x;
>>f=(x-1)^12;
>>pretty(expand(f))
④因式分解(factor)。将表达式x12–1作因式分解。
>>clear all
>> syms x; f=x^12-1;
>>pretty(factor(f))
⑤化简(simple 或simplify)。
将函数化简。
>>clear all, syms x; f=(1/x^3+6/x^2+12/x+8)^(1/3);
>>g1=simple(f)
>>g2=simplify(f)
4、符号极限、符号积分与微分
(1) 求极限函数的调用格式
limit(F,x,a) %返回符号对象F当x→a时的极限
limit(F,a) %返回符号对象F当独立变量*→a时的极限
limit(F) %返回符号对象F当独立变量→0(a=0)时的极限
limit(F,x,a,’right’) %返回符号对象F当x→a时的右极限
limit(F,x,a,’left’) %返回符号对象F当x→a时的左极限
(2) 求积分函数的调用格式
int(F) %求符号对象F关于默认变量的不定积分
int(F,v) %求符号对象F关于指定变量v的不定积分
int(F,a,b) %求符号对象F关于默认变量的从a到b的定积分
int(F,v,a,b) %求符号对象F关于指定变量v的从a到b的定积分
(3) 求微分函数的调用格式
diff(F) %求符号对象F关于默认变量的微分
diff(F,v) %求符号对象F关于指定变量v的微分
diff(F,n) %求符号对象F关于默认变量的n次微分,n为自然数1、2、3…
diff(F, v,n) %求符号对象F关于指定变量v的n次微分
5、符号方程的求解
(1) 常规方程求解函数的调用格式