文档库 最新最全的文档下载
当前位置:文档库 › MATLAB选修课讲义八讲

MATLAB选修课讲义八讲

MATLAB选修课讲义第一讲:矩阵运算

第二讲:函数作图

第三讲:符号演算

第四讲:简单编程

第五讲:数值计算

第六讲:线性代数

第七讲:综合实例

第一讲:矩阵运算

1.基本操作

启动退出终止(Alt+. 或Ctrl +C)

翻页召回命令

分隔符,禁显符;续行符…注释符%

设置显示格式format 常用:short,short g,long 清除变量clear

关闭图形close

清除图形clf

演示Demo

帮助help

2.基本常数

pi I j inf eps NaN exp(1)

3.算术运算

+ - * /, \, ^ sqrt .*./.^

4.内部函数(一般都有数组运算功能)

sin(x) tan(x) asin(x) atan(x)

abs(x) round(x) floor(x) ceil(x)

log(x) log10(x) length(v) size(A) sign(x) [y, p]=sort(x)

5.矩阵运算(要熟练掌握)

(1)矩阵生成:

手工输入:[1 2 3; 4 5 6]; 1:2:10

输入数组: linspace(a, b, n)

命令输入:zeros(m,n) ones(m,n) eye(n)

magic(n) rand(m, n)

diag(A) diag ( [a11 a22 . . . a nn] ) (2)矩阵操作

赋值A(i, j) =2 A(2, :)=[1 2 3]

删除A( [2,3], :)=[ ] 添加A(6,8)=5

定位find(A>0) 定位赋值A(A<0)= -1 由旧得新B=A([2,3,1], :) B=A([1,3],[2,1])

矩阵拼接C=[A, B] C=[A; B]

定位矩阵B=(A>1) B=(A==1)

下三角阵tril(A) 上三角阵triu(A)

左右翻转fliplr(A) 上下翻转flipud(A)

重排矩阵reshape(A, m, n)

(3)矩阵运算:

转置A’和A+B 差A-B 积A*B

左除A\b(=A-1 b)右除b/A(=b A-1 )幂A^k

点乘A.*B 点除A./B 点幂A.^2

行列式det(A) 数量积dot(a,b) 向量积cross(a,b)

行最简形rref(A) 逆矩阵inv(A) 迹trace(A)

矩阵秩rank(A) 特征值eig(A) 基础解系null(A,’r’) 方程组特解x=A\b

注意:2+A,sin(A)

练习一:矩阵操作

1、用尽可能简单的方法生成下列矩阵:

10200010001

2101/21/31/1112040022002311/31/41/12,

,,0330600054082210010191/111/121/20000750??

????????-???????

?-????????-????

???

?-????

?

?

??--??

????

??-??

2、设有分块矩阵???? ??=???2232233S O R E A ,???

?

???=???23

222233

E O J R E B ,其中23,E E 是单位矩阵,32?O 是零矩阵,23?R 是随机矩阵,???

? ??=?011022S ,J

是2阶全1矩阵,验证

B A =2

3、求下列线性方程组的通解:

123412

41234224

239577

x x x x x x x x x x x ++-=??

+-=??--+=?

Ax=b, A=[1 2 1 -2;2 3 0 -1;1 -1 -5 7]; b=[4 9 7]’;

4、求矩阵B=[1 -2 3;3 -1 5;2 1 -2]的特征值和特征向量.

1(1) A=zeros(10)+10*diag(1:10)-2*tril(ones(10),-1)

(2) A=10*diag(1:5); B=diag([2 4 6 8]); B=[zeros(4,1),B]; B=[B;zeros(1,5)]

C=diag([1 3 5 7]); C=[C,zeros(4,1)]; C=[zeros(1,5);C]; A=A+B-C

(3) A=diag(1:10);B=ones(10,11);C=A*B;A=reshape(C,11,10);A(11,:)=[]

(4) A=ones(10,1)*(1:10);B=(0:9)'*ones(1,10);C=1./(A+B); format rat; C

2. E3=eye(3);R=rand(3,2);O=zeros(2,3);S=[0 1;1 0];J=ones(2);E2=eye(2);

A=[E3,R;O,S];B=[E3,R*J;O,E2];A^2-B

3. A=[1 2 1 -2;2 3 0 -1;1 -1 -5 7],b=[4 9 7]',rank([A,b])-rank(A)==0

y=null(A,'r');x=A\b;syms c1 c2; x=x+c1*y(:,1)=c2*y(:,2)

4. B=[1 -2 3;3 -1 5;2 1 -2] ,[u,v]=eig(B)

