当前位置:文档之家› 实验二 MATLAB数值计算与符号运算功能

实验二 MATLAB数值计算与符号运算功能

实验二 MATLAB数值计算与符号运算功能
实验二 MATLAB数值计算与符号运算功能

课程名称: MATLAB实验

题目:实验二 MATLAB数值计算与符号运算功能

学生姓名:

专业:电子信息工程

班级:

学号:

指导教师:张静

实验地点:现代通信实验室

日期: 2012 年 12月 2 日

实验2 MATLAB数值计算、符号运算功能

一、实验目的

1、掌握建立矩阵、矩阵分析与处理的方法。

2、掌握线性方程组的求解方法。

3、掌握数据统计和分析方法、多项式的常用运算。

4、掌握求数值导数和数值积分、常微分方程数值求解、非线性代数方程数值求解的方法。

5、掌握定义符号对象的方法、符号表达式的运算法则及符号矩阵运算、符号函数极限及导数、符号函数定积分和不定积分的方法。

二、预习要求

(1)复习4、5、6章所讲内容;

(2)熟悉MATLAB中的数值计算和符号运算的实现方法和主要函数。

三、实验内容

1、已知

29618

20512

885

A

-??

??

=??

??

-

??

,求A的特征值及特征向量,并分析其数学意义。

程序:

求A的特征值:A=[-29 6 18;20 5 12;-8 8 5];

E=eig(A)

运行结果: E =

-25.3169

-10.5182

16.8351

求A的特征向量:

[V,D]=eig(A)

运行结果:V =

0.7130 0.2803 0.2733

-0.6084 -0.7867 0.8725

0.3487 0.5501 0.4050

D =

-25.3169 0 0

0 -10.5182 0

0 0 16.8351 数学意义:

在数学上,特别是线性代数中,对于一个给定的线性变换,它的特征向量(本征向量或称正规正交向量)是这样一个非零的向量v :当v 经过这个线性变换的作用之后,得到的新向量(长度也许改变)仍然与原来的v 保持在同一条线上。一个特征向量的长度在该线性变换下缩放的比例称为其特征值(本征值)。如果特征值为正,则表示v 在经过线性变换的作用后方向也不变;如果特征值为负,说明方向会反转;如果特征值为0,则是表示缩回零点。但无论怎样,仍在同一条直线上。

2、 不用rot90函数,实现方阵左旋90°或右旋90°的功能。例如,原矩阵为A ,A 左旋后

得到B ,右旋后得到C 。

147102581136912A ????=??????

,101112789456123B ??????=??????,321654987121110B ??

??

??=??

????

提示:先将A 转置,再作上下翻转,则完成左旋90°;如将A 转置后作左右翻转,则完成右旋转90°,可用flipud 、fliplr 函数。

程序及运行结果如下:

A=[1 4 7 10;2 5 8 11;3 6 9 12]; B=A' B =

1 2 3 4 5 6 7 8 9 10 11 12

C=flipud(B)

C =

10 11 12 7 8 9 4 5 6 1 2 3

D=fliplr(B) D =

3 2 1 6 5

4 9 8 7

12 11 10

3、建立一个5*5矩阵,求它的行列式值、秩。

程序及运行结果如下:

A=magic(5)

A =

17 24 1 8 15

23 5 7 14 16

4 6 13 20 22

10 12 19 21 3

11 18 25 2 9

B=det(A)

B =

5.0700e+006

r=rank(A)

r =

5

4、下面是一个线性方程组

123

123

123

111

0.95 234

111

0.67 345

111

0.52 456

x x x

x x x

x x x

?

++=

?

?

?

++=

?

?

?

++=

?

?

(1)求方程的解。

程序如下:A=[1/2,1/3,1/4;1/3,1/4,1/5;1/4,1/5,1/6];

B=[0.95;0.67;0.52];

X=A\B

X =

1.2000

0.6000

0.6000

(2)将方程右边向量元素b3=0.52改为0.53再求解,并比较b3的变化和解的相对变化。程序如下:

C=[0.95;0.67;0.53];

X1=A\C

X1 =

3.0000

-6.6000

6.6000

(3)计算系数矩阵的条件数并分析结论。

程序如下:

D=cond(A)

D =

1.3533e+003

5、建立矩阵A,试比较sqrtm(A)和sqrt(A),分析它们的区别。

程序及运行结果如下:

A=magic(5)

A =

17 24 1 8 15

23 5 7 14 16

4 6 13 20 22

10 12 19 21 3

11 18 25 2 9

B=sqrtm(A)

B =

3.5456 + 1.3435i 2.7962 - 1.5926i -0.3000 + 0.8860i 0.5706 - 0.1082i 1.4499 - 0.5287i

2.5518 - 1.5247i 2.1700 + 2.6661i 0.6534 + 0.2501i 1.2598 - 0.6915i 1.4272 - 0.7001i

-0.0313 + 0.5290i 0.6707 + 0.3211i 3.3478 + 1.7354i 1.9336 - 0.9417i 2.1415 - 1.6437i

0.9124 - 0.1853i 0.9210 - 0.3527i 1.8626 - 0.9590i 4.2785 + 0.5576i 0.0878 + 0.9393i

1.0838 - 0.1626i 1.5043 - 1.0419i

2.4984 - 1.9125i 0.0198 + 1.1838i 2.9560 + 1.9331i

