资源描述
实验四 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) 常规方程求解函数的调用格式
g = solve(eq) %求方程(或表达式或字串)eq关于默认变量的解
g = solve(eq,var) %求方程(或表达式或字串)eq关于指定变量var的解
g = solve(eq1,eq2,...,eqn,var1,var2,...,varn) %求方程(或表达式或字串)组
eq1,eq2,...,eqn关于指定变量组var1,var2,...,varn的解
(2) 常微分方程求解
求解常微分方程的函数是 dsolve。应用此函数可以求得常微分方程(组)的通解,以及给定边界条件(或初始条件)后的特解。 常微分方程求解函数的调用格式:
r = dsolve('eq1,eq2,...','cond1,cond2,...', 'v')
r = dsolve('eq1','eq2',...,'cond1','cond2',...,'v')
说明:
① 以上两式均可给出方程 eq1、eq2 ...对应初始条件 cond1、cond2 ...之下的以 v作为
解变量的各微分方程的解。
② 常微分方程解的默认变量为 t。
③ 第二式中最多可接受的输入式是 12 个。
④ 微分方程的表达方法。
在用MATLAB求解常微分方程时, 用大写字母Dy表示微分符号,用D2y表示,依次类推。
边界条件以类似于 y(a) = b 或 Dy(a) = b 的等式给出。其中 y为因变量,a、b 为常数。如果初始条件给得不够,求出的解则为含有 C1、C2 等待定常数的通解。
例如:求微分方程为y’=2x 的通解。
四、实验要求(以下题目均用符号运算完成)
1. 已知x=6,y=5,利用符号表达式求
Z=9.1631
>> syms x y
x=6
y=5
z=(x+1)/(sqrt(3+x)-sqrt(y))
截图:
2. 分解因式。
(1);
syms x y
z=x^4-y^4
pretty(factor(z))
截图:
(2)
syms x
y=125*x^6+75*x^4+15*x^2+1
pretty(factor(y))
截图:
3. 化简表达式
(1);
syms beta1 beta2
f=sin(beta1)*cos(beta2)-cos(beta1)*sin(beta2)
r=simple(f)
截图:
(2)
syms x
y=(4*x^2+8*x+3)/(2*x+1)
r=simple(y)
截图:
4、求
syms x
f=(x^2-1)/(x^2-3*x+2)
w=limit(f,x,2)
截图:
5、求函数的积分。
syms x
f=cos(2*x)-sin(2*x)
int(f,x)
截图:
计算定积分。
syms x
f=sin(x)+2
int(f,x,0,pi/6)
截图:
6、求函数,求和。
syms x
y=(1-cos(2*x))/x
diff(y,1)
截图:
syms x
y=(1-cos(2*x))/x
diff(y,2)
截图:
7、求下列线性方程组的解
syms x y z
[x y z]=solve('x+y+z=10','3*x+2*y+z=14','2*x+3*y-z=1')
截图:
8、求解当y(0)=2,z(0)=7时,微分方程组的解
实验报告提交格式:
1、 实验题目
2、 实验目的
3、 实验内容(包括运行的结果或截图)
展开阅读全文