分岔图另一种程序,系数变大后运行不出来了,到底怎么回事呢?
昨天找到这样一个分岔图程序,运行了半个来小时出来了分岔图{:{28}:}
M 函数
function ydot=dbfun(t,y,flag,d)
w=1;c=0.3;
ydot=;
end
分岔图程序
d=20:0.01:40;
w=1.0;
T=2*pi/w;
hold on
for j=1:length(d)
=ode23('dbfun',,,[],d(j));
plot(d(j),y(500:100:1400,2),'linewidth',5)
title('分岔图')
xlabel('参数F0')
ylabel('位移')
end
但是我套入我方程编制了下述程序
function xdot=fencha(tau,x,flag,q0)
w=1.0;
xdot=;
end
q0=20:0.01:60;
w=1.0;
T=2*pi/w;
hold on
for j=1:length(q0)
=ode23('fencha',,,[],q0(j));
plot(q0(j),x(800:100:4000,1),'linewidth',5)
xlabel('q0')
ylabel('displacement')
end
运行了一下午也没出结果,哪位高手给指教一下,怎么方程里的系数变大了就运行不出来了呢!?还是别的原因。感觉作分岔图好麻烦啊,运行老半天。
你这数据量也太大了,肯定得很长时间才能出来,再说取点也有问题啊!你试试
q0=20:0.1:60;
plot(q0(j),x(6500:100:7000,1),'linewidth',5);
先看看结果,合适的话在细化
回复 2 # kangarooli 的帖子
你好,按照你的建议运行了一下,从下午五点运行到晚上十一点还是没出图。((em:04)) 计算的时候,matlab命令窗口有没有出现提示信息? 可以再程序运行过程中,输出一些东西,比如运行时间,或者某些点的数据。这样就可以判断程序是不是在运行过程中。 回复 4 # octopussheng 的帖子
窗口显示一直处于busy状态,没有任何提示信息 回复 5 # kezairenjian 的帖子
matlab显示处于busy状态,应该在运行 3.7467e+006*q0*
这个力是不是太大了?
改一下应该就好了 不知道你问题解决了没有。
程序的问题我不确定,但是依照二楼意见修改过后计算量肯定不会算一个下午。我只是说一下对你的方程的看法。因为激励力的幅度很大,其实这个系统的非线性现象已经不明显了。x^3这项的影响被减弱了。(具体原理可以参考《非线性动力学》(刘秉正)混沌一章的介绍。)也就是说,在这种情况下,在非线性基础上来分析已经不合适了。 你的方程在这么大的系数下无解!去掉3746700之后,方程有解。 回复 9 # freedignity 的帖子
谢谢你,这么久以来我只是按照导师的指示研究根据方程画各种分岔混沌图,其实对于混沌分岔的原理以及怎么才会产生这样的现象理解的不够,尤其是通过方程看眉目。我会找找你说的这本书好好看看的。看来程序基本是没什么问题的,应该是方程的推导过程中哪块出错了,导致系数出了问题,谢谢! 回复 10 # liliangbiao 的帖子
谢谢,但是我的方程里系数就是这样的,看来方程有问题。 回复 8 # 无水1324 的帖子
数据确实是这样啊 是不是运行时间的问题 分岔图还出得来吗 回复 9 # freedignity 的帖子
您好 我检查过了 方程没问题
最后一句话什么意思?? 回复 14 # chenshumeionly 的帖子
你的方程有两个重要项:x^3和右边的外激励项,分别是非线性项和线性振子。两者对系统的影响大小跟各自的系数大小有关。你的方程两个系数的比例悬殊,非线性的影响就被线性振子掩盖,呈现不出非线性系统的特征。那么你用非线性理论和方法去分析和求解这个方程还有什么用呢。见过书上的推导,应该知道有些项是被省去的根本依据就是该项对系统的影响是次要的,其次才是为了简化计算的需要。这只是我结合那本书说的个人的观点。你最好也跟导师交流一下。
页:
[1]
2