C=sqrt(A)

C =

4.1231 4.8990 1.0000 2.8284 3.8730

4.7958 2.2361 2.6458 3.7417 4.0000

2.0000 2.4495

3.6056

4.4721 4.6904

3.1623 3.4641

4.3589 4.5826 1.7321

3.3166

4.2426

5.0000 1.4142 3.0000

6、将100个学生5门功课的成绩存入矩阵P中,进行如下处理:

(1)分别求每门课的最高分、最低分及相应学生序号。

程序如下:

P=45+50*rand(100,5);

[Y S]=max(P)

Y =

93.0779 94.4220 94.7741 94.9739 94.5852

S =

37 74 78 75 62

[X S]=min(P)

X =

45.0599 45.4879 45.8337 45.0710 45.0171

S =

82 5 92 36 74

(2)分别求每门课的平均分和标准方差。

程序如下:

y=mean(P)

S=std(P)

y =

66.7164 70.0872 71.3503 69.8392 71.4263

S =

13.9835 14.5437 14.3182 14.9585 13.9962

(3)5门课程总分的最高分、最低分及相应学生序号。

程序如下:

B=sum(P,2);

disp('最高分及学号:'),[Y S]=max(B)

最高分及学号:

Y =

437.2536

S =

54

disp('最低分及学号:'),[X S]=min(B)

最低分及学号:

X =

278.3152

S =

36

(4)将5门课总分按从大到小顺序存入zcj中,相应学生序号存入xsxh。

提示:编程时,为避免输入学生成绩的麻烦,可用取值范围在[45,95]之间的随机矩阵来表示

学生成绩。

程序如下:

B=sum(P,2);

[X I]=sort(B);

zcj=flipud(X)

xsxh=flipud(I)

zcj =

437.2536

417.5861

409.8246

405.3662

400.4775

400.3304

398.9580

396.3125

395.3727

394.7027

390.2619

389.5924

389.0519

387.3632

385.5373

383.6731

379.2550

379.0279

377.8304

376.7025

375.3783

375.1935

373.1955

371.7458

370.8097

366.2966

365.3480

364.5533

363.1062

362.5595

361.3854

360.9448

360.4308

359.6062

358.3805 358.0559 358.0461 357.7255 354.3539 354.2564 352.0669 351.6719 350.5257 349.7219 348.5541 347.4418 347.3947 347.2428 346.6537 345.2698 345.2107 345.1214 344.9503 344.5771 343.4648 343.1131 342.6539 342.4628 342.1198 342.1098 341.8958 341.8069 340.6471 340.3036 340.0241 338.8043 337.5270 336.2928 336.1132 335.4153 335.2213 333.6805 330.4060 329.8989 329.6462 328.3428 327.3087

326.5555 324.9407 324.1756 323.2536 320.5619 319.8783 318.6787 316.6444 313.5261 310.6905 309.9627 309.7136 307.9753 305.8118 300.7805 299.5111 298.9252 290.9905 285.4975 278.4728 278.3152

xsxh =

54

68

93

21

53

62

91

87

71

55

42

75

66

35

14

84

72

26

98 12 76 8 45 61 20 80 25 48 13 97 32 58 86 60 29 11 24 67 44 46 81 51 17 47 57 83 69 85 77 92 10 3 59 90 38 37 52 22 78 74 6

16

34

50

19

88

2

70

63

94

23

28

27

18

64

4

1

49

95

79

99

65

82

43

100

96

89

33

40

41

73

56

15

5

30

31

39

36

7、利用MATLAB提供的rand函数生成30000个符合均匀分布的随机数,然后检验

随机数的性质:

(1)均值和标准方差;

程序如下:

k=0;

x=rand(1,30000);

disp(['随机数的均值为:',num2str(mean(x))]) 随机数的均值为:0.49875

disp(['随机数的标准方差为:',num2str(std(x))]) 随机数的标准方差为:0.28898

(2)最大元素和最小元素;

程序如下:

disp(['随机数的最大元素为:',num2str(max(x))]) 随机数的最大元素为:0.99997

disp(['随机数的最小元素为:',num2str(min(x))]) 随机数的最小元素为:4.8345e-005

(3)大于0.5的随机数个数占总数的百分比。

程序如下:

disp(['大于0.5的随机数个数占总数的百分比为:',num2str(size(find(x>0.5))/size(x)*100),'%'])

大于0.5的随机数个数占总数的百分比为:50.0567%

8、 分别用3种不同的数值方法求解线性方程组。(提示:LU 函数、inv 函数)

65254

94133422139211

x y z u x y z u x y z u x y u +-+=-??-+-=?

?

++-=??-+=? 方法一:

采用LU 分解:

A=[6,5,-2,5;9,-1,4,-1;3,4,2,-2;3,-9,0,2]; b=[12,-6,4,0]'; [L,U]=lu(A); x=U\(L\b)

x =

7.1667

-0.7222

-21.3056

-14.0000 方法二:

QR分解:

A=[6,5,-2,5;9,-1,4,-1;3,4,2,-2;3,-9,0,2];

b=[12,-6,4,0]';

[Q,R]=qr(A);

x=R\(Q\b)

x =

7.1667

-0.7222

-21.3056

-14.0000 方法三:

Cholesky分解:

