把w去掉,把w=2.0;写到主程序里面
ff=我觉得还是写成ff=zeros(4,1)的好,写在dx前面
就没问题了 为什么我发新帖时出现,“对不起,您填写的内容(如签名、帖子、短消息等)包含不良内容而无法提交,请返回修改。
”,我晕,帖子的名称为“什么是分岔”,怎么不良了,请版主说明一下:@L
回复 #31 咕噜噜 的帖子
按你所说的做了修改,但是还是不行,居然matlab没反应了! 没有定义b就是在你画# 25 楼图的那个点‘.’ 里面加一个k就全部是黑色的了 555,还是不知道问题在那里,还是出现同样的错误,望指点,谢谢! :@o 修改之后我这里能运行啊b=2.0:0.1:15.0;
options = odeset('RelTol',1e-6,'AbsTol',);
forn=1:length(b);
w=2.0;
T=2*pi/w;
ts=;
x0=;
=ode45('www',ts,x0,options,b(n));
figure(1)
plot(b(n),X(5000:100:10000,1),'.');
xlabel('\fontsize{18}\omega');
ylabel('\fontsize{18}x');grid
hold on
figure(2)
plot(b(n)*30/pi,X(5000:100:10000,2),'.');
xlabel('\fontsize{18}\omega');
ylabel('\fontsize{18}y');grid
hold on
end
function ff=www(t,x,flag,b)
ff=zeros(4,1);
g=9800;
E=0.12;
f=0.12;
a=0.5;
%b=10.8;
q=0.16;
f0=25;
u=0.136/q;
w=2.0;
e=sqrt(x(1)^2+x(2)^2);
G=g/((2*pi*f0)^2*q);
ff=zeros(4,1);
dx(1)=x(3);
dx(2)=x(4);
dx(3)=-2*E*x(3)-x(1)-a*(x(1)^2+x(2)^2)*x(1)-b*(1-1/e)*(x(1)-f*x(2))+u*w^2*cos(w*t);
dx(4)=-2*E*x(4)-x(2)-a*(x(1)^2+x(2)^2)*x(2)-b*(1-1/e)*(f*x(1)+x(2))+u*w^2*sin(w*t)-G;
%ff= 我试了一下,算是能算,不过结果有问题的哦!呵呵
回复 #36 咕噜噜 的帖子
为什么不需要ff=?回复 #38 chuandong418 的帖子
应该是书写错误,必须要ff=的回复 #38 chuandong418 的帖子
这条语句确实是可要可不要的,因为已经在这里定义好了:dx(1)=x(3);
dx(2)=x(4);
dx(3)=-2*E*x(3)-x(1)-a*(x(1)^2+x(2)^2)*x(1)-b*(1-1/e)*(x(1)-f*x(2))+u*w^2*cos(w*t);
dx(4)=-2*E*x(4)-x(2)-a*(x(1)^2+x(2)^2)*x(2)-b*(1-1/e)*(f*x(1)+x(2))+u*w^2*sin(w*t)-G; 刚刚又计算了下以参数U为变量的分叉图,得出的结果也是一条直线,现在我都在怀疑这种方法是不是只是使用与w为变量的分叉,其他的不行,是不是要换一种方法来计算呢?还望大家帮忙,好苦恼! 看看你的初始条件改一下