当前位置:文档之家› MATLAB实验指导书加程序+上机实例

MATLAB实验指导书加程序+上机实例

MATLAB实验指导书加程序+上机实例
MATLAB实验指导书加程序+上机实例

************************ MATLAB语言实验指导书************************

华东交通大学电气学院

张永贤

2006年2月

实验一 MATLAB 工作环境熟悉及简单命令的执行

一、实验目的:熟悉MATLAB 的工作环境,学会使用MATLAB 进行一些简单的运算。 二、实验内容:MATLAB 的启动和退出,熟悉MATLAB 的桌面(Desktop ),包括菜单(Menu )、

工具条 (Toolbar )、命令窗口(Command Window)、历史命令窗口、工作空间(Workspace)

等;完成一些基本的矩阵操作;学习使用在线帮助系统。

三、实验步骤:

1、启动MATLAB ,熟悉MATLAB 的桌面。

2、在命令窗口执行命令完成以下运算,观察workspace 的变化,记录运算结果。 (1)(365-522-70)3 (2)>>area=pi*^2

(3)已知x=3,y=4,在MATLAB 中求z :

()

2

3

2y x y x z -= (4)将下面的矩阵赋值给变量m1,在workspace 中察看m1在内存中占用的字节数。

m1=????

?

????

???11514412679810115133216 执行以下命令 >>m1( 2 , 3 ) >>m1( 11 ) >>m1( : , 3 )

>>m1( 2 : 3 , 1 : 3 )

>>m1( 1 ,4 ) + m1( 2 ,3 ) + m1( 3 ,2 ) + m1( 4 ,1) (5)执行命令>>help abs

查看函数abs 的用法及用途,计算abs( 3 + 4i ) (6)执行命令

>>x=0::6*pi; >>y=5*sin(x); >>plot(x,y)

(6)运行MATLAB 的演示程序,>>demo ,以便对MATLAB 有一个总体了解。

四、思考题

1、以下变量名是否合法为什么 (1)x2 (2)3col (3)_row (4)for

2、求以下变量的值,并在MATLAB 中验证。 (1)a = 1 : 2 : 5 ;

(2)b = [ a' a' a' ] ; (3)c = a + b ( 2 , : )

实验二 MATLAB 语言矩阵运算

一、实验目的:掌握基本的矩阵运算及常用的函数。 二、实验内容:

??????=654321a ??????-=531142b ????

?

?????-=201c ??????????=063258741d 1、下列运算是否合法,为什么如合法,结果是多少 (1) result1 = a'

(2) result2 = a * b (3) result3 = a + b (4) result4 = b * d

(5) result5 = [b ; c' ] * d (6) result6 = a . * b (7) result7 = a . / b (8) result8 = a . * c (9) result9 = a . \ b (10) result10 = a . ^2 (11) result11 = a ^2 (12) result11 = 2 . ^ a

2、用MATLAB 求下面的的方程组。

(1)????

????????-=??????????????????????

???----01741323151122231592127

4321x x x x (2)???????=-++=--=-++=++5

6533332821

w z y x w y x w z y x z y x

3、已知????

?

????

???----=1323151122231592127

A (1)求矩阵A 的秩(rank)

(2)求矩阵A 的行列式(determinant) (3)求矩阵A 的逆(inverse)

(4)求矩阵A 的特征值及特征向量(eigenvalue and eigenvector) 4、关系运算与逻辑运算 已知a=20,b=-2,c=0,d=1

(1) r1 = a > b

(2) r2 = a > b & c > d

(3) r3 = a == b* (-10) (4) r4 = ~b | c

三、思考题

10991010

10

22222++++==

---=∑ n n y ,求y=(用format long 查看y 的值)

实验三 程序的编辑及调试

一、实验目的:掌握MATLAB 程序编辑、运行及调试方法。

二、实验内容:

1、启动MATLAB 后,点击File|New|M-File ,启动MATLAB 的程序编辑及调试器

(Editor/Debugger ),编辑以下程序,点击File|Save 保存程序,注意文件名最好用英文字符。点击Debug|Run 运行程序,在命令窗口查看运行结果,程序如有错误则改正。 注:数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。重复此过程,最终得到的结果为1。如: 21

3105168421

63105168421

运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。

%classic "3n+1" problem from number theory. while 1

n=input('Enter n,negative quits:'); if n<=0 break end a=n; while n>1

if rem(n,2)==0 n=n/2; else

n=3*n+1; end a=[a,n]; end a end

2、编程求满足∑=>m

i i 1

100002的最小m 值。 三、思考题

用对分法求解方程

x e x sin 2=-在[0,1]内的解,并验证,在程序中统计出对分次数。 提示:先将原方程转化成

0sin 2)(=-=-x e x f x 的形式。

对分法的基本思想是:一个一元方程f(x)=0,若f(x1)*f(x2)<0,则在[x1,x2]区间内

有实数解。取该区间的中点xm=(x1+x2)/2,判定f(x1)和f(x2)二者中哪一个与f(xm)异号,

若f(x1)*f(xm)<0,则解存在的区间缩小为[x1,xm],否则解存在的区间缩小为[xm,x2]。重复这样的步骤,直到区间的长度小于一个可以接受的小数(比如1e-10),则认为中点即是原方程的解。

实验四 函数的编写及调试

一、实验目的:掌握MATLAB 函数的编写及调试方法。 二、实验内容:

1、编写一个函数,计算下面函数的值,给出标量x 的值,调用该函数后,返回y 的值。

function [y]=myfun1(x)

??

???>+-≤<≤=3

,630,

0,sin )(x x x x x x x y

选择一些数据测试你编写的函数。

2、编写一个函数求向量x 中元素的平均值、最大值、最小值、均方根值。

function [m_x,max_x,min_x,rms_x]=myfun2(x)方均根值(Root

Mean Square)的计算公式为:

∑==

N

i i x N

rms 1

21

用下面数据测试你写的函数:

(1)x=sin(0::6*pi)

(2)x=rand(1,200),得到的x 为200个(0,1)之间均匀分布的随机数。

3、编写一个函数,给出一个向量],,[21n x x x x

=,生成如下范德蒙矩阵。

function [v]=myvander(x)???

????

?????????---11

211

2

2

22121

111

n n n n n n x x x x x x x x x

例如:>>v=myvander([2 3 4 5])

得v=

?????

???????12564278251694543211

11 生成一些数据测试你写的函数。

三、思考题

编写程序,用如下迭代公式求

a

,a 的值分别为:3,17,113。迭代的终止条件为

5n 1n 10x x -+≤-,迭代初值0.1x 0=,迭代次数不超过100次。分别对迭代结果和

计迭

1

n 1n 1n 222x 2a

2x x a x x 2a x --++=

?+=?=

实验五 MATLAB 的绘图

1、在同一坐标系下绘制下面三个函数在t [0,4]的图象。

)

sin(41.0321t e y t

y t y t -==

2、编写程序,选择合适的步距,绘制下面函数在区间[-6,6]中的图象。

??

???>+-≤<≤=3

,630,

0,

sin )(x x x x x x x y

3、用compass 函数画下面相量图

ua = 1 ; ub = cos(-2*pi/3)+sin(-2*pi/3)*i ;

uc=cos(2*pi/3)+sin(2*pi/3)*i;

compass([ua,ub,uc,ua-ub,ub-uc,uc-ua])

0.5

1 1.5

2

30

21060

240

90

270

120

300

150

330

1800

4、三维空间曲线绘制x=cos(z);

y=sin(z); plot3(x,y,z)

5、用mesh 或surf 函数,绘制下面方程所表示的三维空间曲面,x 和y 的取值范围设为[-3,3]。

10

102

2y x z +-=

三、思考题

在同一坐标系下,用不同颜色和线型绘制以下两个函数在t

[-2,2]范围内的图象。

t

5.012

y = t

2.02e 2y -=

实验六 MATLAB 数值运算

一、实验目的:掌握MATLAB 常用的数值运算函数。

二、实验内容:

1、求代数方程

012927432345=+++++x x x x x 的5个根,并将其用星号(*)标记在复平面图上。(用roots 和plot 函数)。

2、求代数方程015

=-x 的5个根,并将其用星号(*)标记在复平面图上。(用roots 和plot 函数)。

3、求下面函数在[,4]区间内的过零点。(用fzero 函)

x x x x x x x f 1

)cos(5)sin(2)(23++-=

4、

已知R=50欧姆,U=4V ,二极管D 正向电流与电压的关系为:

???

? ??-=1KT q U s d d e

I I

其中:

U d 为二极管正向电压

I s 为反向饱合电流,取10-12

A

K 为玻尔茨曼常数,*10-23

T 为绝对温度,取300开尔文(27摄氏度)

q为电子电荷*10-19C

求此电路中的电流I d和二极管正向电压U d(要求用fsolve函数求解)

5、实验数据处理:已知某压力传感器的测试数据如下表

p

u1011131417182224293439 p为压力值,u为电压值,试用多项式d

cp

bp

ap

p

u+

+

+

=2

3

)

(来拟合其特性函数,求出a,b,c,d,并把拟合曲线和各个测试数据点画在同一幅图上。

实验七 MATLAB应用

1、以原点为奇对称中心的方波y(wt),可以用相应频率的基波及其奇次谐波合成。

,3,2,1

)1

2

sin(

)1

2(

1

5

sin

5

1

3

sin

3

1

sin

4

)

(

=

?

?

?

?

?

?

-

-

+

+

+

+

=

n

wt

n

n

wt

wt

wt

wt

y

π

取的阶数越多,越接近方波,但总消除不了边缘上的尖峰,这称为吉布斯效应。设方波频率为50Hz,时间t取0~秒(f=50Hz,w=2*pi*f,h=1e-5,tf=40e-3,t = 0:h:tf),编写程序,画出如下用1次谐波、1,3次谐波、1,3,5,7,9次谐波,1,3,5,…,19次谐波合成的近似方波。(产生方波的函数为:square)

2、用Simulink求解下图所示电路0~100微秒内的响应。已知R=6*10-4欧,C=1700

微法,L=6*10-9享,u

c

(0)=15kV。

Scope1

Scope

1

s

Integrator1

1

s

Integrator

R

Gain2

1/L

Gain1

-1/C

Gain

UL

i

i

i

Uc

Uc

模块参数设置:

Integrator1的Initial condition:15kV

在命令窗口为R,L,C赋值。

仿真参数设置如下:

Start time:0

Stop time:100e-6

Solver Type:Variable-step

Solver:ode45

Max step size:1e-7

Min step size:auto

Initial step size:auto

Relative tolerance:1e-3

Absolute tolerance:1e-6

MATLAB实验程序

实验1

第1题.

(1)

x=2*sin(85*pi/180)/(1+exp(2))

x =

(2).

x=[2 1+2i; 5];

y=*log(x+sqrt(1+x^(2)))

y =

- +

+ -

x=[2 1+2i; 5];

d=*log(x+sqrt(1+x*x))

d =

- +

+ -

x=[2 1+2*i; 5];

y=*log(x+sqrt(1+x^(2)))

y =

- +

+ -

(3).

a=::;

g=(exp*a)-exp*a)).*sin(a+/2+log(+a)/2)