A=[6,5,-2,5;9,-1,4,-1;3,4,2,-2;3,-9,0,2];

b=[12,-6,4,0]';

R=chol(A)

??? Error using ==> chol

Matrix must be positive definite.

命令执行时,出现错误信息,说明A为非正定矩阵。

9、求函数

3cos log

()

x

x x x x

f x

e

++

=在(0,1)内的最小值。

程序如下:

X=fminbnd('(x.^3+cos(x)+x*log10(x))/exp(x)',0,1)

X = 0.6638

10、

已知x=6,y=5,利用符号表达式:1

3x z x y

+=

+-。(提示:定义符号常

数('6')x sym =,('5')y sym =)

程序如下: x=sym('6'); y=sym('5');

z=(x+1)/(sqrt(3+x)-y) z = -7/2

11、

已知:1010100001P ????=??????,2100010101P ????=??????,a b c A d e f g

h

i ??

??=??????

求: (1)12B P P A =

。 程序如下:

syms a b c d e f g h i; A=[a,b,c;d,e,f;g,h,i]; P1=[0,1,0;1,0,0;0,0,1]; P2=[1,0,0;0,1,0;1,0,1]; B=P1*P2*A

运行结果: B =

[ d, e, f] [ a, b, c] [ a + g, b + h, c + i]

(2)B的逆矩阵并验证结果。

程序:simplify(inv(B))

运行结果:

ans =

[ -(b*i - c*h)/(a*e*i - a*f*h - b*d*i + b*f*g + c*d*h - c*e*g), -(b*f - c*e - e*i + f*h)/(a*e*i - a*f*h - b*d*i + b*f*g + c*d*h - c*e*g), (b*f - c*e)/(a*e*i - a*f*h - b*d*i + b*f*g + c*d*h - c*e*g)]

[ (a*i - c*g)/(a*e*i - a*f*h - b*d*i + b*f*g + c*d*h - c*e*g), (a*f - c*d - d*i + f*g)/(a*e*i - a*f*h - b*d*i + b*f*g + c*d*h - c*e*g), -(a*f - c*d)/(a*e*i - a*f*h - b*d*i + b*f*g + c*d*h - c*e*g)]

[ -(a*h - b*g)/(a*e*i - a*f*h - b*d*i + b*f*g + c*d*h - c*e*g), -(a*e - b*d - d*h + e*g)/(a*e*i - a*f*h - b*d*i + b*f*g + c*d*h - c*e*g), (a*e - b*d)/(a*e*i - a*f*h - b*d*i + b*f*g + c*d*h - c*e*g)]

验证:

simplify(B*inv(B))

ans =

[ 1, 0, 0]

[ 0, 1, 0]

[ 0, 0, 1]

(3)包括B矩阵主对角线元素的下三角阵。

程序如下:B(1,2)=0;

B(1,3)=0;

B(2,3)=0;

B

运行结果:

B =

[ d, 0, 0]

[ a, b, 0]

[ a + g, b + h, c + i]

(4)B的行列式值。

程序如下:

B=sym('[d,e,f;a,b,c;a+g,b+h,c+i]');

D=det(B)

运行结果:

D =

a*f*h - a*e*i + b*d*i - b*f*g - c*d*h + c*e*g

提示:用于数值矩阵分析的有关函数同样适用于符号矩阵。验证结果时须将结果化简。

12、用符号方法求下列极限或导数。

(1)

sin tan

2

(1)2(1) lim

sin

x x

x

x e e

x

+--

程序如下:

v=(x*(exp(sin(x))+1)-2*(exp(tan(x))-1))/(sin(x))^2; limit(v,x,0)

运行结果:

ans =

(2)已知

3

cos ln

x

a t

A

t x x

??

=??

??

,分别求

dA

dx

2

2

d A

dt

2

d A

dxdt

程序及运行结果如下:

(1)A=sym('[a^x,t^3;t*cos(x),log(x)]');

diff(A,'x')

ans =

[ a^x*log(a), 0]

[ -t*sin(x), 1/x] (2)diff(A,'t',2)

ans =

[ 0, 6*t] [ 0, 0]

(3)diff(diff(A,'x'),'t')

ans =

[ 0 , 0] [ -sin(x), 0]

13、 用符号方法求下列积分:

(1)

481dx

x x ++?;

程序如下: syms x;

f=1/(1+x^4+x^8); int(f) 运行结果: ans =

-(3^(1/2)*atan((2*3^(1/2)*x)/(3*((2*x^2)/3-2/3))))/6-(3^(1/2)*atan((2*3^(1/2)*x*i)/(3*((2*x^2)/3 + 2/3)))*i)/6 (2)

24

1

1

x dx x +∞

++?

。 程序如下: syms x;

f=(x^2+1)/(x^4+1); int(f,0,inf) 运行结果: ans =

(pi*2^(1/2))/2

14、 化简表达式。

(1)1212sin cos cos sin ββββ-; 程序如下:

A=sym('sin(β1)*cos(β2)-cos(β1)*sin(β2)'); simplify(A) 运行结果: ans =

sin(β1 - β2)

(2)248321

x x x +++。

程序如下:

S=sym('(4*x^2+8*x+3)/(2*x+1)'); [r,how]=simple(S) 运行结果: r = 2*x + 3 how = simplify 15、

分解因式。

(1)4

4

