声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5522|回复: 18

[稳定性与分岔] 求助:分岔图matlab程序赐教指正!

[复制链接]
发表于 2007-11-18 19:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
function dc2dc2sim;

fff=inline(['[10-exp(-2083.3333*0.0001*(1-mod(tn,0.0001)/0.0001)*[(2083.3333*vn*exp(-2*2083.3333*tn)-2083.3333*10-(iref-10/20)/0.000012)*sin(9363.4188*0.0001*(1-mod(tn,0.0001)/0.0001))/9363.4188+(10-vn*exp(-2*2083.3333*tn))*cos(9363.4188*0.0001*(1-mod(tn,0.0001)/0.0001))]);',...
'exp(-2083.3333*0.0001*(1-mod(tn,0.0001)/0.0001)*[(2083.3333*0.001*()+10-vn*exp(-2*2083.3333*tn))/(9363.4188*0.001)*sin(9363.4188*0.0001*(1-mod(tn,0.0001)/0.0001))+(iref-10/20)*cos(9363.4188*0.0001*(1-mod(tn,0.0001)/0.0001))]+10/20]'],...
'vn','in','tn','iref');                           %%% fff=inline(['vn+1的表达式','in+1的表达式'],'vn','in','tn','iref')

kk=0.5:0.1:5.5;
nn=0:0.0001/10:0.0001;    %%%%%T=100us

xc=[];kc=[];

for iref=kk;     %%%i以ref 从0.5到5.5变化为参考作vn的分岔图;
   vn=0;
   in=0;
  for tn=nn;
   for p=1:500;
       in=fff(vn,in,tn,iref);
   end
   for p=1:50;
       in=fff(vn,in,tn,iref);
       xc=[xc,in];
       kc=[kc,iref];
   end
  end
end
plot(kc,xc,'k.','markersize',2);            %%%%打印以Iref为变化参数的电流分岔图。



请版主、 superliu各位研友赐教问题所在,分岔图做不出来啊!谢谢!
boost.jpg
回复
分享到:

使用道具 举报

发表于 2007-11-18 20:39 | 显示全部楼层
for p=1:500;
       in=fff(vn,in,tn,iref);
   end
这个循环的意思难道是去除前面的500次迭代数据?
 楼主| 发表于 2007-11-18 21:04 | 显示全部楼层

是啊,我是参考一些程序写的,请octopussheng版主看看有什么问题?

function boost1;
fff=inline('0.8872*x+1.2*16^2*(0.2874-k*(x-25))^2/(x-16)','x','k');
x0=25;
kk=0.07:0.0001:0.138;
xc=[];kc=[];
for k=kk;
   x=x0;
   for p=1:150;
       x=fff(x,k);
   end
   for p=1:50;
       x=fff(x,k);
       xc=[xc,x];
       kc=[kc,k];
   end
end
plot(kc,xc,'k.','markersize',2)



这段程序的分岔图在matlab中是正确的,octopussheng版主可以在matlab中看看!
我是就参考这个程序写的!!!
发表于 2007-11-19 02:43 | 显示全部楼层
问题出在“fff=inline”函数上面,建议你用一般函数表示,
即类似于的表达式;
V(n+1)=f(V(n),I(n));
I(n+1)=g(V(n),I(n));
此处f(),g(),就是你的函数
这样做肯定可以作出图来的;
 楼主| 发表于 2007-11-19 20:33 | 显示全部楼层
function dc2dc2sim;

vi=10;
L=0.001;
C=0.000012;
T=0.000100;
R=20;
k=1/(2*R*C);
w=sqrt(1/(L*C)-k^2);

kk=0.5:0.1:5.5;
nn=0:0.0001/10:0.0001;

xc=[];kc=[];
for iref=kk;
   vn=0;
   in=0;
  for tn=nn;
   for p=1:150;
       tnbo=T*[1-mod(tn,T)/T];
       vn=vi-exp(-k*tnbo)*[(k*vn*exp(-2*k*tn)-k*vi-(iref-vi/R)/C)*sin(w*tnbo)/w+(vi-vn*exp(-2*k*tn))*cos(w*tnbo)];
       in=exp(-k*tnbo)*[(k*L*(iref-vi/R)+vi-vn*exp(-2*k*tn))/(w*L)*sin(w*tnbo)+(iref-vi/R)*cos(w*tnbo)]+vi/R;
   end
   for p=1:100;
       tnbo=T*[1-mod(tn,T)/T];
       vn=vi-exp(-k*tnbo)*[(k*vn*exp(-2*k*tn)-k*vi-(iref-vi/R)/C)*sin(w*tnbo)/w+(vi-vn*exp(-2*k*tn))*cos(w*tnbo)];
       in=exp(-k*tnbo)*[(k*L*(iref-vi/R)+vi-vn*exp(-2*k*tn))/(w*L)*sin(w*tnbo)+(iref-vi/R)*cos(w*tnbo)]+vi/R;
       xc=[xc,in];
       kc=[kc,iref];
      
   end
   