特征值 1.1991 + 1.7634i 1.1991 - 1.7634i -4.3981

特征向量 -0.0604 - 0.3963i -0.0604 + 0.3963i -0.5550

-0.8495 -0.8495 -0.4944

-0.3374 - 0.0618i -0.3374 + 0.0618i 0.6690

第二讲:函数作图

1、画曲线

◆平面曲线

(1)描点作图

x=1:0.2:6; y=x.*sin(x); 必须用点运算产生数组

plot(x,y,’ro’, x, x.*x, ‘b:’ ) 横坐标、纵坐标点数必须相等figure 打开一幅画面

subplot(1,2,1) 大画面中划分几个小画面

(2) 函数作图

fplot('[tan(x),sin(x),cos(x)]',[-6 6 -6 6])

subplot(2,2,4),

fplot('sin(1 ./ x)', [0.01 0.1], 1e-3)

(3)符号作图

显函数ezplot('cos(x)', [0, 2*pi])

隐函数ezplot('1/y-log(y)+log(-1+y)+x - 1')

参数式ezplot('sin(3*t)*cos(t)','sin(3*t)*sin(t)',[0, pi])

◆空间曲线

(1) 描点作图

t=linspace(0,4 *pi, 40); x=cos(t); y=t.*sin(t); z=2*t;

plot3(x,y,z)

(2) 符号作图

参数式ezplot3('cos(t)', 't * sin(t)', 'sqrt(t)', [0,6*pi])

2、画曲面

◆x=-8:0.1:8; y=x;

[X,Y]=meshgrid(x,y); z=X.^2/16-Y.^2/9;

mesh(x,y,z); surf(x,y,z)

◆ezmesh( 'x*exp(-x^2 - y^2)' )

ezsurf( 'exp(-s)*cos(t)', 'exp(-s)*sin(t)', 't', [0,8,0,4*pi] ) 3、动画

getframe 抓拍画面

movie 播放画面

例:旋轮线的生成

clear; clf;

t=linspace(0,2*pi,96);

x=t-sin(t); y=1-cos(t);

plot(x,y,'r', [-1.1, 2*pi+1.1],[0,0], 'k',[0,0], [-1, 3], 'k');

axis equal;

pause

for k=1:96

plot(x(1:k), y(1:k),'r', [-1.1,2*pi+1.1],[0,0],'k', [0,0],[-1,3],'k');

text(2.7,3.3,'Cycloid'); axis equal; hold on;

plot(t(k)+cos(t),1+sin(t),'b', x(k),y(k),'k.', [t(k),x(k)],[1,y(k)],'b');

m(k)=getframe;

hold off

end

movie(m,0)

练习二:函数作图

1、 画出下列函数表示的曲线:

