Simulink交互式仿真(6)

发布时间 : 星期日 文章Simulink交互式仿真(6)更新完毕开始阅读

(2)

(3)

%exm080709m.m global a Jc amin=min(a0); na=length(a0); nd=na+2; opts=optimset('MaxFunEvals',300*na); CF=zeros(Kr,nd);Jk=zeros(1,Kr); for kk=1:Kr

ar=a0+2*amin*(rand(1,na)-0.5); %<8> a=fminsearch(@exm080709_itae,ar, opts); cf=[1,a,1]; CF(kk,:)=cf; Jk(kk)=Jc; end

[Jmin,kmin]=min(Jk); cfmin=CF(kmin,:);

% exm080709_itae.m

function Jc=exm080709_itae(aa) global a Jc a=aa; Tspan=[0,0.1,20]; %<4> opts=simset('RelTol',0.0001);

[~,~,Jt]=sim('exm080709',Tspan,opts); %<6> Jc=Jt(end);

(4)

clear Kr=5;

a0=[3.25,6.60,8.60,7.45,3.95]; exm080709m Jmin,cfmin Jmin =

8.3338 cfmin =

Columns 1 through 6

1.0000 2.1519 5.6290 6.9338 Column 7 1.0000

(5)

old=tf(1,[1,a0,1]); new=tf(1,cfmin); [yold,told]=step(old,50); [ynew,tnew]=step(new,50);

plot(told,yold,'b','LineWidth',1)

5

3.7398 6.7925 axis([0,18,0,1.1])

hold on,plot(tnew,ynew,'r','LineWidth',3),hold off xlabel('t')

title('ITAE 6阶新老标准型的阶跃响应比较') legend('Old','New',4),grid on

ITAE 6阶新老标准型的阶跃响应比较 10.80.60.40.2OldNew0 02468t1012141618 图8.7-17 新老标准型的阶跃响应局部放大比较图 表8.7-2 ITAE标准型新系数(黑体)和老“经典”系数(细体)对照 传递函数分母多项式系数 1 1.4 1 1 1.5049 1 3 1 1.75 2.15 1 1 1.7828 2.1715 1 4 1 2.10 3.40 2.75 1 1 1.9521 3.3458 2.6473 1 5 1 2.80 5.00 5.50 3.40 1 1 2.0667 4.4976 4.6730 3.2568 1 6 1 3.25 6.60 8.60 7.45 3.95 1 1 2.1519 5.6290 6.9338 6.7925 3.7398 1 7 1 4.48 10.42 15.05 15.54 10.64 4.580 1 1 2.2169 6.7433 9.3469 11.577 8.6778 4.3226 1 8 1 5.20 12.80 21.60 25.75 22.20 13.30 5.15 1 1 2.2681 7.8313 11.8472 17.5325 16.0645 11.3094 4.8069 1 ? 研究表明:ITAE函数搜索空间的形状非常复杂,凹凸不平,小谷很多,许多地方深谷高峰相邻。要找到真正最小值点决非易事。虽可以肯定:单点标准型的新系数比老系数具有更小的ITAE值;但不能断言这新系数一定指示着最小值点。 阶次 2 ITAE值 1.99 1.9519 3.144 3.1383 4.626 4.5913 7.155 6.3215 9.656 8.3338 15.003 10.6290 18.680 13.2051 8.2 数值计算方面的考虑

6

8.2.1 微分方程解算器Solver 1 2 3 4

ode45和ode23运作机理简要 ode113运作机理简要

ode15s和ode23s运作机理简要 不同解算器解Stiff方程的表现

??100x??0.9999x?0在x(0)?1,xx【例8.8-1】求微分方程??(0)?0时的解。

图8.8-1 微分方程的块图模型exm080801

(1)关于exm080901.mdl的说明

(2)

syms t x xd

xs=dsolve('D2x+100*Dx+0.9999*x=0','x(0)=1,Dx(0)=0','t') xsd=diff(xs,'t') HL2=ezplot(xd-xsd,[0,10,-0.012,0]); set(HL2,'LineWidth',3)

title(['x''=',char(xsd)]) xs =

9999/(9998*exp(t/100)) - 1/(9998*exp((9999*t)/100)) xsd =

9999/(999800*exp((9999*t)/100)) - 9999/(999800*exp(t/100))

7

x'=9999/(999800*exp((9999*t)/100)) - 9999/(999800*exp(t/100))0-0.002-0.004xd-0.006-0.008-0.01-0.0120125678t图8.8-2 微分方程的解x和它的导数dx/dt 34910

(3)

tt=(0:4000)/10;

xx0=subs(xsd,t,tt); Tspan=600;

opts=simset('Solver','ode45');

[tt1,xx1,s]=sim('exm080801',Tspan,opts); opts=simset('Solver','ode15s');

[tt2,xx2,s]=sim('exm080801',Tspan,opts);

plot(tt,xx0,'k',tt1,xx1(:,2),'b:',tt2,xx2(:,2),'r-.') axis([246 247 -8.55e-4 -8.35e-4]) legend('Symbolic','ode45','ode15s',0) xlabel('t'),ylabel('dx/dt')

title(' Stiff 方程的三种算法结果比较局部放大') ns1=length(xx1) ns2=length(xx2) ns1 =

18085 ns2 = 101

-4 Stiff 方程的三种算法结果比较局部放大x 10-8.35Symbolicode45-8.4ode15sdx/dt -8.45-8.5-8.55 246246.1246.2246.3246.4246.5246.6246.7246.8246.9t247

8

联系合同范文客服:xxxxx#qq.com(#替换为@)