end
end
       plot(kc,xc,'k.','markersize',2)


重新修改的程序为什么分岔图不正确啊,请版主研友帮忙啊!!!
发表于 2007-11-19 20:40 | 显示全部楼层
先谈一下个人的一点看法哈
kk=0.5:0.1:5.5;
nn=0:0.0001/10:0.0001;
这两句话定的步数会不会少了点呀?

能否考虑把plot(kc,xc,'k.','markersize',2)
放到for循环里面呢?
发表于 2007-11-19 21:10 | 显示全部楼层
我倒觉得这里有问题
for p=1:150;
       tnbo=T*[1-mod(tn,T)/T];
       vn=vi-exp(-k*tnbo)*[(k*vn*exp(-2*k*tn)-k*vi-(iref-vi/R)/C)*sin(w*tnbo)/w+(vi-vn*exp(-2*k*tn))*cos(w*tnbo)];
       in=exp(-k*tnbo)*[(k*L*(iref-vi/R)+vi-vn*exp(-2*k*tn))/(w*L)*sin(w*tnbo)+(iref-vi/R)*cos(w*tnbo)]+vi/R;
   end
   for p=1:100;
       tnbo=T*[1-mod(tn,T)/T];
       vn=vi-exp(-k*tnbo)*[(k*vn*exp(-2*k*tn)-k*vi-(iref-vi/R)/C)*sin(w*tnbo)/w+(vi-vn*exp(-2*k*tn))*cos(w*tnbo)];
       in=exp(-k*tnbo)*[(k*L*(iref-vi/R)+vi-vn*exp(-2*k*tn))/(w*L)*sin(w*tnbo)+(iref-vi/R)*cos(w*tnbo)]+vi/R;
       xc=[xc,in];
       kc=[kc,iref];
 楼主| 发表于 2007-11-19 21:17 | 显示全部楼层
for iref=kk;  %iref从现在从0.5到5.5
   vn=0;
   in=0;
  for tn=nn;  %tn从0到T
......
end
   
end

end
       plot(kc,xc,'k.','markersize',2)

这两个循环行不行啊,特别是时间tn从0到T这样循环不知道行不行,两位版主花点时间帮我看看,谢谢!
发表于 2007-11-19 21:23 | 显示全部楼层

回复 #7 咕噜噜 的帖子

而且前面说略去前面的迭代数据,感觉循环里面并没有略去呀!,不知道小咕是什么看法
发表于 2007-11-20 18:10 | 显示全部楼层
我估计是这条有问题
for tn=nn;
。。。。
end

你的函数和tn,tn'都有关系,而且此处的“n”和“vn,in”是有关系的

总的说来,你的函数关系还是没有表示清楚。

在此循环范围内;
for p=1:150;   
     完整的函数关系表达式;      
   end
for p=1:100;
        完整的函数关系表达式;
       xc=[xc,in];
       kc=[kc,iref];
      
   end

其实你的程序结构没有问题,只是函数关系没有表示清楚,耐心检查一下。

评分

1

查看全部评分

 楼主| 发表于 2007-11-21 19:59 | 显示全部楼层

分岔图及变换器系统原理图

要得到的分岔图如附件中的图1;
变换器系统图如附件中的图2,tn和tn'的关系如图;
在matlab中tn和tn'的函数关系不知如何正确表达完整的函数关系表达式;iref循环可以从0.5~5.5变化,但tn好象不知如何变化才能够作出如图的分岔图;

iref - in

iref - in

tn和tn\'

tn和tn\'
 楼主| 发表于 2007-11-21 20:16 | 显示全部楼层
tn是一个状态转换周期开关闭合的时间,tn'是该状态转换周期开关断开的时间,
从上图中可以看出:当iiref<=in时,开关闭合,时间为tn;当iiref>=in时,开关打开,时间为tn‘。
不知在matlab中tn循环 以及函数如何表达。
tnba.jpg
 楼主| 发表于 2007-11-21 20:21 | 显示全部楼层

分岔图是参考电流iref和电感电流in的关系,iref从0.5~5.5变化

分岔图是参考电流iref和电感电流in的关系,iref从0.5~5.5变化
发表于 2007-11-22 02:30 | 显示全部楼层
tnbo=T*[1-mod(tn,T)/T];
这句表示什么意思?和(3.9)式写法什么有出入?
发表于 2007-11-22 02:36 | 显示全部楼层
从你的解释看来在某个时刻tn和tn’只有一个起作用,剩下的就是想办法,表示tn和tn’之间的这种关系。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-29 18:03 , Processed in 0.072210 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表