x y -; 程序如下: f=sym('x^4-y^4'); factor(f) 运行结果: ans =

(x - y)*(x + y)*(x^2 + y^2) 16、

(2)5135。

程序如下:

f=sym('5135');

factor(f)

运行结果:

ans =

5*13*79

四、实验报告

1、实验内容中的代码与运行结果的截图;(如上所示)

2、本次实验的总结。

通过本次实验,了解了MATLAB的数值计算、符号运算功能,掌握了对矩阵的一些求值方法和线性方程组的求解方法。对于求字符矩阵的方法,数值矩阵也同样适用。相比起线性代数的笔算要方便多了,体会到了计算机软件的强大功能。

在实验之前要先预习好实验的内容及熟悉一些函数矩阵的求法,这样才能更有效地完成实验。

实验MATLAB符号运算

实验四 MATLAB 符号运算 一、实验目的 掌握符号变量和符号表达式的创建,掌握MATLAB 的symbol 工具箱的一些基本应用。 二、实验内容 (1) 符号变量、表达式、方程及函数的表示。 (2) 符号微积分运算。 (3) 符号表达式的操作和转换。 (4) 符号微分方程求解。 三、实验步骤 1. 符号运算的引入 在数值运算中如果求x x x πsin lim 0→,则可以不断地让x 接近于0,以求得表达式接近什么数,但是终究不能令0=x ,因为在数值运算中0是不能作除数的。MATLAB 的符号运算能解决这类问题。输入如下命令: >>f=sym('sin(pi*x)/x') >>limit(f,'x',0) >> f=sym('sin(pi*x)/x') f = sin(pi*x)/x >> limit(f,'x',0) ans = Pi 2. 符号常量、符号变量、符号表达式的创建 1) 使用sym( )创建 输入以下命令,观察Workspace 中A 、B 、f 是什么类型的数据,占用多少字节的内存空间。 >> A=sym('1') >> B=sym('x') >> f=sym('2*x^2+3*y-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) > A=sym('1') A = 1

>> B=sym('x') B = x >> f=sym('2*x^2+3*y-1') f = 2*x^2+3*y-1 >> clear >> f1=sym('1+2') f1 = 1+2 >> f2=sym(1+2) f2 = 3 >> f3=sym('2*x+3') f3 = 2*x+3 >> f4=sym(2*x+3) ??? Undefined function or variable 'x'. >> x=1 x = >> f4=sym(2*x+3) f4 =

实验MATLAB符号计算

实验四符号计算 符号计算的特点:一,运算以推理解析的方式进行,因此不受计算误差积累问题困扰;二,符号计算,或给出完全正确的封闭解,或给出任意精度的数值解(当封闭解不存在时);三,符号计算指令的调用比较简单,经典教科书公式相近;四,计算所需时间较长,有时难以忍受。 在MATLAB中,符号计算虽以数值计算的补充身份出现,但涉及符号计算的指令使用、运算符操作、计算结果可视化、程序编制以及在线帮助系统都是十分完整、便捷的。 MATLAB的升级和符号计算内核Maple的升级,决定着符号计算工具包的升级。但从用户使用角度看,这些升级所引起的变化相当细微。即使这样,本章还是及时作了相应的更新和说明。如MATLAB 6.5+ 版开始启用Maple VIII的计算引擎,从而克服了Maple V计算“广义Fourier变换”时的错误(详见第5.4.1节)。 5.1符号对象和符号表达式 5.1.1符号对象的生成和使用 【例5.1.1-1】符号常数形成中的差异 a1=[1/3,pi/7,sqrt(5),pi+sqrt(5)] % <1> a2=sym([1/3,pi/7,sqrt(5),pi+sqrt(5)]) % <2> a3=sym([1/3,pi/7,sqrt(5),pi+sqrt(5)],'e') % <3> a4=sym('[1/3,pi/7,sqrt(5),pi+sqrt(5)]') % <4> a24=a2-a4 a1 = 0.3333 0.4488 2.2361 5.3777 a2 = [ 1/3, pi/7, sqrt(5), 6054707603575008*2^(-50)] a3 = [ 1/3-eps/12, pi/7-13*eps/165, sqrt(5)+137*eps/280, 6054707603575008*2^(-50)] a4 = [ 1/3, pi/7, sqrt(5), pi+sqrt(5)] a24 = [ 0, 0, 0, 189209612611719/35184372088832-pi-5^(1/2)] 【例5.1.1-2】演示:几种输入下产生矩阵的异同。 a1=sym([1/3,0.2+sqrt(2),pi]) % <1> a2=sym('[1/3,0.2+sqrt(2),pi]') % <2> a3=sym('[1/3 0.2+sqrt(2) pi]') % <3> a1_a2=a1-a2 % a1 = [ 1/3, 7269771597999872*2^(-52), pi] a2 = [ 1/3, 0.2+sqrt(2), pi] a3 = [ 1/3, 0.2+sqrt(2), pi] a1_a2 = [ 0, 1.4142135623730951010657008737326-2^(1/2), 0]

MATLAB符号计算实验报告

实验六符号计算 学院:数计学院班级:1003班姓名:黄晓丹学号:1051020144 一、实验目的 1、了解富符号对象和数值对象之间的差别,以及它们之间的互相转换 2、了解符号运算和数值运算的特点、区别和优缺点 3、掌握符号对象的基本操作和运算,以及符号运算的基本运用 二、实验内容 1、符号常数形成和使用 (1)符号常数形成中的差异 >> a1=[1/3,pi/7,sqrt(5),pi+sqrt(5)] a1 = 0.3333 0.4488 2.2361 5.3777 >> a2=sym([1/3,pi/7,sqrt(5),pi+sqrt(5)]) a2 = [ 1/3, pi/7, sqrt(5),

6054707603575008*2^(-50)] >> a3=sym('[1/3,pi/7,sqrt(5),pi+sqrt(5)]') a3 = [ 1/3, pi/7, sqrt(5), pi+sqrt(5)] >> a24=a2-a3 a24 = [ 0, 0, 0, 189209612611719/35184372088832-pi-5^(1/2)] (2)把字符表达式转化为符号变量 >> y=sym('2*sin(x)*cos(x)') y = 2*sin(x)*cos(x) >> y=simple(y)

y = sin(2*x) (3)用符号计算验证三角等式 >> syms fai1 fai2;y=simple(sin(fai1)*cos(fai2)-cos(fai1)*sin(fai2)) y = sin(fai1-fai2) (4)求矩阵的行列式值、逆和特征值 >> syms a11 a12 a21 a22;A=[a11,a12;a21,a22] A = [ a11, a12] [ a21, a22] >> DA=det(A),IA=inv(A),EA=eig(A) DA =

matlab实验五多项式和符号运算

实验五:Matlab多项式和符号运算 一、实验目的 1.掌握Matlab多项式的运算。 2.了解符号运算。 二、实验内容 1.将多项式()(2)(3)(7)(1) =-+-+化为x的降幂排列。 P x x x x x syms x; y=(x-2)*(x+3)*(x-7)*(x+1); expand(y) ans = x^4-5*x^3-19*x^2+29*x+42 2.求一元高次方程的根。 98765432 --++--++= 53015027313658204100576-28800 x x x x x x x x x syms x y; y=x^9-5*x^8-30*x^7+150*x^6-1365*x^4-820*x^3+410 0*x^2+576*x-2880; solve(y,x) ans = 6.81947687944124431946 1.42761488953013276419+.8192491831*i 2.865487219+2.49263348244446271927*i

-1.887673354+1.812452594*i -.9583509633 -5.922730991 -1.887673354-1.812452594*i 2.865487219-2.49263348244446271927*i 1.42761488953013276419-.8192491831*i 3.求一元高次方程的根,并画出左边多项式函数在[2,2] x∈-区间内的曲线。 42 -+= x x 210 a=[1 0 -2 0 1]; r=roots(a) syms x; x=-2:2; y=[1 0 -2 0 1]; plot(x,y) r = 1.0000 + 0.0000i 1.0000 - 0.0000i -1.0000 -1.0000

MatLab常见函数和运算符号解读

MatLab常见函数和运算符号 基本运算 convhull :凸壳函数 cumprod :累计积 cumsum :累计和 cumtrapz :累计梯形数值积分 delaunay :Delaunay三角化 dsearch :求最近点(这是两个有趣的函数 factor :质数分解inpolygon :搜索多边形内的点 max :最大元素 mean :平均值 median :数组的中间值 min :最小值 perms :向量所有排列组成矩阵 polyarea :多边形的面积 primes :生成质数列表 prod :数组元素积 sort :元素按升序排列 sortrows :将行按升序排列

std :标准差 sum :元素和 trapz :梯形数值积分 tsearch :搜索Delaunay三角形var :方差 voronoi :Voronoi图 del2 :Laplacian离散 diff :差分和近似微分gradient:数值梯度 corrcoef :相关系数 cov :协方差矩阵 xcorr :互相关系数 xcov :互协方差矩阵 xcorr2 :二维互相关 conv :卷积和多项式相乘conv2 :二维卷积 deconv :反卷积 filter :滤波 filter2 :二维数字滤波

傅立叶变换 abs :绝对值和模 angle :相角 cplxpair :按复共扼把复数分类 fft :一维快速傅立叶变换 fft2 :二维快速傅立叶变换 fftshit :将快速傅立叶变换的DC分量移到谱中央ifft :以为逆快速傅立叶变换 ifft2 :二维逆快速傅立叶变换 ifftn :多维逆快速傅立叶变换 ifftshift :逆fft平移 nextpow2 :最相邻的2的幂 unwrap :修正相角 cross :向量叉积 intersect:集合交集 ismember :是否集合中元素 setdiff :集合差集 setxor :集合异或(不在交集中的元素 union :两个集合的并

matlab符号计算实验报告

1. 已知x=6,y=5, 利用符号表达式求z =>> syms x >> z=(x+1)/(sqrt(x+3)-sqrt(y)); >> subs(z,x,5) ans =6/(8^(1/2)-y^(1/2)) >> subs(ans,6) ans = 15.8338 2. 分解因式。 (1)x y -44; >> syms x y >> factor(x^4-y^4) ans =(x-y)*(x+y)*(x^2+y^2) (2)x x x +++642 12575151 >> syms x >> factor(125*x^6+75*x^4+15*x^2+1) ans =(5*x^2+1)^3 3. 化简表达式 (1)sin cos cos sin ββββ-1212; >> syms x y >> f=sin(x).*cos(y)-cos(x).*sin(y); >> sfy1=simple(f) 结果:sfy1 =sin(x-y) (2)x x x +++248321 >> syms x >> f=(4*x^2+8*x+3)/(2*x+1);sfy1=simplify(f) sfy1 =2*x+3 4、求下列极限,将完成实验的程序写到文件sy1.m 中: (1) (2) (3) (4) (5) (1)>> syms x >> F1=atan(x)/(x); >> w=limit(F1) w =1 (2)>> syms x F2=((1+x)/(1-x))^(1/x); >> w=limit(F2) w =exp(2) (3)>> syms x F3=(x.*log(1+x))/(sin(x^2)); >> w=limit(F3) w =1 (4)>> syms x F4=atan(x)/(x); >> w=limit(F4,x,inf) w =0 (5)>> syms x F5=(1/(1-x)-1/(1-x^3)); >> w=limit(F5,x,1) w =NaN 5、求下列函数的导数,将完成实验的程序写到文件sy2.m 中: 1、 >> x = sym('x'); >> y1=(cos(x))^3-cos(3*x); >> diff(y1)ans =-3*cos(x)^2*sin(x)+3*sin(3*x) 2、 >> x = sym('x'); >> y2=x.*sin(x).*(log(x)); >> diff(y2)ans =sin(x)*log(x)+x*cos(x)*log(x)+sin(x) 3、 >> x = sym('x'); >> y3=(x.*exp(x)-1)/sin(x); >> diff(y3) ans =(exp(x)+x*exp(x))/sin(x)-(x*exp(x)-1)/sin(x)^2*cos(x) 4、 x x x x F 1011lim 2??? ??-+=→3 1115lim()11x F x x →=---20sin )1ln(lim 3x x x F x +=→x x F x arctan lim 10→=arctan 4lim x x F x →∞=x x y 3cos cos 13-=x x x y ln sin 2=x xe y x sin 13-=cos x y e x =

MATLAB实验——符号运算讲解

实验一符号运算 班级:电气4班姓名:叶元亮学号:B2012052409 一、实验目的 1、了解符号、数值、字符等数据类型的差别 2、了解符号运算的特点、优缺点 3、掌握符号变量的创建和运算,以及其运算的基本应用 4、掌握基本的符号绘图指令 二、实验内容 1、指出下面的 M1,M2,M3 分别是什么,并上机验证。 取a=1、b=2、c=3、d=4,M1=[a,b;c,d],M2='[a,b;c,d]',M3=sym('[a,b;c,d]'); >> a=1,b=2,c=3,d=4 a = 1 b = 2 c = 3 d = 4 >> M1=[a,b;c,d] M1 =

1 2 3 4 >> M2='[a,b;c,d]' M2 = [a,b;c,d] >> M3=sym('[a,b;c,d]') M3 = [ a, b] [ c, d] 结论:M1是矩阵,2是字符串,M3是字符变量。 2、下面2种取值情况下,计算b a b a- + 并赋给相应情况下的c1、c2,问c1、c2相等吗,为什么?上机验证。 (1) a1=1010; b1=10-10; (2)将a1、a2作为符号变量赋给a2、b2; >> a1=1e10; b1=1e-10; >> c1=(a1+b1-a1)/b1 c1 = >> a2=sym(a1); b2=sym(b1); >> c2=(a2+b2-a2)/b2 c2 = 1

结果:c1~=c2,因为c1=0,c2=1,a1、b1是具体的数值,a2、b2是符号变量。 3、符号表达式中自由变量的确定生成符号变量a 、b 、x 、X 、Y 、 k=3、z=a y w c sin +,表达式为 Y k bx azX f )(2++=。 (1)找出f 中的全部自由符号变量 (2)在f 中确定最优先的自由符号变量 (3)在f 中确定2个和3个自由变量时的执行情况 (4)试通过对各符号变量与x 的ASCII 值做绝对差值,分析自 由变量优秀顺序,能得出什么结论? >> syms a b x X Y k=sym('3'); z=sym('c*sqrt(w)+y*sin(a)'); f=a*z*X+(b*x^2+k)*Y; >> findsym(f) ans = X, Y, a, b, c, w, x, y >> findsym(f,1) ans = x >> findsym(f,2) ans = x,y

实验3 Matlab 符号运算及求函数极值

实验3 Matlab 符号运算及求函数极值一、实验目的和要求 掌握用Matlab软件进行符号运算以及求函数的极值。 二、实验环境 Windows系列操作系统,Matlab软件。 三、实验内容 1.用MATLAB进行符号运算; 2.编程求函数的极值。 四、实验步骤 3.开启软件平台——Matlab,开启Matlab编辑窗口; 4.根据求解步骤编写M文件; 5.保存文件并运行; 6.观察运行结果(数值或图形); 7.根据观察到的结果和体会写出实验报告。 五、示例 1.计算一元函数的极值 例1求 2 2 344 1 x x y x x ++ = ++ 的极值 解首先建立函数关系: s yms x y=(3*x^2+4*x+4)/( x^2+x+1); 然后求函数的驻点: dy=diff(y); xz=solve(dy) xz= [0] [-2] 知道函数有两个驻点x 1=0和x 2 =-2, 接下来我们通过考察函数的图形,则它的极值情况和许多其它特性是一目了然的。而借助MATLAB的作图功能,我们很容易做到这一点。 例2 画出上例中函数的图形

解 syms x y=(3*x^2+4*x+4)/( x^2+x+1); 得到如下图形 ezplot(y) 2.计算二元函数的极值 MATLAB 中主要用diff 求函数的偏导数,用jacobian 求Jacobian 矩阵。 例1 求函数42823z x xy y =-+-的极值点和极值. 首先用diff 命令求z 关于x,y 的偏导数 >>clear; syms x y; >>z=x^4-8*x*y+2*y^2-3; >>diff(z,x) >>diff(z,y) 结果为 ans =4*x^3-8*y ans =-8*x+4*y 即348,84z z x y x y x y ??=-=-+??再求解方程,求得各驻点的坐标。一般方程组的符号解用solve 命令,当方程组不存在符号解时,solve 将给出数值解。求解方程的MA TLAB 代码为:

实验二2MATLAB地符号计算与可视化

实验二MATLAB的符号计算与可视化 1:完成教材实验三第1节“1.创建符号表达式和符号表达式的操作”中(1)-(5)部分的内容,分别用sym和syms创建符号表达式f和g,并对它们进行相关操作,思考每一条命令的作用是什么,并提交命令行和结果; (1)创建符号变量。 ①使用sym命令创建符号表达式: >> f=sym('sin(x)') f = sin(x) >> g=sym('y/exp(-2*t)') g = y*exp(2*t) ②使用syms命令创建符号表达式: >> syms x y t >> f=sym(sin(x)) f = sin(x) >> g=sym(y/exp(-2*t)) g = y*exp(2*t) (2):自由变量的确定:

>> symvar(g) ans = [ t, y] >> symvar(g,1) ans = y >> findsym(g,2) ans = y,t (3):用常数替换符号变量: >> x=0:10; >> y=subs(f,x) y = Columns 1 through 8 0 0.8415 0.9093 0.1411 -0.7568 -0.9589 -0.2794 0.6570 Columns 9 through 11 0.9894 0.4121 -0.5440 练习:用y替换x,查看结果及其数据类型。 z=subs(f,y) z = Columns 1 through 8

0 0.7456 0.7891 0.1407 -0.6866 -0.8186 -0.2758 0.6107 Columns 9 through 11 0.8357 0.4006 -0.5176 >> class(z) ans = double (4):符号对象与数值的转换和任意精度控制: >> f1=subs(f,'5') f1 = sin(5) >> y1=double(f1) y1 = -0.9589 >> y2=eval(f1) y2 = -0.9589 练习:将y1用sym函数转换为符号对象,并用’d’,’f’,’e’,’r’4种格式表示。>> y2=sym(y1,'d') y2 = -0.95892427466313845396683746002964

实验四 MATLAB符号运算

实验四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)

2014秋实验四_MATLAB的符号计算二

2014年10月26日星期日 湖北科技学院 MATLAB 专业:电气工程及其自动化班级:电气一班 姓名:尹锥(133521015)指导教师:刘芳华 电子与信息工程学院

实验四MATLAB的符号计算(二) 一、实验目的 1.掌握MATLAB7.0 subs、simple、simplify、finverse等函数的应用; 2.掌握利用MATLAB7.0计算极限和级数的方法,计算复合、反函数的方法; 3.了解利用MATLAB7.0计算taylor级数。 4.掌握利用MATLAB7.0来求解常微分方程的方法。 5.掌握利用MATLAB7.0符号计算中的ezplot及ezplot3绘图方法。 二、实验内容 1.设x为符号变量, 42 ()21 f x x x =++,32 ()635 g x x x x =+++,试进行如下运算。 (1) ()() f x g x +, (2) ()() f x g x ?, (3)对 () f x进行因式分解, (4)求 () g x的反函数。 2

2.(1)指出下面程序中的f1、f2、f3、f4、f5的值。f5=subs(f,{a,x},{0:6,0:pi/6:pi}) 3

(2)指出下面替换的结果。 3. 用符号计算验证三角等式: sin(?1)cos(?2)-cos(?1)sin(?2) =sin(?1-?2) 4

4.设,求 7.求微分方程的解:y'''-y''=x,y''(2)=4,y'(1)=7,y(1)=8 5

8.计算函数级数 2 1 n x S n ∞ = =∑ 9. f(x)=e x分别求5阶、6阶泰勒展开式 10.符号函数绘图法绘制函数x=sin(3t)cos(t),y=sin(3t)sin(t)的图形,t的变化范围为[0,2π]。 6

实验 MATLAB符号运算功能

实验3 MATLAB 符号运算功能 实验目的:掌握MATLAB 符号运算功能的基本使用方法 1.符号矩阵的建立及符号矩阵的运算; 2.符号矩阵的简化; 3.符号矩阵的极限和微积分; 4.代数方程求解; 5.一元函数图象简易画法. 实验内容: 1. 设)1()(--=x e x x g x 1) 将)(x g 写成MATLAB 符号表达式; 2) 求出符号表达式)('x g ; 3) 利用"subs "命令求出)4(g 和)4('g ; 4) 利用"plot "命令画出函数)(x g 在区间[-3,3]上的光滑图象; 5) 利用"ezplot "命令画出函数)(x g 在区间[-3,3]上的图象并与4)所得结果进行比较. 比较. 运行命令: syms x; g=[x*(exp(x)-x-1)] diff(g) G=subs(g,[4]) G1=subs(diff(g),4) x=-3:0.01:3; y=x.*(exp(x)-x-1); plot(x,y) ezplot(g,[-3,3]) 程序运行结果: g = x*(exp(x)-x-1) ans = exp(x)-x-1+x*(exp(x)-1) G = 198.3926 G1 =

263.9908 2. 设)1()(1--=x e x x g x ,1)(22+=x x g 1)利用"ezplot "命令画图估计函数)(1x g 与)(2x g 图象交点的x 值; 2) 利用"solve "命令求出函数)(1x g 与)(2x g 图象交点处x 的精确值. 3. 说明下面程序中每个命令的作用: syms x h f = exp(sin(x)) m = (subs(f, x+h)-f)/h f1 = limit(m, h, 0) subs(f1, pi) X = -10:.05:10; F = subs(f, X); F1 = subs(f1, X); plot(X, F, ’b’, X, F1, ’r’) 解释程序运行的结果. 4. 设)3cos ()(+-=x e x x f x 1) 利用定积分的定义(无限求和)计算?3 0)(dx x f 的近似值(有限求和),改变求和的项数对结果的变化进行比较; 2) 利用符号积分的命令"int "计算?3 0)(dx x f 的值,并与1)所得结果进行比较。

MATLAB实验一——符号运算(学)

实验一 符号运算 要求:报告应写出相应的实验程序代码,相关绘图应截图保存。 一、实验目的 1、了解符号、数值、字符等数据类型的差别 2、了解符号运算的特点、优缺点 3、掌握符号变量的创建和运算,以及其运算的基本应用 4、掌握基本的符号绘图指令 二、实验内容 1、指出下面的 M1,M2,M3 分别是什么,并上机验证。 取a=1、b=2、c=3、d=4,M1=[a,b;c,d],M2='[a,b;c,d]',M3=sym('[a,b;c,d]'); 2、下面2种取值情况下,计算b a b a -+并赋给相应情况下的c1、 c2,问c1、c2相等吗,为什么?上机验证。 (1) a1=1010; b1=10-10; (2) 将a1、a2作为符号变量赋给a2、b2; 3、符号表达式中自由变量的确定生成符号变量a 、b 、x 、X 、Y 、 k=3、z=a y w c sin +,表达式为 Y k bx azX f )(2++=。 (1)找出f 中的全部自由符号变量

2 (2)在f 中确定最优先的自由符号变量 (3)在f 中确定2个和3个自由变量时的执行情况 (4)试通过对各符号变量与x 的ASCII 值做绝对差值,分析自 由变量优秀顺序,能得出什么结论? 4、已知432432)(x x x x x f +++-=, 965)(25+-=x x x g 。做符号运算,化简并计算: (1))()(x g x f ?;)(/)(x g x f ;)(\)(x g x f (2)?dx x f )(;?21)(dx x g ;22)(dx x f d ;)()(lim 0x g x f x → 5、用ezplot 命令绘出 2sin()y x x =在[-4,4]之间的图像。 6、用ezsurf 命令绘出单位球的曲面图像

实验 MATLAB符号运算功能

实验3 MATLAB符号运算功能 实验目的:掌握MATLAB符号运算功能的基本使用方法 1.符号矩阵的建立及符号矩阵的运算; 2.符号矩阵的简化; 3.符号矩阵的极限和微积分; 4.代数方程求解; 5.一元函数图象简易画法. 实验内容: 1. 设)1 x e g x x (- ( ) - =x 1) 将) g写成MATLAB符号表达式; (x 2) 求出符号表达式) g; ('x 3) 利用"subs"命令求出)4(g和)4('g; 4) 利用"plot"命令画出函数) g在区间[-3,3]上的光滑图象; (x 5) 利用"ezplot"命令画出函数) g在区间[-3,3]上的图象并与4)所得结果 (x 进行比较. 比较. 运行命令: syms x; g=[x*(exp(x)-x-1)] diff(g) G=subs(g,[4]) G1=subs(diff(g),4) x=-3:0.01:3; y=x.*(exp(x)-x-1); plot(x,y) ezplot(g,[-3,3]) 程序运行结果: g = x*(exp(x)-x-1) ans = exp(x)-x-1+x*(exp(x)-1) G = 198.3926 G1 =

263.9908 2. 设)1()(1--=x e x x g x ,1)(22+=x x g 1)利用"ezplot "命令画图估计函数)(1x g 与)(2x g 图象交点的x 值; 2) 利用"solve "命令求出函数)(1x g 与)(2x g 图象交点处x 的精确值. 3. 说明下面程序中每个命令的作用: syms x h f = exp(sin(x)) m = (subs(f, x+h)-f)/h f1 = limit(m, h, 0) subs(f1, pi) X = -10:.05:10; F = subs(f, X); F1 = subs(f1, X); plot(X, F, ’b’, X, F1, ’r’) 解释程序运行的结果. 4. 设)3cos ()(+-=x e x x f x 1) 利用定积分的定义(无限求和)计算?3 0)(dx x f 的近似值(有限求和),改变求和的项数对结果的变化进行比较; 2) 利用符号积分的命令"int "计算?3 0)(dx x f 的值,并与1)所得结果进行比较。

相关主题
文本预览
相关文档 最新文档