第三章 MATLAB符号运算Word文档格式.docx
《第三章 MATLAB符号运算Word文档格式.docx》由会员分享,可在线阅读,更多相关《第三章 MATLAB符号运算Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
sym函数用来建立单个符号量,一般调用格式为:
符号量名=sym('
符号字符串'
)
该函数可以建立一个符号量,符号字符串可以是常量、变量、函数或表达式。
应用sym函数还可以定义符号常量,使用符号常量进行代数运算时和数值常量进行的运算不同。
例:
>
A=sym('
[a,2*b;
3*a,0]'
A=
[
a,2*b]
[3*a,
0]
这就完成了一个符号矩阵的创建。
注意:
符号矩阵的每一行的两端都有方括号,这是与MATLAB数值矩阵的一个重要区别。
把字符表达式转换为符号变量。
y=sym('
2*sin(x)*cos(x)'
y=
2*sin(x)*cos(x)
y=simple(y)
sin(2*x)
2、syms函数
函数sym一次只能定义一个符号变量,使用不方便。
MATLAB提供了另一个函数syms,一次可以定义多个符号变量。
syms函数的一般调用格式为:
syms符号变量名1符号变量名2…符号变量名n
用这种格式定义符号变量时不要在变量名上加字符串分界符(‘),变量间用空格而不要用逗号分隔。
①用符号计算验证三角等式
。
symsfai1fai2;
y=simple(sin(fai1)*cos(fai2)-cos(fai1)*sin(fai2))
sin(fai1-fai2)
②求矩阵
的行列式值、逆和特征根。
symsa11a12a21a22;
A=[a11,a12;
a21,a22]
[a11,a12]
[a21,a22]
DA=det(A),IA=inv(A),EA=eig(A)
DA=
a11*a22-a12*a21
IA=
[a22/(a11*a22-a12*a21),-a12/(a11*a22-a12*a21)]
[-a21/(a11*a22-a12*a21),a11/(a11*a22-a12*a21)]
EA=
[1/2*a11+1/2*a22+1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)]
[1/2*a11+1/2*a22-1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)]
第二节因式分解、展开和简化
一、因式分解
1、factor指令的使用
symsax;
f1=x^4-5*x^3+5*x^2+5*x-6;
factor(f1)
ans=
(x-1)*(x-2)*(x-3)*(x+1)
f2=x^2-a^2;
factor(f2)
-(a-x)*(a+x)
2、对多项式进行嵌套型分解
clear;
symsax;
horner(f1)
-6+(5+(5+(-5+x)*x)*x)*x
二、多项式展开
clear;
expand(ans)
x^4-5*x^3+5*x^2+5*x-6
三、多项式简化
①简化
symsx;
f=(1/x^3+6/x^2+12/x+8)^(1/3);
sfy1=simplify(f),sfy2=simplify(sfy1)
sfy1=
((2*x+1)^3/x^3)^(1/3)
sfy2=
g1=simple(f),g2=simple(g1)
g1=
(2*x+1)/x
g2=
2+1/x
②简化
symsx;
ff=cos(x)+sqrt(-sin(x)^2);
ssfy1=simplify(ff),ssfy2=simplify(ssfy1)
ssfy1=
cos(x)+(-1+cos(x)^2)^(1/2)
ssfy2=
gg1=simple(ff),gg2=simple(gg1)
gg1=
cos(x)+i*sin(x)
gg2=
exp(i*x)
第三节符号微积分
一、极限
limit函数的调用格式为:
limit(f,x,a):
求符号函数f(x)的极限值。
即计算当变量x趋近于常数a时,f(x)函数的极限值;
limit(f,a):
由于没有指定符号函数f(x)的自变量,则使用该格式时,符号函数f(x)的变量为函数findsym(f)确定的默认自变量,即变量x趋近于a;
limit(f):
符号函数f(x)的变量为函数findsym(f)确定的默认变量;
没有指定变量的目标值时,系统默认变量趋近于0,即a=0的情况;
limit(f,x,a,'
right'
):
求符号函数f的极限值。
'
表示变量x从右边趋近于a;
limit(f,x,a,‘left’):
‘left’表示变量x从左边趋近于a。
symsamx;
f=(x*(exp(sin(x))+1)-2*(exp(tan(x))-1))/(x+a);
limit(f,x,a)
1/2*(a-2*exp(tan(a))+a*exp(sin(a))+2)/a
symsxt;
limit((1+2*t/x)^(3*x),x,inf)
exp(6*t)
f=x*(sqrt(x^2+1)-x);
limit(f,x,inf,'
left'
1/2
f=(sqrt(x)-sqrt
(2)-sqrt(x-2))/sqrt(x*x-4);
limit(f,x,2,'
-1/2
二、符号导数
diff函数用于对符号表达式求导数。
该函数的一般调用格式为:
diff(s):
没有指定变量和导数阶数,则系统按findsym函数指示的默认变量对符号表达式s求一阶导数;
diff(s,'
v'
以v为自变量,对符号表达式s求一阶导数;
diff(s,n):
按findsym函数指示的默认变量对符号表达式s求n阶导数,n为正整数;
n):
以v为自变量,对符号表达式s求n阶导数。
求
、
和
symsatx;
f=[a,t^3;
t*cos(x),log(x)];
df=diff(f)
dfdt2=diff(f,t,2)
dfdxdt=diff(diff(f,x),t)
df=
[
0,
[-t*sin(x),1/x]
dfdt2=
0,6*t]
dfdxdt=
[0,0]
[-sin(x),0]
三、符号积分
符号积分由函数int来实现。
int(s):
没有指定积分变量和积分阶数时,系统按findsym函数指示的默认变量对被积函数或符号表达式s求不定积分;
int(s,v):
以v为自变量,对被积函数或符号表达式s求不定积分;
int(s,v,a,b):
求定积分运算。
a,b分别表示定积分的下限和上限。
该函数求被积函数在区间[a,b]上的定积分。
a和b可以是两个具体的数,也可以是一个符号表达式,还可以是无穷(inf)。
当函数f关于变量x在闭区间[a,b]上可积时,函数返回一个定积分结果。
当a,b中有一个是inf时,函数返回一个广义积分。
当a,b中有一个符号表达式时,函数返回一个符号函数。
①求
演示:
积分指令对符号函数矩阵的作用。
symsabx;
f=[a*x,b*x^2;
1/x,sin(x)];
int(f)
[1/2*a*x^2,1/3*b*x^3]
log(x),
-cos(x)]
②求积分
内积分上下限都是函数。
symsxyz
F2=int(int(int(x^2+y^2+z^2,z,sqrt(x*y),x^2*y),y,sqrt(x),x^2),x,1,2)
VF2=vpa(F2)
F2=
1610027357/6563700-6072064/348075*2^(1/2)+14912/4641*2^(1/4)+64/225*2^(3/4)
VF2=
224.92153573331143159790710032805
四、数值积分
1、数值积分基本原理
求解定积分的数值方法多种多样,如简单的梯形法、辛普生(Simpson)法、牛顿-柯特斯(Newton-Cotes)法等都是经常采用的方法。
它们的基本思想都是将整个积分区间[a,b]分成n个子区间[xi,xi+1],i=1,2,…,n,其中x1=a,xn+1=b。
这样求定积分问题就分解为求和问题。
2、数值积分的实现方法
基于变步长辛普生法,MATLAB给出了quad函数来求定积分。
该函数的调用格式为:
[I,n]=quad('
fname'
a,b,tol,trace)
其中fname是被积函数名。
a和b分别是定积分的下限和上限。
tol用来控制积分精度,缺省时取tol=0.001。
trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,缺省时取trace=0。
返回参数I即定积分值,n为被积函数的调用次数。
,其精确值为
(1)符号解析法
IS=int('
exp(-x*x)'
'
x'
0,1)
vpa(IS)
IS=
1/2*erf
(1)*pi^(1/2)
.74682413281242702539946743613185
(2)数值法
fun=inline('
exp(-x.*x)'
);
Isim=quad(fun,0,1),IL=quadl(fun,0,1)
Isim=
0.746824180726425
IL=
0.746824133988447
第四节符号方程求解
一、符号代数方程求解
在MATLAB中,求解用符号表达式表示的代数方程可由函数solve实现,其调用格式为:
solve(s):
求解符号表达式s的代数方程,