lxx244lxx 发表于 2011-3-17 11:44

画分岔图,出现Vectors must be the same lengths.

function tanqingweiqi
hold on;box on;%生成空的坐标轴
N=100;%设置迭代次数
Tn=[];%初始化
kg2a=5.83;
options=odeset('RelTol',1e-9);%设置微分方程求解选项
for kg1a=5:0.01:8;%计算不同的kg1a值
    x0=;%设置初值
    tspan=
   y=ode4(@ODE317_2,tspan,x0,options,kg1a,kg2a)
    x0=y(end,:);
    for n=1:N;
      y=ode4(@ODE317_2,,x0,options,kg1a,kg2a);%求解微分方程
      x0=y(end,:);%更新初值
      xd=y(:,3);%提取求解结果
      =max(xd);%计算最大值
      if 1<IK & IK<length(xd);%判断是否为最大值内部点
            Tn=;%记录最大值
      end
    end
    plot(kg1a,Tn,'k.','markersize',1);%绘图
    Tn=[];%清空
   % pause(0.01);
end
end

function dy=ODE317_2(t,y,flag,kg1a,kg2a)
dy=zeros(3,1);
r=0.5;pb=1175;Fco=1400;Fco2=400;F=20000;
r1x=(kg1a*16.84*(1-y(1))*533529*exp(-76857/8.314/y(3))*(16.84*(1-y(1)))^0.674)/(kg1a*16.84*(1-y(1))+533529*exp(-76857/8.314/y(3))*(16.84*(1-y(1)))^0.674);
r2x=(kg2a*4.81*(1-y(2))*296452638*exp(-105858/8.314/y(3))*(4.81*(1-y(2)))^0.008)/(kg2a*4.81*(1-y(2))+296452638*exp(-105858/8.314/y(3))*(4.81*(1-y(2)))^0.008);
dy(1)=(pi*r*r*pb/Fco)*r1x;
dy(2)=(pi*r*r*pb/Fco2)*r2x;
dy(3)=(pi*r*r*pb/F)*(r1x*1000*(188.1276+0.0724*y(3)-4.2782*10^(-5)*y(3).^2+7.9724*10^(-9)*y(3).^3)+r2x*1000*(146.4633+0.06996*y(3)-2.7313*10^(-5)*y(3).^2+1.8928*10^(-9)*y(3).^3))/(1-0.14*y(1)-0.04*y(2))/(26.2932+0.01354*y(3)+6.1860*10^(-6)*y(3).^2-4.1355*10^(-9)*y(3).^3);

ChaChing 发表于 2011-3-17 13:21

Ref: 8F
[原创]写给学习 matlab 的新手们
http://forum.vibunion.com/forum/viewthread.php?tid=23494&extra=&page=1

lxx244lxx 发表于 2011-3-17 14:25

回复 2 # ChaChing 的帖子

谢谢,我明白我的错误是什么意思,向量字节长度必须相同,但是看了好几遍感觉还是没问题啊,没找出错误在哪。。

gghhjj 发表于 2011-3-18 11:13

lxx244lxx 发表于 2011-3-17 14:25 static/image/common/back.gif
回复 2 # ChaChing 的帖子

谢谢,我明白我的错误是什么意思,向量字节长度必须相同,但是看了好几遍感觉还 ...

kg1a是一个数值
Tn=是一个向量
页: [1]
查看完整版本: 画分岔图,出现Vectors must be the same lengths.