第三章 MATLAB符号运算.docx

上传人:b****6 文档编号:2923270 上传时间:2022-11-16 格式:DOCX 页数:12 大小:70.34KB
下载 相关 举报
第三章 MATLAB符号运算.docx_第1页
第1页 / 共12页
第三章 MATLAB符号运算.docx_第2页
第2页 / 共12页
第三章 MATLAB符号运算.docx_第3页
第3页 / 共12页
第三章 MATLAB符号运算.docx_第4页
第4页 / 共12页
第三章 MATLAB符号运算.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

第三章 MATLAB符号运算.docx

《第三章 MATLAB符号运算.docx》由会员分享,可在线阅读,更多相关《第三章 MATLAB符号运算.docx(12页珍藏版)》请在冰豆网上搜索。

第三章 MATLAB符号运算.docx

第三章MATLAB符号运算

第三章MATLAB符号运算

MATLAB不仅具有数值运算功能,还开发了在MATLAB环境下实现符号计算的工具包SymbolicMathToolbox和大量的符号运算函数,符号运算的主要功能有

(1)符号表达式、符号矩阵的创建;

(2)符号线性代数;

(3)因式分解、展开和简化;

(4)符号代数方程求解;

(5)符号微积分;

(6)符号微分方程。

第一节符号运算的基本操作

一、概述

1、什么是符号运算

符号运算与数值运算的区别:

(1)数值运算中必须先对变量赋值,然后才能参与运算;

(2)符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。

  

2、特点

(1)运算对象可以是没赋值的符号变量;

(2)可以获得任意精度的解析解。

二、符号矩阵的创建

数值矩阵A=[1,2;3,4]可以,A=[a,b;c,d]不可以。

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

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

1、sym函数

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)

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))

y=

sin(fai1-fai2)

②求矩阵

的行列式值、逆和特征根。

>>symsa11a12a21a22;A=[a11,a12;a21,a22]

A=

[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)

 ans=

-(a-x)*(a+x)

2、对多项式进行嵌套型分解

>>clear;symsax;f1=x^4-5*x^3+5*x^2+5*x-6;horner(f1)

 ans=

 -6+(5+(5+(-5+x)*x)*x)*x

二、多项式展开

>>clear;symsax;f1=x^4-5*x^3+5*x^2+5*x-6;horner(f1)

ans=

 -6+(5+(5+(-5+x)*x)*x)*x

>>expand(ans)

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=

((2*x+1)^3/x^3)^(1/3)

>>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=

cos(x)+(-1+cos(x)^2)^(1/2)

>>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)的自变量,则使用该格式时,符号函数f(x)的变量为函数findsym(f)确定的默认自变量,即变量x趋近于a;

limit(f):

求符号函数f(x)的极限值。

符号函数f(x)的变量为函数findsym(f)确定的默认变量;没有指定变量的目标值时,系统默认变量趋近于0,即a=0的情况;

limit(f,x,a,'right'):

求符号函数f的极限值。

'right'表示变量x从右边趋近于a;

limit(f,x,a,‘left’):

求符号函数f的极限值。

‘left’表示变量x从左边趋近于a。

例:

>>symsamx;f=(x*(exp(sin(x))+1)-2*(exp(tan(x))-1))/(x+a);

>>limit(f,x,a)

ans=

1/2*(a-2*exp(tan(a))+a*exp(sin(a))+2)/a

>>symsxt;limit((1+2*t/x)^(3*x),x,inf)

ans=

exp(6*t)

>>symsx;f=x*(sqrt(x^2+1)-x);

>>limit(f,x,inf,'left')

ans=

1/2

>>symsx;

>>f=(sqrt(x)-sqrt

(2)-sqrt(x-2))/sqrt(x*x-4);

>>limit(f,x,2,'right')

ans=

-1/2

二、符号导数

diff函数用于对符号表达式求导数。

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

diff(s):

没有指定变量和导数阶数,则系统按findsym函数指示的默认变量对符号表达式s求一阶导数;

diff(s,'v'):

以v为自变量,对符号表达式s求一阶导数;

diff(s,n):

按findsym函数指示的默认变量对符号表达式s求n阶导数,n为正整数;

diff(s,'v',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, 0]

[-t*sin(x),1/x]

dfdt2=

[ 0,6*t]

[ 0, 0]

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)

 ans=

  [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)符号解析法

>>symsx;IS=int('exp(-x*x)','x',0,1)

>>vpa(IS)

IS=

1/2*erf

(1)*pi^(1/2)

ans=

.74682413281242702539946743613185

(2)数值法

>>fun=inline('exp(-x.*x)','x');

>>Isim=quad(fun,0,1),IL=quadl(fun,0,1)

Isim=

 0.746824180726425

IL=

0.746824133988447

第四节符号方程求解

一、符号代数方程求解

在MATLAB中,求解用符号表达式表示的代数方程可由函数solve实现,其调用格式为:

solve(s):

求解符号表达式s的代数方程,

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

当前位置:首页 > 表格模板 > 调查报告

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

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