(1) 22),2sin(2

2≤≤---=x x x x y (使用plot 和fplot 两种方法),相应于

2,5.1,1,5.0,0,5.0,1,5.1,2----=x 的曲线上的点用红色空心圆点标出

(2) 三条曲线画在一幅图上:)0(,sin ,3sin sin ,sin π≤≤-===x x y x x y x y ,

每条曲线加注标记区分;

(3) 空间曲线 π20,

2cos ,cos ,sin ≤≤===t t z t y t x ;

(4) 椭圆 19

42

2=+y x (使用两种方法)。 2、画出下列曲面图形

(1) 旋转抛物面 3,3,2

2≤≤-+=y x y x z ;

(2) 曲面

132,33,622232

224≤≤-≤≤-+---++=y x y x y x y x x z ; (3) 一幅图上同时画上半球面42

22=++z y x 与柱面

1)1(22=+-y x )20(≤≤z ;

(4) * 试画曲面)2/sin(,sin 3),2/cos(cos 3t u z t y t u t x ==+=,)11,20(≤≤-≤≤u t π,

这是什么曲面? 解答: 1(1) x=-2:0.1:2;

y=x.^2.*sin(x.^2-x-2); plot(x,y); hold on x1=-2:0.5:2

y1=x1.^2.*sin(x1.^2-x1-2); plot(x1,y1,'ro') hold off figure

fplot('x^2*sin(x^2-x-2)',[-2,2])

hold on

plot(x1,y1,'ro')

hold off

1(2)

x=linspace(0,pi,50);

y1=sin(x);

y2=sin(x).*sin(3*x);

y3=-sin(x);

plot(x,y1,x,y2,x,y3)

legend('sin(x)','sin(x)sn(3x)','-sin(x)')

1(3)

ezplot3('sin(t)','cos(t)','cos(2*t)',[0,2*pi]) 1(4)

t=linspace(0,2*pi,50);

x=2*cos(t);y=3*sin(t);

plot(x,y);axis equal; axis([-4,4,-3.5,3.5])

ezplot('2*cos(t)','3*sin(t)',[0,2*pi]);axis equal;

ezplot('x^2/4+y^2/9-1'),axis equal; axis([-4,4,-3.5,3.5])

2(1)

ezmesh('x^2+y^2',[-3,3,-3,3])

(2)

ezmesh('x^4+3*x^2+y^2-2*x-2*y-2*x^2*y+6',[-3,3,-2,13])

(3)

ezmesh('1+cos(t)','sin(t)','z',[0,2*pi,0,2]);

axis equal; hold on

ezmesh('2*sin(s)*cos(t)','2*sin(s)*sin(t)','2*cos(s)',[0,pi/2,0,2*pi])

hold off

ezsurf('cos(t)','-1+sin(t)','z',[0,2*pi,0,2]);axis equal; hold on

ezsurf('2*sin(s)*cos(t)','2*sin(s)*sin(t)','2*cos(s)',[0,pi/2,0,2*pi]) hold off

h1=ezsurf('1+cos(t)','sin(t)','u',[0,2*pi,0,2]);

hold on; axis equal; axis([-2,2,-2,2,0,2]);axis off;

h2=ezsurf('2*sin(s)*cos(t)','2*sin(s)*sin(t)','2*cos(s)',[0,pi/2,0,2*pi]); hold off

view(130,10)

light('position',[2,1,2]);lighting phong

shading interp; camlight(-220,-170)

set(h2,'facecolor',[0,0.8,0])

set(h1,'facecolor',[1,0,0])

(4)

ezmesh('3*cos(t)+u*cos(t/2)','3*sin(t)','u*sin(t/2)',[0,2*pi,-1,1]);axis([-4 4 -4 4 -3 3]) % 单侧曲面(如Mobius曲面)

hold on

t=linspace(0,2*pi,60);

x=3*cos(t)+cos(t/2);y=3*sin(t);z=sin(t/2);

x1=3*cos(t)-cos(t/2);y1=3*sin(t);z1=-sin(t/2);

plot3(x,y,z,'k','linewidth',3)

plot3(x1,y1,z1,'k','linewidth',3)

hold off

ezplot3('3*cos(t)+cos(t/2)','3*sin(t)','sin(t/2)',[0,2*pi]);hold on

ezplot3('3*cos(t)-cos(t/2)','3*sin(t)','-sin(t/2)',[0,2*pi])

第三讲:符号演算符号演算:

1、定义符号变量syms a b c x y

2、极限limit(f,x,0)

3、导数、偏导数diff(f,x,n)

4、不定积分、定积分int(f,x) int(f,a,b)

5、级数展开taylor(f,n,x,x0)

6、求和symsum(f,k,1,n)

7、方程求根x=solve(f)

8、微分方程求解dsolve(‘eqn’,’x’)

9、代入subs(f,x,a)

10、化简simplify simple

11、优美格式 pretty(f) 12、显示数据 vpa(x,n)

练习三:符号运算

用MATLAB 符号运算做下列各题

1、 求极限 h x h x L h )

ln()ln(lim 0-+=→,n

n n a M ??

? ??-=∞→1lim ,1/0(1)lim x

x e x P x →-+=

2、 求和 ∑==n

k k S 1

2

1,∑∞

==1221k k S ,∑∞=-=23)1(n n n n x S

3、

)ln(2

2

x a x y ++=求导数)

5(y

并化简、求偏导数 )

3,1,1(2

2

3)sin(yz x y

x ???

4、 求不定积分 x x x x I d )22(1

2

22?+-+= ,)()

ln ln (d b a x b x a x x J ≠+++=?

5、 求定积分 ?+∞

-=0d 2

x e I x ,含参积分?-+-=x

x

y y x y x x I d )2sin()()(3

6、 试求正弦函数x y sin =的n 次麦克劳林展开式)11,9,7,5,3(=n ,在同一幅图上画出正弦

数以及它的n 次麦克劳林多项式的图像,观察逼近情况。 7、 试求方程或方程组的解:

(1) 3242310x x x --+=; (2) 222u v pq

u v p q ?+=?-=+?

8、 试解常微分方程:

(1)???=+=.0)2/π(,sin 'x t x x (2)2'',(0)1,'(π/a)0.y a y y y ?=-?==?

(3)???==-==1)0(,0)0(,

','y x x y y x ,y x ,是t 的函数。

相关文档