MATLAB原理及应用实验报告第三章.docx

上传人:b****4 文档编号:5467080 上传时间:2022-12-16 格式:DOCX 页数:17 大小:47.75KB
下载 相关 举报
MATLAB原理及应用实验报告第三章.docx_第1页
第1页 / 共17页
MATLAB原理及应用实验报告第三章.docx_第2页
第2页 / 共17页
MATLAB原理及应用实验报告第三章.docx_第3页
第3页 / 共17页
MATLAB原理及应用实验报告第三章.docx_第4页
第4页 / 共17页
MATLAB原理及应用实验报告第三章.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

MATLAB原理及应用实验报告第三章.docx

《MATLAB原理及应用实验报告第三章.docx》由会员分享,可在线阅读,更多相关《MATLAB原理及应用实验报告第三章.docx(17页珍藏版)》请在冰豆网上搜索。

MATLAB原理及应用实验报告第三章.docx

MATLAB原理及应用实验报告第三章

《MATLAB原理及应用》实验报告

第三章MATLAB的符号运算

一.实验目的

1、掌握符号对象的命名方法

2、掌握符号表达式的基本运算

3、掌握符号级数的求法

二.实验设备

计算机、MATLAB软件

三.实验内容

1.确定符号表达式的变量

为了简化符号对象的操作和计算,MATLAB为用户提过了findsym命令。

r=findsym(S)确定符号表达式或者矩阵S中自由符号变量

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

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

在MATLAB的命令窗口中输入下例内容:

>>symsaxyzt

确定下面简单符号表达式中的符号变量信息:

>>findsym(sin(pi*t))

ans=

t

确定下面简单符号表达式中的符号变量信息:

>>findsym(x+i*y-j*z)

ans=

x,y,z

确定下面简单符号表达式中的符号变量信息:

>>findsym(a+y,1)

ans=

y

2.符号表达式元算

1.符号表达式的四则运算

表达式的四则运算与数字运算一样,用+、-、/、运算符实现,其运算结果依然是一个符号表达式。

【实验3-2】

在MATLAB的命令窗口中输入下例内容:

>>f=sym('2*x^2+3*x-5');%定义符号表达式

g=sym('x^2-x+7');

f+g

ans=

3*x^2+2*x+2

ans=

3*x^2+2*x+2

>>f^g

ans=

(2*x^2+3*x-5)^(x^2-x+7)

3.符号表达式的提取分子和分母运算

如果符号表达式是一个有理分式或可以展开为有理分式,可以可利用numden函数来提取符号表达式的分子或分母。

期一般调用格式为

[n,d]=numden函数来提取符号表达式

该函数提取的符号表达式s的分子和分母,分别将它们存放在n和d中。

【实验3-3】

在MATLAB的命令窗口中输入下例内容:

>>f=sym('a*x/(b+x)');

>>[n,d]=numden(f)

n=

a*x

d=

b+x

numden函数在提取各部分之前,将符号表达式有利化后返回所得分子和分母

>>g=sym('(x^2+3)/(2*x-1)+3*x/(x+1)');

>>[n,d]=numden(g)

n=

x^3+7*x^2+3

d=

(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】

>>symsxy

下面简单符号表达式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):

调用MATLAB的其他函数对表达式进行综合化简,并显示化简过程。

【实验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*x

6.级数符号求和

求无穷级数的和需要符号表达式求和函数symsum,其调用格式为

Symsum(s,v,,n,m)

其中s表示一个级数的通项,是一个符号表达式。

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

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

【实验3-6】求

在MATLAB的命令窗口中输入下例内容:

>>symsk

>>symsum(1/k^2,k,1,inf)

ans=

1/6*pi^2

>>eval(ans)

ans=

1.6449

7.符号微积分

1.符号的积分

符号积分由函数int来实现,一般调用格式如下。

int(s):

没有指定积分变量和积分阶数时,

int(s,v):

义v为自变量,对被积函数或符号表达式求不定积分。

int(s,v,a,b):

求定积分运算,a,b分别表示定积分的上下限。

求函数的定积分

【实验3-6】

(1)

在MATLAB的命令窗口中输入下例内容:

>>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)的微分。

在MATLAB的命令窗口中输入下例内容:

>>f=sym('a*x^2+b*x+c');

>>diff(f)

ans=

2*a*x+b

8.符号方程的求解

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

solve(s):

求解符号表达式s的代数方程,求解变量为默认变量。

solve(s,v):

求解符号表达式s的代数方程,求解变量为v

