声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4290|回复: 21

[应用数学] 关于伪不动点追踪算法求教

[复制链接]
发表于 2015-4-21 15:29 | 显示全部楼层 |阅读模式

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

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

x
有没有做伪不动点追踪求系统多周期解的前辈帮忙看看
clc
clear all
global Num; global eta11;global eta22;global eta33; global eta13; global eta23;global b;
global k11; global k22; global Fb1; global Fb2; global Fm; global weh; global Fah1;global emsl;
Num=3; eta11=0.00;eta22=0.00;eta13=0.0125;eta23=0.0125;eta33=0.05;k11=1.25;k22=1.25;
Fb1=0;Fb2=0;Fah1=0.05;emsl=0.2;b=1;Fm=0.1;
weh=1.498;
options=odeset('RelTol',1e-8,'AbsTol',1e-9);
det_num=100;
h=2*pi/weh;t1=0;t0=0; h1=h/det_num;K_X=[];
X0=zeros(2*Num,1);
% chuzhi;
for i=1:1000
    [t,X]=ode45(@three_degree_gear, [t0,t0+h], X0,options);
    t0=t0+h; X0=X(end,:)';
    if i>900
        K_X=[K_X X0];
    end
end
t0=0 ;t1=0;
chuzhi;
%  XX=budongdian2(t1,X0,h);
XX_list=[];DDK=[];KKK=[];
% X0=XX;
for i=1:5*det_num
         t1=t0+i*h1;i
         XX=budongdian2(t0,X0,t1);[t,X]=ode45(@three_degree_gear, [t0,t1], XX,options);
         DK=norm(X(end,:)'-XX)
         X0=XX;
         DDK=[DDK DK];XX_list=[XX_list XX];
     if mod(i,det_num)==0
         KKK=[KKK [XX;DK]];
     end      
end
[t,X]=ode45(@three_degree_gear, [0,50*h], XX,options);
***************************************************************************
function XX=budongdian2(t,X0,h)
global Num;
options=odeset('RelTol',1e-8,'AbsTol',1e-9);
X_E=[];X_D=[];
% 不动点迭代法流程
K=1;v=1;t1=t;t2=t1;
while v==1
    while K<=2*Num+1
        [t,X]=ode45(@three_degree_gear, [t1,t1+h], X0,options);
        X1=X(end,:)';
%         t1=t1+h;
        ek=norm((X1-X0)/X1,2);
        if ek<1e-9
            XX=X1; v=0
            break;
        else
            X_E=[X_E X1];X_D=[X_D [X0;1]];X0=X1;
        end
        K=K+1;
    end
    HC=X_E*pinv(X_D);H=HC(:,1:end-1);C=HC(:,end);
    E=eye(2*Num);XX=pinv(E-H)*C;v=0;X0=XX;
end
eb=1;kk=1;
while eb>1e-7;
    X2=X0;K=1;v=1; t1=t2;
    while v==1
        while K<=2*Num+1
            [t,X]=ode45(@three_degree_gear, [t1,t1+h], X0,options);
            X1=X(end,:)';
            ek=norm((X1-X0)/X1,2);
            if ek<1e-8
                XX=X1; v=0
                break;
            else
                X_E=[X_E X1];X_D=[X_D [X0;1]];X0=X1;
            end
            K=K+1;
        end
        HC=X_E*pinv(X_D);H=HC(:,1:end-1);C=HC(:,end);
        E=eye(2*Num);XX=pinv(E-H)*C; v=0;
    end
    eb=norm((X2-XX)/XX,2);kk=kk+1;
    if kk>200
        kk
        break
    end
    X0=XX;
end
做不出正确结果,为什么?
回复
分享到:

使用道具 举报

 楼主| 发表于 2015-4-22 15:54 | 显示全部楼层
来个人啥

点评

结果什么地方不正确呢?总不能让每个人都运行一次吧 建议这类问题最好能够把结果也贴出来,并说明你的想法  详情 回复 发表于 2015-10-10 17:26
发表于 2015-10-10 17:26 | 显示全部楼层

结果什么地方不正确呢?总不能让每个人都运行一次吧
建议这类问题最好能够把结果也贴出来,并说明你的想法
发表于 2016-12-1 18:07 | 显示全部楼层
哥们,程序中你的方程是啥啊,搞出来了吗?
发表于 2016-12-2 08:15 | 显示全部楼层
哪里出错  发出来看看
发表于 2016-12-2 11:32 | 显示全部楼层
eastar 发表于 2016-12-2 08:15
哪里出错  发出来看看

你也搞得整个吗?哥们,可以一起交流啊 936476231

点评

我都不知道他说的是啥  详情 回复 发表于 2016-12-2 14:37
发表于 2016-12-2 14:37 | 显示全部楼层
哎哟喂110120 发表于 2016-12-2 11:32
你也搞得整个吗?哥们,可以一起交流啊 936476231

我都不知道他说的是啥
发表于 2016-12-2 16:10 | 显示全部楼层
eastar 发表于 2016-12-2 14:37
我都不知道他说的是啥

它的意思是求不出正确答案,但是可以运行,也就是找不出周期点和周期
发表于 2016-12-2 16:11 | 显示全部楼层
前辈在吗?你最后做出来了吗
发表于 2016-12-6 08:36 | 显示全部楼层
正确结果应该是什么样子的
发表于 2016-12-10 20:29 | 显示全部楼层
正确结果应是出现极小值等于0
发表于 2016-12-12 08:41 | 显示全部楼层
为啥这么多人研究这个
发表于 2016-12-14 15:06 | 显示全部楼层
Raspberry 发表于 2016-12-12 08:41
为啥这么多人研究这个

在非线性研究中,求共存周期的一种不错的方法

点评

共存周期? 那他这个程序有问题吗  详情 回复 发表于 2016-12-15 08:49
发表于 2016-12-15 08:49 | 显示全部楼层
哎哟喂110120 发表于 2016-12-14 15:06
在非线性研究中,求共存周期的一种不错的方法

共存周期?  那他这个程序有问题吗
发表于 2016-12-15 10:46 | 显示全部楼层
Raspberry 发表于 2016-12-15 08:49
共存周期?  那他这个程序有问题吗

结果不正确,你也研究这个?咱们可以QQ交流啊
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-22 00:16 , Processed in 0.059430 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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