结果略

(4)

>> t=0::;

>> f1=t.^2;

>> f2=t.^2-1;

>> f3=t.^2-2*t+1;

>> z=(t>=0&t<1).*f1+(t>=1&t<2).*f2+(t>=2&t<3).*f3 z =

0 0

第2题

(1)

>> A=[12 34 -4;34 7 87;3 65 7];

>> B=[1 3 -1;2 0 3;3 -2 7];

>> A+6*B

ans =

18 52 -10

46 7 105

21 53 49

>> A-B+eye(3)

ans =

12 32 -2

33 8 85

1 68 1

(2)

>> A*B

ans =

68 44 62

309 -72 596

154 -5 241

>> A.*B

ans =

12 102 4

68 0 261

9 -130 49

(3)

>> A^3

ans =

37226 233824 48604 247370 149188 600766 78688 454142 118820 >> A.^3

ans =

1728 39304 -64 39304 343 658503 27 274625 343 (4)

>> A/B

ans =

>> B\A

ans =

(5)

>> [A,B]

ans =

12 34 -4 1 3 -1 34 7 87 2 0 3 3 65 7 3 -2 7 >> [A([1,3],:);B^2]

ans =

12 34 -4

3 65 7

4 5 1

11 0 19

20 -5 40

第3题

>> A=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20;21 22 23 24 25];

>> B=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11];

>> C=A*B

C =

93 150 77

258 335 237

423 520 397

588 705 557

753 890 717

>> D=C(3:5,2:3)

D =

520 397

705 557

890 717

第4题

(1)

>> a=100:999;

>> k=find(rem(a,21)==0); %找出能杯21整除的元素位置,find()函数找出不为0的元

素位置

>> x=length(k) %获得向量k的元素个数并赋值给变量x

x =

43

>> k=find(rem(a,21)==0) %显示能杯21整除的元素位置

k =

Columns 1 through 24

6 2

7 4

8 6

9 90 111 132 153 174 195 216 237 258 279 300 321 342 363 384 405 426 447 468 489

Columns 25 through 43

510 531 552 573 594 615 636 657 678 699 720 741 762 783 804 825 846 867 888

>> y=100+k-1 %显示能杯21整除的元素

y =

Columns 1 through 23

105 126 147 168 189 210 231 252 273 294 315 336 357 378 399 420 441 462 483 504 525 546 567

Columns 24 through 43

588 609 630 651 672 693 714 735 756 777 798 819 840 861 882 903 924 945 966 987

(2)

sh='CDe345Efg69K';

>> k=find(sh>='A'&sh<='Z');%找出大写字母的位置

>> sh(k)=[]; %删除大写字母

>> x=sh(1:end) %显示处理后的字符

x =

e345fg69

实验2

第1题

a=[1 2 3;4 5 6];

b=[2 4 -1;1 3 5];

c=[1;0;-2];

d=[1 4 7;8 5 2;3 6 0];

>> result1=a' % a的转置

result1 =

1 4

2 5

3 6

>> result2=a*b %error 应采用点乘

>> result3=a+b %求两个矩阵的和

result3 =

3 6 2

5 8 11

>> result4=b*d %矩阵相乘

result4 =

31 22 22

40 49 13

