当前位置:文档之家› MATLAB原理应用实验报告第三章(符号运算)

MATLAB原理应用实验报告第三章(符号运算)

《MATLAB原理及应用》实验报告第三章MATLAB的符号运算一.实验目的1、掌握符号对象的命名方法2、掌握符号表达式的基本运算3、掌握符号级数的求法二.实验设备计算机、MATLAB软件三.实验内容1.确定符号表达式的变量为了简化符号对象的操作和计算,MATLAB为用户提过了findsym命令。

r=findsym(S)确定符号表达式或者矩阵S中自由符号变量r=findsym(S,n)确定符号表达式或者矩阵S中靠近x最近的n个独立符号变量。

【实验3-1】使用MA TLAB的命令确定符号表达式的变量。

在MATLAB的命令窗口中输入下例内容:>> syms a x y z t确定下面简单符号表达式中的符号变量信息:>>findsym(sin(pi*t))ans =t确定下面简单符号表达式中的符号变量信息:>>findsym(x+i*y-j*z)ans =x, y, z确定下面简单符号表达式中的符号变量信息:>>findsym(a+y,1)ans =y2.符号表达式元算1.符号表达式的四则运算表达式的四则运算与数字运算一样,用+、-、/、运算符实现,其运算结果依然是一个符号表达式。

【实验3-2】在MATLAB的命令窗口中输入下例内容:>>f=sym('2*x^2+3*x-5');%定义符号表达式g=sym('x^2-x+7');f+gans =3*x^2+2*x+2ans =3*x^2+2*x+2>> f^gans =(2*x^2+3*x-5)^(x^2-x+7)3.符号表达式的提取分子和分母运算如果符号表达式是一个有理分式或可以展开为有理分式,可以可利用numden函数来提取符号表达式的分子或分母。

期一般调用格式为[n,d]=numden函数来提取符号表达式该函数提取的符号表达式s的分子和分母,分别将它们存放在n和d中。

【实验3-3】在MA TLAB的命令窗口中输入下例内容:>> f= sym('a*x/(b+x)');>> [n,d]=numden(f)n =a*xd =b+xnumden函数在提取各部分之前,将符号表达式有利化后返回所得分子和分母 >> g=sym('(x^2+3)/(2*x-1)+3*x/(x+1)');>> [n,d]=numden(g)n =x^3+7*x^2+3d =(2*x-1)*(x+1)如果符号表达式是一个符号矩阵,numden返回两个新矩阵n和d,其中n 是分子矩阵,d是分母矩阵。

>> h=sym('[3/2,(2*x+1)/3;a/x+a/y,x+4]')h =[ 3/2, (2*x+1)/3][ a/x+a/y, x+4]>> [n,d]=numden(h)n =[ 3, 2*x+1][ a*(y+x), x+4]d =[ 2, 3][ x*y, 1]4.符号表达式的因式分解与展开MATLAB提供了符号表达式分解与展开的函数,函数的调用格式为①factor(s) :对符号表达式s分解因式。

②expand(s):对符号表达式s进行展开。

③collect(s):对符号表达式s进行合并同类型。

④collect(S,v) 将表达式S中相同次幂的合并,v的默认值是x【实验3-4】>> syms x y下面简单符号表达式s1因式分解>> s1=x^3-y^3;>> factor(s1)ans =(x-y)*(x^2+x*y+y^2)下面简单符号表达式s2进行展开>> s2=(-7*x^2-8*y^2)*(-x^2+3*y^2);>> expand(s2)ans =7*x^4-13*x^2*y^2-24*y^4下面简单符号表达式s3按变量y合并同类型>> s3=(x+y)*(x^2+y^2+1);>> collect(s3,y)ans =y^3+x*y^2+(x^2+1)*y+x*(x^2+1)下面简单符号整数分解因式>> factor(sym(630))ans =(2)*(3)^2*(5)*(7)5.符号表达式的化简MATLAB提供的对符号表达式化简的函数如下Simplify(s) ;应用MuPAD简化规则对s进行化简。

Simple(s):调用MA TLAB的其他函数对表达式进行综合化简,并显示化简过程。

