lirong75 发表于 2006-4-12 22:06

急求:用matlab来画出Lorenz的关于参数r的分叉图程序

<STRONG>急求:用matlab来画出Lorenz的关于参数r的分叉图程序<BR>老板要求做出来,很着急<BR>谢谢各位大虾了</STRONG>

jumpwolf 发表于 2006-4-13 12:12

<P>clear all<BR>global r<BR>t0=;%积分时间<BR>y0=;</P>
<P>%bifurcation<BR>for r=20:0.05:30 %r的变化精度<BR>=ode45('Lorenz',t0,y0);<BR>=getmax(y);</P>
<P>plot(r,Xmax,'b','markersize',1)<BR>hold on<BR>clear Xmax<BR>end<BR>xlabel('r')<BR>ylabel('Xmax')<BR><BR><BR>function = getmax(y)<BR>a=length(y);<BR>j=1;<BR>for i=(a-1)/2:a<BR>    <BR>    b=(y(i,1)-y(i-2,1))/2;<BR>    c=(y(i,1)+y(i-2,1))/2-y(i-1,1);<BR>    <BR>    if y(i-2,1)&lt;=y(i-1,1)&amp;y(i-1,1)&gt;=y(i,1)&amp;c==0<BR>       Xmax(j)=y(i-1,1);<BR>       j=j+1;<BR>   elseif y(i-2,1)&lt;=y(i-1,1)&amp;y(i-1,1)&gt;=y(i,1)<BR>       Xmax(j)=y(i-1,1)-b^2/(4*c);<BR>       j=j+1;<BR>   end<BR>end<BR><BR>function dy = Lorenz(t,y)<BR>global r<BR>dy=zeros(3,1);<BR>dy(1)=-10*(y(1)-y(2));<BR>dy(2)=-y(1)*y(3)+r*y(1)-y(2);<BR>dy(3)=y(1)*y(2)-8*y(3)/3;<BR><BR><BR>仅供参考!要想图漂亮一点,可以把积分时间和r的变化精度增大,但是计算时间会变长。</P>

zhaolei 发表于 2006-4-15 11:02

??? Undefined function or variable 'getmax'.怎么回出现这样的错误那

jumpwolf 发表于 2006-4-15 12:30

getmax和 Lorenz是两个函数,要另外写两个M文件。

lirong75 发表于 2006-4-17 21:54

谢谢 二楼的朋友
页: [1]
查看完整版本: 急求:用matlab来画出Lorenz的关于参数r的分叉图程序