>> result5=[b;c']*d

result5 =

31 22 22

40 49 13

-5 -8 7

>> result6=a.*b %%矩阵点乘

result6 =

2 8 -3

4 1

5 30

>> result7=a./b %矩阵右点除

result7 =

>> result8=a.*c %error a和c维数不同>> result9=a.\b %%矩阵左点除

result9 =

>> result10=a.^2

result10=

1 4 9

16 25 36

>> result11=a^2 %error 等价于a*a

>> result12=2.^a

result12 =

2 4 8

16 32 64

第2题

(1)

>> A=[7 2 1 -2;9 15 3 -2;-2 -2 11 5;1 3 2 13];

>> B=[4;7;-1;0];

>> X=inv(A)*B %A\B等价于inv(A)*B, A/B等价于A*inv(B)

X =

>> X1=A\B

X1 =

(2)

>> a=[1 1 1 0;1 2 1 -1;2 -1 0 -3;3 3 5 -6];

>> b=[1;8;3;5];

>> x=inv(a)*b

x =

第3题

>> A=[7 2 1 -2;9 15 3 -2;-2 -2 11 5;1 3 2 13];

>> a1=rank(A)

a1 =

4

>> a2=det(A)

a2 =

12568

>> a3=inv(A)

a3 =

>> [V,D]=eig(A) %V为向量A的特征向量,D为特征值

V =

+ -

+ -

- +

D =

0 0 0 0 + 0 0

0 0 - 0

0 0 0 第4题

>> a=20;

>> b=-2;

>> c=0;

>> d=1;

>> r1=a>b

r1 =

1

>> r2=a>b&c>d

r2 =

>> r3 = a == b* (-10)

r3 =

1

>> r4 = ~b | c

r4 =

5

>> y=0;

for k=-10:10

y=y+pow2(k);

end

format long

>> y

y =

+003

实验3

方法一

a=0;

for i=1:20

a=a+pow2(i);

if a>10000

m=i;

break

end

end

m

方法二

a=0;

i=1;

while (a<10000)

a=a+pow2(i);

i=i+1;

end

m=i-1;

m

实验4

第1题

function [y]=myfun1(x)

if x<=0

y=sin(x);

elseif x>0&x<=3

y=x;

elseif x>3

y=-x+6;

end

运行结果:

>> [y]=myfun1(-pi/2)

y =

-1

>> [y]=myfun1(0)y =

>> [y]=myfun1(2)

y =

2

>> [y]=myfun1(4)

y =

2

第2题

function [m_x,max_x,min_x,rms_x]=myfun2(x) %求平均值

sum_x=sum(x); %向量元素求和

[m,n]=size(x); %最好用n=length(x);

m_x=sum_x/n;

%求最大值采用逐个比较方式

if x(1)>x(2)

max_x=x(1);

else

max_x=x(2);

end

for k=3:n

if max_x

max_x=x(k);

else

max_x=max_x; %可省略

end

end

%求最小值

if x(1)

min_x=x(1);

else

min_x=x(2);

end

for k=3:n

if min_x>x(k)

min_x=x(k);

else

min_x=min_x; %可省略

end

end

%求均方根值

sum_x2=0;

for k=1:n

sum_x2=sum_x2+x(k).^2;

rms_x=sqrt(sum_x2/n);

end

m_x;

max_x;

min_x;

rms_x; %按照函数值行参顺序输出结果

运行结果:

>> [m_x,max_x,min_x,rms_x]=myfun2(sin(0::6*pi)) m_x =

max_x =

min_x =

rms_x =

>> [m_x,max_x,min_x,rms_x]=myfun2(rand(1,200)) m_x =

max_x =

min_x =

rms_x =

第3题

function [v]=myvander(x)

v1=vander(x); %生成范德蒙矩阵

v2=v1';

v=flipud(v2); %实现矩阵上下翻转

运行结果:

>> [v]=myvander(2:5)

v =

1 1 1 1

2 3 4 5

4 9 16 25

8 27 64 125

思考题

function [x,n]=sqrt_a(a)

x=;

for k=1:100

m=x;

x=x/2+a/(2*x);

if abs(x-m)<=10^(-5)

break

end

end

x;

n=k;

s=(x-sqrt(a));

if s<=10^(-5)

disp('正确');

else

disp('错误');

end

运行结果:

>> [x,n]=sqrt_a(3)

正确

x =

n =

5

>> [x,n]=sqrt_a(17)

正确

x =

n =

6

>> [x,n]=sqrt_a(113)

正确

x =

n =

8

实验5

第1题.

方法1

>> t=linspace(0,4*pi,200);

y1=t;

y2=sqrt(t);

y3=4*pi*exp*t).*sin(t);

plot(t,y1,'b',t,y2,'g',t,y3,'r') 方法2

>> t=linspace(0,4*pi,200);

y1=t;

y2=sqrt(t);

y3=4*pi*exp*t).*sin(t);

t=[t,t,t];

y=[y1,y2,y3];

plot(t,y)

第2题

>> x=linspace(-6,6,100);

y=[];

for x0=x

if x0<=0

y=[y,sin(x0)];

elseif x0<=3

y=[y,x0];

else

y=[y,-x0+6];

end

end

plot(x,y);

axis([-7 7 -2 4]);

title('分段函数曲线');

text(-3*pi/2,1,'y=sin(x)');

text(2,2,'y=x');

text(4,2,'y=-x+6');

第3题

ua=1;

ub=cos(-2*pi/3)+sin(-2*pi/3)*i;

uc=cos(2*pi/3)+sin(2*pi/3)*i; compass([ua,ub,uc,ua-ub,ub-uc,uc-ua]) title(‘相量图’);

第4题

>> z=0::4*pi;

x=cos(z);

y=sin(z);

plot3(x,y,z,'rp');

title('三维空间曲线');

text(0,0,0,'origin');

xlabel('X'),ylabel('Y'),zlabel('Z'); grid;

第5题

(1)

>>x=-3::3;

[x,y]=meshgrid(x);

z=-x.^2/10+y.^2/10;

mesh(x,y,z);

xlabel('X'),ylabel('Y'),zlabel('Z'); title('立体网状图');

(2)

>>x=-3::3;

[x,y]=meshgrid(x);

z=-x.^2/10+y.^2/10;

surf(x,y,z);

xlabel('X'),ylabel('Y'),zlabel('Z'); title('立体曲面图');

思考题

>> t=-2*pi:pi/100:2*pi;

y1=2.^*abs(t));

y2=2*exp*t);

plot(t,y1,'-g');

hold on;

plot(t,y2,':r');

legend('曲线y1','曲线y2');

hold off;

grid;

实验6

第1题

>> A=[3,4,7,2,9,12];

x=roots(A)

plot(x,'*');

grid;

x =

+

-

+

-

第2题

>> A=[1,0,0,0,0,-1];

x=roots(A)

plot(x,'*');

grid;

x =

+

-

+

-

第3题

%估计零点

fplot('x^3+1/x',[,4]);

hold on;

fplot('2*x^2*sin(x)-5*x*cos(x)',[,4]);

hold off;

[m,n]=ginput

%建立函数

function y=f(x)

y=x^3-2*x^2*sin(x)+5*x*cos(x)+1/x;

%调用函数

