当前位置:首页 > 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
共分享92篇相关文档