【实验3-5】在MATLAB的命令窗口中输入下例内容:>> s=sym('(x^2+5*x+6)/(x+2)');>> simplify(s)ans =x+3>> s=sym('[2*cos(x)^2-sin(x)^2,sqrt(16)]');>> simplify(s)ans =[ 3*cos(x)^2-1, 4]函数simple试用了几种不同的化简工具,然后选择在结果表达式中含有最少字符的那种形式。

下面是表达式cos(3arccos(x))的化简结果>> s=sym('cos(3*acos(x))');>> simple(s) %自动调用多种函数对s 化简,并显示每步结果显示一系列化简过程后,最后显示化简结果ans =4*x^3-3*x6.级数符号求和求无穷级数的和需要符号表达式求和函数symsum,其调用格式为Symsum(s,v,,n,m)其中s 表示一个级数的通项,是一个符号表达式。

v 是求和变量,v 省略时使用系统的默认变量。

n 和m 是求和的开始项和末项。

【实验3-6】求 +++++222131211k在MA TLAB 的命令窗口中输入下例内容:>> syms k>> symsum(1/k^2,k,1,inf)ans =1/6*pi^2>> eval(ans)ans =1.64497.符号微积分1.符号的积分符号积分由函数int 来实现,一般调用格式如下。

int(s):没有指定积分变量和积分阶数时,int(s,v): 义v 为自变量,对被积函数或符号表达式求不定积分。

int(s,v,a,b): 求定积分运算,a,b 分别表示定积分的上下限。

求函数的定积分【实验3-6】(1)dx x ⎰cos在MA TLAB 的命令窗口中输入下例内容:>> f=sym('cos(x)');>> int(f)ans =sin(x) 2.符号的微分diff 函数用于对符号表达式求导数,一般调用格式如下。

diff(s) :按findsym 函数指示的默认变量对符号表达式s 求一阶导数。

diff(s ,’v ’) :以v 为自变量,对符号表达式s 求一阶导数。

diff(s ,n) :按findsym 函数指示的默认变量对符号表达式s 求n 阶导数。

diff(s,’v’,n) ::以v为自变量,对符号表达式s求n阶导数。

【实验3-7】已知f(x)=ax2+bx+c,求f(x)的微分。

在MA TLAB的命令窗口中输入下例内容:>> f=sym('a*x^2+b*x+c');>> diff(f)ans =2*a*x+b8.符号方程的求解在MATLAB中,求解用符号表达式表示的代数方程可以用solve实现,其调用格式如下:solve(s):求解符号表达式s的代数方程,求解变量为默认变量。

solve(s,v):求解符号表达式s的代数方程,求解变量为vSolve (s1,s2…sn,v1,v2 …vn):求解符号表达式s1,s2…sn组成的代数方程,求解变量分别为v1,v2 …vn。

【实验3-8】求方程x2+2x+1=0的解在MATLAB的命令窗口中输入下例内容:>> f=sym('x^2+2*x+1=0');>> solve(f)ans =-1-19.课后练习题1.提取符号表达式222m z u ar +++的自由变量(当符号表达式中含有多余一个符号变量时,只有一个变量是独立变量,其余的符号当作常量。

如果不指定那一个变量当作是自由变量,matlab 将基于一定原则选择一个自由变量。

) 提示:findsym (s ,n )2.在MATLAB 中计算多项式2352212-+++-x x x x 的父母和分子 (提示:使用[n ,d]=numden (A ))2.1、建立符号函数5332232-+x x (1)提取该表达式的分子和分母,并分别付给两个变量(2)对这两个变量分别进行代数运算(加减乘除及乘方)3.在MA TLAB 中,按照不同的方式合并表达式)()(23x e y x y x ex y y --+*-+的参数类项。

3.1.按t e -来合并表达式))(1(2t t e x xe x --+++的同类项。

4、使用simple 和simplify 两个指令分别化简32381261+++=x x x f ,比较两个结果有什么不同 5.求级数1+x+x 2+…+x k+…和 +⋅⋅+⋅++321211132x x x 的和。

(使用symsum 函数) 6.分别求下例积分(1)dx x ⎰+211 (2)dx x b a ⎰+211 (3)dx x ⎰+212117. 2cos x y = 求'y 、''y 、'''y8. 求三元非线性方程组 ⎪⎩⎪⎨⎧-=⨯=+=++1430122z y zx x x 的解。

相关主题