>> y1=fzero('fz',

y1 =

>> y2=fzero('fz',

y2 =

第4题

%估计零点

axis([0,1,0,]);

fplot('10^(-12)*exp(Ud**10^(-19)/*10^(-23)*300)-1)',[0,4]); hold on;

fplot('(Ud-4)/50',[0,4]);

hold off;

[m,n]=ginput

%建立函数

function f=myfun(X)

Id=X(1);

Ud=X(2);

f(1)=Id-10^(-12)*exp(Ud**10^(-19)/*10^(-23)*300)-1);

f(2)=50*Id-Ud-4;

%调用函数

>> x=fsolve('myfun',[0,],optimset('Display','off'))

x =

%验证结果

>> K=myfun(x)

K =

*

第5题

>> p=[,,,,,,,,,,];

u=[10,11,13,14,17,18,22,24,29,34,39];

x=polyfit(p,u,3) %得多项式系数

t=linspace(0,10,100);

y=polyval(x,t); %求多项式得值

plot(p,u,'*',t,y,'r') %画拟和曲线

x =

实验7

第1题

>>f=50;

w=2*pi*f;

h=1e-5;

tf=40e-3;

t=0:h:tf;

wt=w*t;

y1=4/pi*sin(wt);

y2=4/pi*(sin(wt)+1/3*sin(3*wt));

y3=4/pi*(sin(wt)+1/3*sin(3*wt)+1/5*sin(5*wt)+1/7*sin(7*wt)+1/9*sin(9*wt));

y4=4/pi*(sin(wt)+1/3*sin(3*wt)+1/5*sin(5*wt)+1/7*sin(7*wt)+1/9*sin(9*wt)+1/11*s in(11*wt)+1/13*sin(13*wt)+1/15*sin(15*wt)+1/17*sin(17*wt)+1/19*sin(19*wt));

y=square(wt);

subplot(2,2,1);

plot(wt,y1,wt,y);

title('1次谐波');

subplot(2,2,2);

plot(wt,y2,wt,y);

title('1,3次谐波');

subplot(2,2,3);

plot(wt,y3,wt,y);

title('1,3,5,7,9次谐波');

subplot(2,2,4);

plot(wt,y4,wt,y);

title('1,3,5……,19次谐波');

第2题

参数如下:

>> R=6e-4;

C=17e-4;

L=6e-9;

模块参数设置:

Integrator1的Initial condition:15kV

在命令窗口为R,L,C赋值。

仿真参数设置如下:

Start time:0

Stop time:100e-6

Solver Type:Variable-step Solver:ode45

Max step size:1e-7

Min step size:auto

Initial step size:auto Relative tolerance:1e-3 Absolute tolerance:1e-6

Matlab上机实验答案

Matlab上机实验答案 实验一 MATLAB运算基础 1. 先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。 >> z1=2*sin(85*pi/180)/(1+exp(2)) z1 = >> x=[2 1+2i; 5]; >> z2=1/2*log(x+sqrt(1+x^2)) z2 = - + + -

>> a=::; >> z3=(exp.*a)-exp.*a))./2.*sin(a++log(+a)./2) (>> z33=(exp*a)-exp*a))/2.*sin(a++log(+a)/2)可以验证z3==z33,是否都为1) z3 = Columns 1 through 5 + + + + + Columns 6 through 10 + + + + + Columns 11 through 15 + + + + + Columns 16 through 20 + + + + +

Columns 21 through 25 + + + + + Columns 26 through 30 + + + + + Columns 31 through 35 + + + + + Columns 36 through 40 + + + + + Columns 41 through 45 + + + + + Columns 46 through 50

+ + + + + Columns 51 through 55 + + + + + Columns 56 through 60 + + + + + Column 61 + (4) 2 2 4 2 01 112 2123 t t z t t t t t ?≤< ? =-≤< ? ?-+≤< ? ,其中t=0:: >> t=0::; >> z4=(t>=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3).*(t.^ 2-2.*t+1) z4 =

matlab上机习题2

实验二 基本矩阵操作 实验目的: ① 掌握matlab 变量和数据操作; ② 掌握matlab 矩阵的创立、拆分及特殊矩阵; ③ 掌握matlab 运算,掌握matlab 在矩阵分析中的应用,掌握稀疏矩阵的存储方式和创建方法; ④ 掌握矩阵的基本运算和结构体数组的创建。 ⑤ 了解字符串处理函数。 实验要求:给出程序和实验结果。 实验内容: 1、利用列向量()1,2,3,,10T 建立一个范得蒙矩阵A ,并利用位于矩阵A 的奇数行偶数列的元素建立一个新的矩阵B ,须保持这些元素的相对位置不变。 2、矩阵的基本运算与点运算的区别。 3、给出矩阵的两种存储方式的联系和区别,这两种存储方式在实际应用中主要应用于具有什么特点的矩阵? 4*.将字符串'very good'转换为等值的整数。 5.按水平和竖直方向分别合并下述两个矩阵: 6. 分别删除第5题两个结果的第2行。 7. 分别将第5题两个结果的第2行最后3列的数值改为[11 12 13]。 8. 分别查看第5题两个结果的各方向长度。 9*. 分别判断pi 是否为字符串和浮点数。 10.分别将第5题两个结果均转换为2?9的矩阵。 11.计算第5题矩阵A 的转置。 12.分别计算第5题矩阵A 和B 的A +B 、A .* B 和A \B 。 13.判断第5题矩阵A 和B 中哪些元素值不小于4。 14*.分别用函数strcat()和矩阵合并符合并如下字符串:' The picture is '和' very good '。 15*.创建字符串数组,其中元素分别为‘Picture ’和'Pitch '。 16*.在第14题结果中查找字符串'e'。 17*.在第15题结果中匹配字符串'Pi'。

MATLAB上机实验(答案)

MATLAB工具软件实验(1) (1)生成一个4×4的随机矩阵,求该矩阵的特征值和特征向量。程序: A=rand(4) [L,D]=eig(A) 结果: A = 0.9501 0.8913 0.8214 0.9218 0.2311 0.7621 0.4447 0.7382 0.6068 0.4565 0.6154 0.1763 0.4860 0.0185 0.7919 0.4057 L = -0.7412 -0.2729 - 0.1338i -0.2729 + 0.1338i -0.5413 -0.3955 -0.2609 - 0.4421i -0.2609 + 0.4421i 0.5416 -0.4062 -0.0833 + 0.4672i -0.0833 - 0.4672i 0.4276 -0.3595 0.6472 0.6472 -0.4804 D = 2.3230 0 0 0 0 0.0914 + 0.4586i 0 0 0 0 0.0914 - 0.4586i 0 0 0 0 0.2275 (2)给出一系列的a值,采用函数 22 22 1 25 x y a a += - 画一组椭圆。 程序: a=0.5:0.5:4.5; % a的绝对值不能大于5 t=[0:pi/50:2*pi]'; % 用参数t表示椭圆方程 X=cos(t)*a; Y=sin(t)*sqrt(25-a.^2); plot(X,Y) 结果: (3)X=[9,2,-3,-6,7,-2,1,7,4,-6,8,4,0,-2], (a)写出计算其负元素个数的程序。程序: X=[9,2,-3,-6,7,-2,1,7,4,-6,8,4,0,-2]; L=X<0; A=sum(L) 结果: A =

实例matlab-非线性规划-作业

实例matlab-非线性规划-作业

现代设计方法-工程优化理论、方法与设计 姓名 学号 班级 研 问题 : 某厂向用户提供发动机,合同规定,第一、二、三季度末分别交货40台、60台、80台。每季度的生产费用为 (元),其中x 是该季生产的台数。若交货后有剩余,可用于下季度交货,但需支付存储费,每台每季度c 元。已知工厂每季度最大生产能力为100台,第一季度开始时无存货,设a=50、b=0.2、c=4,问工厂应如何安排生产计划,才能既满足合同又使总费用最低。讨论a 、b 、c 变化对计划的影响,并作出合理的解释。 问题的分析和假设: 问题分析:本题是一个有约束条件的二次规划问题。决策变量是工厂每季度生产的台数,目标函数是总费用(包括生产费用和存储费)。约束条件是生产合同,生产能力的限制。在这些条件下需要如何安排生产计划,才能既满足合同又使总费用最低。 问题假设: 1、工厂最大生产能力不会发生变化; 2、合同不会发生变更; 3、第一季度开始时工厂无存货; 4、生产总量达到180台时,不在进行生产; 5、工厂生产处的发动机质量有保证,不考虑退货等因素; 6、不考虑产品运输费用是否有厂家承担等和生产无关的因素。 符号规定: x1——第一季度生产的台数; x2——第二季度生产的台数; 180-x1-x2——第三季度生产的台数; y1——第一季度总费用; y2——第二季度总费用; y3——第三季度总费用; y ——总费用(包括生产费用和存储费)。 ()2bx ax x f +=

建模: 1、第一、二、三季度末分别交货40台、60台、80台; 2、每季度的生产费用为 (元); 3、每季度生产数量满足40 ≤x1≤100,0≤x2≤100,100≤x1+x2 ≤180; 4、要求总费用最低,这是一个目标规划模型。 目标函数: y1 2111x b x a Z ?+?= y2()4012222-?+?+?=x c x b x a Z y3()()()10018018021221213 -+?+--?+--?=x x c x x b x x a Z y x x x x x x Z Z Z Z 68644.04.04.0149201 212221321--+++=++= 40≤x1≤100 0≤x2≤100 100≤x1+x2≤180 ()2 bx ax x f +=

matlab源代码实例

1.硬币模拟试验 源代码: clear; clc; head_count=0; p1_hist= [0]; p2_hist= [0]; n = 1000; p1 = 0.3; p2=0.03; head = figure(1); rand('seed',sum(100*clock)); fori = 1:n tmp = rand(1); if(tmp<= p1) head_count = head_count + 1; end p1_hist (i) = head_count /i; end figure(head); subplot(2,1,1); plot(p1_hist); grid on; hold on; xlabel('重复试验次数'); ylabel('正面向上的比率'); title('p=0.3试验次数N与正面向上比率的函数图'); head_count=0; fori = 1:n tmp = rand(1); if(tmp<= p2) head_count = head_count + 1; end p2_hist (i) = head_count /i; end figure(head); subplot(2,1,2); plot(p2_hist); grid on; hold on; xlabel('重复试验次数'); ylabel('正面向上的比率'); title('p=0.03试验次数N与正面向上比率的函数图'); 实验结果:

2.不同次数的随机试验均值方差比较 源代码: clear ; clc; close; rand('seed',sum(100*clock)); Titles = ['n=5时' 'n=20时' 'n=25时' 'n=50时' 'n=100时']; Titlestr = cellstr(Titles); X_n_bar=[0]; %the samples of the X_n_bar X_n=[0]; %the samples of X_n N=[5,10,25,50,100]; j=1; num_X_n = 100; num_X_n_bar = 100; h_X_n_bar = figure(1);

河南城建学院MATLAB上机实验答案

一熟悉Matlab工作环境 1、熟悉Matlab的5个基本窗口 思考题: (1)变量如何声明,变量名须遵守什么规则、是否区分大小写。 答:变量一般不需事先对变量的数据类型进行声明,系统会依据变量被赋值的类型自动进行类型识别,也就是说变量可以直接赋值而不用提前声明。变量名要遵守以下几条规则:?变量名必须以字母开头,只能由字母、数字或下划线组成。 ?变量名区分大小写。 ?变量名不能超过63个字符。 ?关键字不能作为变量名。 ?最好不要用特殊常量作为变量名。 (2)试说明分号、逗号、冒号的用法。 分号:分隔不想显示计算结果的各语句;矩阵行与行的分隔符。 逗号:分隔欲显示计算结果的各语句;变量分隔符;矩阵一行中各元素间的分隔符。 冒号:用于生成一维数值数组;表示一维数组的全部元素或多维数组某一维的全部元素。 (3)linspace()称为“线性等分”函数,说明它的用法。 LINSPACE Linearly spaced vector. 线性等分函数 LINSPACE(X1, X2) generates a row vector of 100 linearly equally spaced points between X1 and X2. 以X1为首元素,X2为末元素平均生成100个元素的行向量。 LINSPACE(X1, X2, N) generates N points between X1 and X2. For N < 2, LINSPACE returns X2. 以X1为首元素,X2为末元素平均生成n个元素的行向量。如果n<2,返回X2。 Class support for inputs X1,X2: float: double, single 数据类型:单精度、双精度浮点型。 (4)说明函数ones()、zeros()、eye()的用法。 ones()生成全1矩阵。 zeros()生成全0矩阵。 eye()生成单位矩阵。 2、Matlab的数值显示格式

BP神经网络matlab实例(简单而经典)

p=p1';t=t1'; [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %原始数据归一化 net=newff(minmax(pn),[5,1],{'tansig','purelin'},'traingdx'); %设置网络,建立相应的BP网络 net.trainParam.show=2000; % 训练网络 net.trainParam.lr=0.01; net.trainParam.epochs=100000; net.trainParam.goal=1e-5; [net,tr]=train(net ,pn,tn); %调用TRAINGDM算法训练BP网络 pnew=pnew1'; pnewn=tramnmx(pnew,minp,maxp); anewn=sim(net,pnewn); %对BP网络进行仿真 anew=postmnmx(anewn,mint,maxt); %还原数据 y=anew'; 1、BP网络构建 (1)生成BP网络 = net newff PR S S SNl TF TF TFNl BTF BLF PF (,[1 2...],{ 1 2...},,,) R?维矩阵。 PR:由R维的输入样本最小最大值构成的2 S S SNl:各层的神经元个数。 [ 1 2...] { 1 2...} TF TF TFNl:各层的神经元传递函数。 BTF:训练用函数的名称。 (2)网络训练 [,,,,,] (,,,,,,) = net tr Y E Pf Af train net P T Pi Ai VV TV (3)网络仿真 = [,,,,] (,,,,) Y Pf Af E perf sim net P Pi Ai T {'tansig','purelin'},'trainrp'

MATLAB上机实验练习题答案

数学建模 MATLAB上机实验练习题 1、给出一个系数矩阵A[234;541;132],U=[123],求出线性方程组的一个精确解。 2、给出两组数据x=[00.30.81.11.62.3]’y=[0.820.720.630.600.550.50]’,我们可以简单的 认为这组数据在一条衰减的指数函数曲线上,y=C1+C2e-t通过曲线拟合求出这条衰减曲线的表达式,并且在图形窗口画出这条曲线,已知的点用*表示。 3、解线性方程 4、通过测量得到一组数据: 5、已知一组测量值 6、从某一个过程中通过测量得到: 分别采用多项式和指数函数进行曲线拟合。 7、将一个窗口分成四个子窗口,分别用四种方法做出多峰函数的表面图(原始数据法,临近 插值法,双线性插值法,二重三次方插值法) 8、在同一窗口使用函数作图的方法绘出正弦、余弦、双曲正弦、双曲余弦。分别使用不同的 颜色,线形和标识符。 9、下面的矩阵X表示三种产品五年内的销售额,用函数pie显示每种产品在五年内的销售额

占总销售额的比例,并分离第三种产品的切片。 X=19.322.151.6 34.270.382.4 61.482.990.8 50.554.959.1 29.436.347.0 10、对应时间矢量t,测得一组矢量y t00.30.8 1.1 1.6 2.3 y0.50.82 1.14 1.25 1.35 1.40 采用一个带有线性参数的指数函数进行拟合,y=a0+a1e-t+a2te-t,利用回归方法求出拟合函数,并画出拟合曲线,已知点用圆点表示。 11、请创建如图所示的结构数组(9分) 姓名编号指标 江明顺071023身高:176,体重:82 于越忠060134身高:168,体重:74 邓拓050839身高:182,体重:77 12、创建如图所示的元胞数组。(9分) 13、某钢材厂从1990年到2010年的产量如下表所示,请利用三次样条插值的方法计算1999年该钢材厂的产量,并画出曲线,已知数据用‘*’表示。要求写出达到题目要求的MATLAB 操作过程,不要求计算结果。 年份19901992199419961998200020022004200620082010 产量(万吨)75.99591.972105.711123.203131.669150.697179.323203.212226.505249.633256.344 14、在一次化学动力学实验中,在某温度下乙醇溶液中,两种化合物反应的产物浓度与反应时间关系的原始数据如下,请对这组数据进行三次多项式拟合,并画出拟合曲线,已知数据如下。 time=[2.55.07.510.013.017.020.030.040.050.060.070.0] res=[0.290.560.771.051.361.522.002.272.813.053.253.56]

Matlab上机实验答案 (1)

Matlab上机实验答案 实验一MATLAB运算基础 1. 先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。 >> z1=2*sin(85*pi/200)/(1+exp(2)) z1 = 0.2375 >> x=[2 1+2i;-0.45 5]; >> z2=1/2*log(x+sqrt(1+x^2)) z2 = 0.7120 - 0.0253i 0.8968 + 0.3658i 0.2209 + 0.9343i 1.2041 - 0.0044i 2.9,,2.9, 3.0

>> a=-3.0:0.1:3.0; >> z3=(exp(0.3.*a)-exp(-0.3.*a))./2.*sin(a+0.3)+log((0.3+a)./2) (>> z33=(exp(0.3*a)-exp(-0.3*a))/2.*sin(a+0.3)+log((0.3+a)/2)可以验证z3==z33,是否都为1) z3 = Columns 1 through 5 0.7388 + 3.2020i 0.7696 + 3.2020i 0.7871 + 3.2020i 0.7920 + 3.2020i 0.7822 + 3.2020i Columns 6 through 10 0.7602 + 3.2020i 0.7254 + 3.2020i 0.6784 + 3.2020i 0.6206 + 3.2020i 0.5496 + 3.2020i Columns 11 through 20 0.4688 + 3.2020i 0.3780 + 3.2020i 0.2775 + 3.2020i 0.2080 + 3.2020i 0.0497 + 3.2020i

matlab经典编程例题

以下各题均要求编程实现,并将程序贴在题目下方。 1.从键盘输入任意个正整数,以0结束,输出那些正整数中的素数。 clc;clear; zzs(1)=input('请输入正整数:');k=1; n=0;%素数个数 while zzs(k)~=0 flag=0;%是否是素数,是则为1 for yz=2:sqrt(zzs(k))%因子从2至此数平方根 if mod(zzs(k),yz)==0 flag=1;break;%非素数跳出循环 end end if flag==0&zzs(k)>1%忽略0和1的素数 n=n+1;sus(n)=zzs(k); end k=k+1; zzs(k)=input('请输入正整数:'); end disp(['你共输入了' num2str(k-1) '个正整数。它们是:']) disp(zzs(1:k-1))%不显示最后一个数0 if n==0 disp('这些数中没有素数!')%无素数时显示 else disp('其中的素数是:') disp(sus) end 2.若某数等于其所有因子(不含这个数本身)的和,则称其为完全数。编程求10000以内所有的完全数。 clc;clear;

wq=[];%完全数赋空数组 for ii=2:10000 yz=[];%ii的因子赋空数组 for jj=2:ii/2 %从2到ii/2考察是否为ii的因子 if mod(ii,jj)==0 yz=[yz jj];%因子数组扩展,加上jj end end if ii==sum(yz)+1 wq=[wq ii];%完全数数组扩展,加上ii end end disp(['10000以内的完全数为:' num2str(wq)])%输出 3.下列这组数据是美国1900—2000年人口的近似值(单位:百万)。 (1)若. 2c + = y+ 与试编写程序计算出上式中的a、b、c; 的经验公式为 t at bt y (2)若.bt 的经验公式为 y= 与试编写程序计算出上式中的a、b; y ae t (3)在一个坐标系下,画出数表中的散点图(红色五角星),c + =2中 ax bx y+拟合曲线图(蓝色实心线),以及.bt y=(黑色点划线)。 ae (4)图形标注要求:无网格线,横标注“时间t”,纵标注“人口数(百万)”,图形标题“美国1900—2000年的人口数据”。 (5)程序中要有注释,将你的程序和作好的图粘贴到这里。 clf;clc;clear %清除图形窗、屏幕、工作空间 t=1900:10:2000; y=[76 92 106 123 132 151 179 203 227 250 281]; p1=polyfit(t,y,2);%二次多项式拟合

Matlab编程与应用习题和一些参考答案

Matlab 上机实验一、二 3.求下列联立方程的解???????=+-+-=-+=++-=--+4 1025695842475412743w z y x w z x w z y x w z y x >> a=[3 4 -7 -12;5 -7 4 2;1 0 8 -5;-6 5 -2 10]; >> b=[4;4;9;4]; >> c=a\b 4.设???? ??????------=81272956313841A ,??????????-----=793183262345B ,求C1=A*B’;C2=A’*B;C3=A.*B,并求上述所有方阵的逆阵。 >> A=[1 4 8 13;-3 6 -5 -9;2 -7 -12 -8]; >> B=[5 4 3 -2;6 -2 3 -8;-1 3 -9 7]; >> C1=A*B' >> C2=A'*B >> C3=A.*B >> inv(C1) >> inv(C2) >> inv(C3) 5.设 ?? ????++=)1(sin 35.0cos 2x x x y ,把x=0~2π间分为101点,画出以x 为横坐标,y 为纵坐标的曲线。 >> x=linspace(0,2*pi,101); >> y=cos(x)*(0.5+(1+x.^2)\3*sin(x)); >> plot(x,y,'r') 6.产生8×6阶的正态分布随机数矩阵R1, 求其各列的平均值和均方差。并求该矩阵全体数的平均值和均方差。 (mean var ) a=randn(8,6) mean(a) var(a) k=mean(a) k1=mean(k) i=ones(8,6) i1=i*k1 i2=a-i1 i3=i2.*i2 g=mean(i3) g2=mean(g)

三个遗传算法matlab程序实例

遗传算法程序(一): 说明: fga.m 为遗传算法的主程序; 采用二进制Gray编码,采用基于轮盘赌法的非线性排名选择, 均匀交叉,变异操作,而且还引入了倒位操作! function [BestPop,Trace]=fga(FUN,LB,UB,eranum,popsize,pCross,pMutation,pInversion,options) % [BestPop,Trace]=fmaxga(FUN,LB,UB,eranum,popsize,pcross,pmutation) % Finds a maximum of a function of several variables. % fmaxga solves problems of the form: % max F(X) subject to: LB <= X <= UB % BestPop - 最优的群体即为最优的染色体群 % Trace - 最佳染色体所对应的目标函数值 % FUN - 目标函数 % LB - 自变量下限 % UB - 自变量上限 % eranum - 种群的代数,取100--1000(默认200) % popsize - 每一代种群的规模;此可取50--200(默认100) % pcross - 交叉概率,一般取0.5--0.85之间较好(默认0.8) % pmutation - 初始变异概率,一般取0.05-0.2之间较好(默认0.1) % pInversion - 倒位概率,一般取0.05-0.3之间较好(默认0.2) % options - 1*2矩阵,options(1)=0二进制编码(默认0),option(1)~=0十进制编 %码,option(2)设定求解精度(默认1e-4) % % ------------------------------------------------------------------------ T1=clock; if nargin<3, error('FMAXGA requires at least three input arguments'); end if nargin==3, eranum=200;popsize=100;pCross=0.8;pMutation=0.1;pInversion=0.15;options=[0 1e-4];end if nargin==4, popsize=100;pCross=0.8;pMutation=0.1;pInversion=0.15;options=[0 1e-4];end if nargin==5, pCross=0.8;pMutation=0.1;pInversion=0.15;options=[0 1e-4];end if nargin==6, pMutation=0.1;pInversion=0.15;options=[0 1e-4];end if nargin==7, pInversion=0.15;options=[0 1e-4];end if find((LB-UB)>0) error('数据输入错误,请重新输入(LB

图论算法及matlab程序的三个案例

图论实验三个案例 单源最短路径问题 Dijkstra 算法 Dijkstra 算法是解单源最短路径问题的一个贪心算法。其基本思想是,设置一个顶点集合S 并不断地作贪心选择来扩充这个集合。一个顶点属于集合S 当且仅当从源到该顶点的最短路径长度已知。设v 是图中的一个顶点,记()l v 为顶点v 到源点v 1的最短距离,,i j v v V ?∈,若 (,)i j v v E ?,记i v 到j v 的权ij w =∞。 Dijkstra 算法: ① 1{}S v =,1()0l v =;1{}v V v ??-,()l v =∞,1i =,1{}S V v =-; ② S φ=,停止,否则转③; ③ ()min{(),(,)} j l v l v d v v =, j v S ∈,v S ?∈; ④ 存在1 i v +,使 1()min{()} i l v l v +=,v S ∈; ⑤ 1{} i S S v +=U , 1{} i S S v +=-,1i i =+,转②; 实际上,Dijkstra 算法也是最优化原理的应用:如果121n n v v v v -L 是从1v 到 n v 的最 短路径,则 121 n v v v -L 也必然是从1v 到 1 n v -的最优路径。 在下面的MATLAB 实现代码中,我们用到了距离矩阵,矩阵第i 行第j 行元素表 示顶点i v 到j v 的权ij w ,若i v 到j v 无边,则realmax ij w =,其中realmax 是MATLAB 常量,表示最大的实数+308)。 function re=Dijkstra(ma) %用Dijkstra 算法求单源最短路径 %输入参量ma 是距离矩阵 %输出参量是一个三行n 列矩阵,每列表示顶点号及顶点到源的最短距离和前顶点 n=size(ma,1);%得到距离矩阵的维数 s=ones(1,n);s(1)=0;%标记集合S 和S 的补 r=zeros(3,n);r(1,:)=1:n;r(2,2:end)=realmax;%初始化 for i=2:n;%控制循环次数 mm=realmax; for j=find(s==0);%集合S 中的顶点 for k=find(s==1);%集合S 补中的顶点

matlab函数计算的一些简单例子1

MATLAB作业一1、试求出如下极限。 (1) 23 25 (2)(3) lim (5) x x x x x x x ++ + →∞ ++ + ,(2) 23 3 1 2 lim () x y x y xy x y →- → + + ,(3) 22 22 22 1cos() lim ()x y x y x y x y e+ → → -+ + 解:(1)syms x; f=((x+2)^(x+2))*((x+3)^(x+3))/((x+5)^(2*x+5)) limit(f,x,inf) =exp(-5) (2)syms x y; f=(x^2*y+x*y^3)/(x+y)^3; limit(limit(f,x,-1),y,2) =-6; (3)syms x y; f=(1-cos(x^2+y^2))/(x^2+y^2)*exp(x^2+y^2); limit(limit(f,x,0),y,0) =0 2、试求出下面函数的导数。 (1 )() y x=, (2)22 atan ln() y x y x =+ 解; (1)syms x; f=sqrt(x*sin(x)*sqrt(1-exp(x))); g= diff(f,x); g== (sin(x)*(1 - exp(x))^(1/2) + x*cos(x)*(1 - exp(x))^(1/2) - (x*exp(x)*sin(x))/(2*(1 - exp(x))^(1/2)))/(2*(x*sin(x)*(1 - exp(x))^(1/2))^(1/2)) pretty(g)= (2)syms x y; f=atan(y/x)-log(x^2+y^2) pretty(-simple(diff(f,x)/diff(f,y)))= 2 x + y =------- x - 2 y (3) 假设1 cos u- =,试验证 22 u u x y y x ?? = ???? 。 解:syms x y; u=1/cos(sqrt(x/y)); diff(diff(u,x),y)-diff(diff(u,y),x)=0; 所以: 22 u u x y y x ?? = ????

matlab程序设计实例

MATLAB 程序设计方法及若干程序实例 樊双喜 (河南大学数学与 信息科学学院开封475004) 摘要本文通过对 MATLAB 程序设计中的若干典型问题做简要的分析和总结,并在此基础上着重讨论了有关算法设计、程序的调试与测试、算法与程序的优化以及循环控制等方面的问题.还通过对一些程序实例做具体解析,来方便读者进行编程训练并掌握一些有关MATLAB 程序设计方面的基本概念、基本方法以及某些问题的处理技巧等.此外,在文章的最后还给出了几个常用数学方法的算法程序, 供读者参考使用.希望能对初学者进行 MATLAB 编程训练提供一些可供参考的材料,并起到一定的指导和激励作用,进而为MATLAB 编程入门打下好的基础. 关键字算法设计;程序调试与测试;程序优化;循环控制 1 算法与程序 1.1 算法与程序的关系算法被称为程序的灵魂,因此在介绍程序之前应先了 解什么是算法.所谓算 法就是对特定问题求解步骤的一种描述.对于一个较复杂的计算或是数据处理的问题,通常是先设计出在理论上可行的算法,即程序的操作步骤,然后再按照算法逐步翻译成相应的程序语言,即计算机可识别的语言. 所谓程序设计,就是使用在计算机上可执行的程序代码来有效的描述用于解决特定问题算法的过程.简单来说,程序就是指令的集合.结构化程序设计由于采用了模块分化与功能分解,自顶向下,即分而治之的方法,因而可将一个较复杂的问题分解为若干子问题,逐步求精.算法是操作的过程,而程序结构和程序流程则是算法的具体体现. 1.2MATLAB 语言的特点 MATLAB 语言简洁紧凑,使用方便灵活,库函数极其丰富,其语法规则与科技人员的思维和书写习惯相近,便于操作.MATLAB 程序书写形式自由,利用其丰富

matlab仿真实例

matlab 仿真实例 实验五MATLAB 及仿真实验一、控制系统的时域分析 (一)稳定性 1、系统传递函数为G(s),试判断其稳定性。 程序: >> nu m=[3,2,5,4,6]; >> den=[1,3,4,2,7,2]; >> sys=tf( nu m,de n); >> figure(1); >> pzmap(sys); >> title(' 零极点图') 由图可知:在S 右半平面有极点,因此可知系统是不稳定的。 2、用MATLA 求 出 G(s)=(s A 2+2*s+2)/(s A 4+7*s A 3+5*s+2) 的极点。 程序及结果: >> sys=tf([1,2,2],[1,7,3,5,2]); >> p=pole(sys) 矿'. 赳 _ ■ —

-6.6553 0.0327 + 0.8555i 0.0327 - 0.8555i -0.4100 (二)阶跃响应 1、二阶系统G(s)=10/s A2+2*s+10 1)键入程序,观察并记录单位阶跃响应曲线: 程序: >> sys=tf(10,[1,2,10]); >> step(sys); >> title('G(s)=10/sA2+2*s+10 单位阶跃响应曲线') 2)计算系统闭环跟、阻尼比、无阻尼振荡频率,并记录程序及结果: >> sys=tf(10,[1,2,10]); >> p=pole(sys)

p = -1.0000 + 3.0000i -1.0000 - 3.0000i >> [wn,z]=damp(sys) wn = 3.1623 3.1623 z = 0.3162 0.3162 3)记录实际测取的峰值大小,峰值时间和过渡过程时间,并填表实际值理论值峰值Cmax 1.35s 峰值时间tp 1.05s 过渡时间+5% 3.54s ts +2% 3.18s 程序: >> sys=tf(10,[1,2,10]); >> step(sys); >> title('G(s)=10/sA2+2*s+10 单位阶跃响应曲线')

MATLAB上机题汇总(基本题,抽3题)合肥学院

1设置matlab 的工作环境,将工作目录设置为d:\work ,添加搜索目录d:\example 2在matlab 的命令窗口里完成如下计算,其中t 的值分别取-1,0,1,表达式如下: 4/3)2 t y e π-= 3自行产生一个5行5列的数组,得到最中间的三行三行矩阵。 4用magic 产生一个5*5的矩阵,将这个矩阵的第二行与第三行互换位置 5求方程组的根 x 1+4x 2-3x 3=2 2x 1+5x 2-x 3=11 x 1+6x 2+x 3=12 6已知:一个多项式的系数向量是p=[1 -6-72 -27],求这个多项式的根。 7已经两个多项式的系数分别是:[1 2 3 4]和[1 4 9 16],请求这两个多项式的乘积,及商和余数。 8给定一个多项式的根是[-5 -3+4i -3-4i],求原来的多项式 9 A=[2 3 4; 1 5 7; 6 2 5] 用什么函数,保证第一列排序的时候,其他列跟着变化。最后的结果是: [1 5 7; 2 3 4; 6 2 5] 10补充题:电路分析 电路分析常常涉及到对方程组的求解,这些方程常常是利用描述电流进入和离开节点的电流方程,或者描述电路中网络回路上的电压的电压方程得出的。下图描述了3个回路电压的方程

方程式如下: 11121222132423432 532()0()()0()0V R I R I I R I I R I R I I R I I R I V -++-=??-++-=??-++=? 假设5个电阻值为已知,2个电压值也为已知,求3个电流值。 11自行产生一个5行5列的数组,用两种方法得到最中间的三行三行矩阵。 12根据a=reshape(-4:4,3,3)做一个矩阵,然后(1)取出所有大于0的元素构成一个向量(可推广到从一个矩阵里筛选出符合条件的元素组成一个向量)(2)将原矩阵中大于0的元素正常显示,而小于等于0的元素全部用0来表示(可推广到将原矩阵中不符合条件的全用0来表示,符合条件的值不变)。(思考:大于0的正常显示,小于等于0的用-10来表示) 13建立如下一个元胞数组,现在要求计算第一个元胞第4行第2列加上第二个元胞+第三个元胞里的第二个元素+最后一个元胞的第二个元素。 a={pascal(4),'hello';17.3500,7:2:100} 14建立一个结构体的数组,包括3个人,字段有姓名,年龄,分数,其中分数由随机函数产生一个3行10列的数据表示了有10门课程,每门课程有三个阶段的分数。问题是: 问题1,如何找到第2个人的分数并显示出来 问题2,如何找到第2个人的每门课程3个阶段的平均分数并显示出来 问题3,全班同学(指这3个学生)的10门课程的每门课程的平均分如何计算出来?要求放到一个数组里。 问题4,找到这个班所有同学的姓名放到一个元胞数组里 15给定一个图像文件,格式是jpg ,通过inportdata 引入这个文件,查看引入后数据保存是一个数组,是100*100*3的一个数组,这是一个三维的数组,表明有100*100个点,每个点有RGB 三个方面决定的。现在,要求将这些点的中间部分30个象素宽度的正方形用黑点表示。 16手动构造一个长宽页是1000*1000*3的图像,每个图像的点有三个0-255之间的随机值构成。然后使用image 函数显示这个图像,再用imwrite 函数保存这个图像,使这个图像用图片浏览器也能够查看。 17给定一个矩阵 a = 1 2 3 4 5 6 编写一个M 函数,要求输入是a ,输出有三个:平均数,标准差,秩。程序运行

matlab函数计算的一些简单例子2

MATLAB 作业二 1、请将下面给出的矩阵A 和B 输入到MATLAB 环境中,并将它们转换成符号矩阵。若某一 矩阵为数值矩阵,另以矩阵为符号矩阵,两矩阵相乘是符号矩阵还是数值矩阵。 57651653 5501232310014325462564206441211346,3 9636623 51521210760077410120172440773 473 78 124867217110 7 681 5A B ???? ?????????? ????? ?==?????? ????? ?---????????--??? ? 解:A 转换为符号矩阵;a=sym(A) a=[5,7,6,5,1,6,5] [2,3,1,0,0,1,4][6,4,2,0,6,4,4][3,9,6,3,6,6,2][10,7,6,0,0,7,7][7,2,4,4,0,7,0][4,8,6,7,2,1,7]B 转换为符号矩阵;b=sym(B)b = [3,5,5,0,1,2,3][3,2,5,4,6,2,5][1,2,1,1,3,4,6][3,5,1,5,2,1,2][4,1,0,1,2,0,1][-3,-4,-7,3,7,8,12][1,-10,7,-6,8,1,5] 若某一矩阵为数值矩阵,另以矩阵为符号矩阵,两矩阵相乘是符号矩阵例;a*B= [48,3,64,48,159,106,194][17,-26,47,-8,62,26,59][48,-8,52,12,108,64,124][59,22,41,69,151,101,184][43,-22,91,13,175,121,220][22,39,4,53,88,94,147][75,11,115,36,151,70,151] 2、利用MATLAB 语言提供的现成函数对习题1中给出的两个矩阵进行分析,判定它们是否 为奇异矩阵,得出矩阵的秩、行列式、迹和逆矩阵,检验得出的逆矩阵是否正确。 解:由于a=det(A)=3.7396e+04;故A 是非奇异矩阵。B=det(B)=0,故B 是奇异矩阵; 由于a=rank(A)=7,故A 的秩为7;由于b=rank(B)=5,故B 的秩为5;由于a=trace(A)=27,b=trace(B)=26,故A,B 的迹为27,26;由a=inv(A)得A 的逆矩阵如下;

Matlab作业

《Matlab/Simulink电力系统建模与仿真》 上机实验报告 班级:15电气工程及其自动化二班 学号:154139240096 姓名:汤嘉旺 实验一:Powergui在简单电力系统潮流计算中的应用实例 1.1实验内容与要求 完成2机5节点电力系统的潮流计算,以2机5节点电力系统为模型进行Matlab/Simulink电力系统建模与仿真。并完成电力系统元件的模型选择、模型参数的计算及设置、计算结果及比较。 2机5节点电力系统图 1.2 Simulink建模原理图和主要模块参数设置 1、发电机模型 在该系统中的两台发电机均选用p.u.标准同步电机模块

“Synchronous Machine pu Standard”,该模块使用标幺值参数,以转子dq 轴建立的坐标系为参数,定子绕组为星形连接。 2、变压器模块 系统中的两台变压器均选用三相双绕组变压器模块 “Three-phase Transformer(Two Windings)”,采用Y-Y连接方式。 3、线路模块 系统中带有地导纳的线路选用三相“II”形等值模块 “Three Phase PI Section Line”,没有对地导纳的线路选用三相串联RLC支路模块“Three Phase Series RLC Branch”。 4、负荷模块 在SimPowerSystems库中,利用R、L、C的串联或并联组合,提供了两个静态三相负荷模块。这两种模块是用恒阻抗支路模拟负荷,在仿真时,在给定的频率下负荷阻抗为常数。 5、母线模块 选择带有测量元件的母线模型,及三相电压电流测量元 件“Three-Phase V-I Measurement”来模拟系统中的母线,同时方便测量流过线路的潮流,在线路元件的两端也设置了该元件。 2机5节点电力系统潮流计算仿真模型图

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