matlab练习

发布 2023-05-19 18:29:28 阅读 9249

上机练习(三)

1. 用matlab语言完成下列问题

1) 已知矩阵。

运用相关运算指令,回答下列问题。

a)分别是多少?(其中i为3×3矩阵)

b)的结果是多少?它们是否相同?为什么?

2) 分别用for和while循环结构编写程序,求出。

的结果,并写出源程序。

(3) 求出以下矩阵a的行列式、迹、秩、特征多项式和特征值。

解:(1) a+5*b-eye(3)= 8 22 35

a'+a\b= 3.9167 12.8333 21.7500

20.0000 78.0000 90.0000 (用a'+inv(a)*b也可得到结果)

b^3= 468 576 684

b.^3= 1 8 27

b^3是矩阵乘法,而 b.^3相当于给矩阵b的每一项都取立方。

(2) 在m文件中用for循环:

function suma(a,n)

sum=0;

for i=1:n

sum=sum+a^i;

end执行suma(a,5)得sum=181 182

在命令行中用while循环:

i=0;sum=0;

while(i<5)

i=i+1;

sum=sum+a^i;

end结果为:sum =181 182

(3)行列式det(a)=46

迹trace(a)=14

秩rank(a)=3

特征多项式poly(a)= 1.0000 -14.0000 47.0000 -46.0000

特征值eig(a)= 2.0000

2.考虑如下lorenz模型,其微分方程为:

其中参数为试写出该方程的s函数表示,并分别通过matlab 编程和simulink对其进行**分析并绘制图形。

解:(1)解微分方程法:

在命令行中输入:

[t,dy]=ode45('diffirental_plot_sfun',[0,30],[0;0;1]);

plot(t,dy)

得到结果如下:

其中,diffirental_plot_sfun(t,y)是编写的函数,**如下:

function dy=diffirental_plot_sfun(t,y)

dy=[-8/3*y(1)+y(2)*y(3);-10*y(2)+10*y(3);-y(1)*y(2)+28*y(2)-y(3)];

end2)用simulink的s-function builder:

结果如下:3.针对如下控制系统分别讨论和时,采用simulink**系统在单位阶跃输入下的响应,计算系统的动态性能指标;并比较二种情况下系统对单位阶跃扰动的抑制能力。

解:下图分别为k=10和k=80时系统的单位阶跃响应,易看出当k相对较小时系统无超调:

下图分别为k=10和k=80时,在系统输出稳定后,加入阶跃扰动后系统的响应曲线, 易

看出当k相对较大时系统抗扰动能力比较强:

未加入扰动时系统的动态性能指标为:

k=10时:在命令行中输入:

g1=tf([5000],[1 1000]);

g2=tf([1],[1 20 0]);

g3=tf([10],[1]);

h=tf([1],[1]);

t=feedback(g1*g2*g3,h);

dynamicperformance(t)

得到如下结果:

stablevalue=1.000000,peaktime=null, /null表示无意义;

overshoot=null, /null表示无意义;

delaytime=0.324457,risetime=0.865219,setllingtime=1.369930.

k=80时:在命令行中输入:

g1=tf([5000],[1 1000]);

g2=tf([1],[1 20 0]);

g3=tf([80],[1]);

h=tf([1],[1]);

t=feedback(g1*g2*g3,h);

dynamicperformance(t)

得到如下结果:

stablevalue=1.000000,peaktime=0.183893,overshoot=17.

083643,delaytime=0.075720,risetime=0.108172,setllingtime=0.

400237.

上述调用的函数dynamicperformance(t)是我自己写的的计算动态性能指标的通用函数,

参数t为系统的闭环传递函数, 其详细**如下:

function dynamicperformance(t)

[y,t]=step(t);

plot(t,y)

stablevalue=dcgain(t);

[ymax,k]=max(y);

if(ymax>stablevalue)

peaktime=t(k);

overshoot=100*(ymax-stablevalue)/stablevalue;

elseend

i=1;while(y(i)<0.9*stablevalue)

i=i+1;

endrisetime=t(i);

i=length(t);

while(abs(y(i)-stablevalue)<0.02*stablevalue)

i=i-1;

endsetllingtime=t(i);

i=1;while(y(i)<0.5*stablevalue)

i=i+1;

enddelaytime=t(i);

if(ymax>stablevalue)

sprintf('stablevalue=%f,peaktime=%f,overshoot=%f,ndelaytime=%f,risetime=%f,setllingtime=%f.',stablevalue,peaktime,overshoot,delaytime,risetime,setllingtime) %在m函数中必须把这句写在同一行,下同。

else sprintf('stablevalue=%f,peaktime=null,overshoot=null,ndelaytime=%f,risetime=%f,setllingtime=%f.',stablevalue,delaytime,risetime,setllingtime)end

matlab练习

1 写一个matlab小程序,求出最小的n值,使得n 2 写一个matlab函数来计算下列方程式 y 0.5 exp x 3 x x sin x 其中x是函数的输入,y是函数的输出。你的函数必须能处理当x是标量或向量的两种情况。3 一个平面上的椭圆可以表示成下列方程式 我们也可以用参数将椭圆表示成 ...

Matlab练习

下列matlab语句用于画出函数在 0,10 的值。x 0 0.1 10 y 2 exp 0.2 x plot x,y 用matlab编辑器创建一个新的m文件,把上面的语句写入这个文件并命名为然后在命令窗口中输入test1执行这个文件。看得到什么结果?通过以下两种方式得到关于exp函数的帮助。a 在...

Matlab练习

编写matlab语句计算y t 的值。已知t从9到9每隔0.5取一次值。运用循环和选择语句进行计算。用向量算法解决练习4.1。编写matlab语句计算并打印出1到50之间所有整数的平方。创建一个包含有每一个整数和他相应平方的和,注意在每一列加上合适的标签。在m文件中编写程序,计算阶乘n 注意0 如果...