Solve(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

-1

9.课后练习题

1.提取符号表达式

的自由变量

(当符号表达式中含有多余一个符号变量时,只有一个变量是独立变量,其余的符号当作常量。

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

提示:

findsym(s,n)

>>symsaruzm

>>findsym(a*r^2+u^2+z+m^2,1)

ans=

z

2.在MATLAB中计算多项式

的父母和分子

(提示:

使用[n,d]=numden(A))

>>f=sym('(x^2-1)/(x+2)+(2*x+5)/(3*x-2)');

[n,d]=numden(f)

n=

3*x^3+6*x+12

d=

3*x^2+4*x-4

2.1、建立符号函数

(1)提取该表达式的分子和分母,并分别付给两个变量

>>s=sym('3/2*x^2+2/3*x-3/5');

[n,d]=numden(s)

n=

45*x^2+20*x-18

d=

30

(2)对这两个变量分别进行代数运算(加减乘除及乘方)

>>f=sym('45*x^2+20*x-18');

>>g=30;

>>f+g

ans=

45*x^2+20*x+12

>>f-g

ans=

45*x^2+20*x-48

>>f*g

ans=

1350*x^2+600*x-540

>>f/g

ans=

(3*x^2)/2+(2*x)/3-3/5

>>f^g

ans=

(45*x^2+20*x-18)^30

3.在MATLAB中,按照不同的方式合并表达式

的参数类项。

对参数x:

>>symsxy

>>s=(x+exp(-y)*x^3-y)*((x^(1/2))*y+exp(-2*y)*x);

>>collect(s,x)

ans=

x^4/exp(3*y)+((x^(1/2)*y)/exp(y))*x^3+x^2/exp(2*y)+(x^(1/2)*y-y/exp(2*y))*x-x^(1/2)*y^2

对参数y:

symsxy

s=(x+exp(-y)*x^3-y)*((x^(1/2))*y+exp(-2*y)*x);

collect(s,y)

ans=

(-x^(1/2))*y^2+(-x/exp(2*y)+x^(1/2)*(x^3/exp(y)+x))*y+(x*(x^3/exp(y)+x))/exp(2*y)

>>f=sym('(x+exp(-y)*x^3-y)*(aqrt(x)*y+exp(-2*y)*x)')

f=

(x+exp(-y)*x^3-y)*(aqrt(x)*y+exp(-2*y)*x)

>>collect(f)

ans=

exp(-y)*exp(-2*y)*x^4+exp(-y)*aqrt(x)*y*x^3+exp(-2*y)*x^2+(-y*exp(-2*y)+aqrt(x)*y)*x-y^2*aqrt(x)

3.1.按

来合并表达式

的同类项。

>>symst

>>s=(x^2+x*exp(-t)+1)*(x+exp(-t));

>>collect(s,exp(-t))

ans=

x/exp(2*t)+(2*x^2+1)/exp(t)+x*(x^2+1)

4、使用simple和simplify两个指令分别化简

,比较两个结果有什么不同

用simplify:

>>s=sym('(1/x^3+6/x^2+12/x+8)^(1/3)');

>>simplify(s)

结果为:

ans=

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

用simple:

>>s=sym('(1/x^3+6/x^2+12/x+8)^(1/3)');

>>simple(s)

simplify:

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

radsimp:

(12/x+6/x^2+1/x^3+8)^(1/3)

simplify(100):

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

combine(sincos):

(12/x+6/x^2+1/x^3+8)^(1/3)

combine(sinhcosh):

(12/x+6/x^2+1/x^3+8)^(1/3)

combine(ln):

(12/x+6/x^2+1/x^3+8)^(1/3)

factor:

(12/x+6/x^2+1/x^3+8)^(1/3)

expand:

(12/x+6/x^2+1/x^3+8)^(1/3)

combine:

(12/x+6/x^2+1/x^3+8)^(1/3)

rewrite(exp):

(12/x+6/x^2+1/x^3+8)^(1/3)

rewrite(sincos):

(12/x+6/x^2+1/x^3+8)^(1/3)

rewrite(sinhcosh):

(12/x+6/x^2+1/x^3+8)^(1/3)

rewrite(tan):

(12/x+6/x^2+1/x^3+8)^(1/3)

mwcos2sin:

(12/x+6/x^2+1/x^3+8)^(1/3)

collect(x):

(12/x+6/x^2+1/x^3+8)^(1/3)

结果为:

ans=

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

5.求级数1+x+x2+…+xk+…和

的和。

(使用symsum函数)

1)>>symsxk

>>symsum(x^k,k,0,inf)

ans=

piecewise([1<=x,Inf],[abs(x)<1,-1/(x-1)])

 

>>symsxk

>>symsum((x^k)/(factorial(k)),k,0,inf)

 

6.分别求下例积分

(1)

(2)

(3)

>>s=sym('1/(1+x^2)');

>>int(s,x)

ans=

atan(x)

>>symsab;

>>int(s,x,a,b)

ans=

atan(b)-atan(a)

>>int(s,x,1,2)

ans=

atan

(2)-1/4*pi

7.

:

>>f=sym('cos(x^2)')

f=

cos(x^2)

>>diff(f)

ans=

-2*x*sin(x^2)

>>f=sym('cos(x^2)');

>>diff(f,2)

ans=

-2*sin(x^2)-4*x^2*cos(x^2)

>>f=sym('cos(x^2)');

>>diff(f,3)

ans=

8*x^3*sin(x^2)-12*x*cos(x^2)

8.求三元非线性方程组

的解

>>symsxyz

[xyz]=solve('x^2+2*x+1=0','x+3*z=4','y*z=-1','x','y','z')

x=

-1

y=

-3/5

z=

5/3

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

当前位置:首页 > 解决方案 > 学习计划

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

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