24小时热门版块排行榜    

查看: 935  |  回复: 9
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

brqhl_ing

银虫 (小有名气)

[交流] 【求助】即FOR循环之后的问题 已有3人参与

function dx = Rossler(t,x,k1,k2)
dx1=-(1+0.015)*x(2)-x(3)+k1*(x(4)-x(1))+k2*(-x(4)-x(1))*(x(4)-x(1));
dx2=(1+0.015)*x(1)+0.15*x(2);
dx3=0.5+x(3)*(x(1)-10);
dx4=-(1+0.015)*x(5)-x(6)-k1*(x(4)-x(1))-k2*(-x(4)-x(1))*(x(4)-x(1));
dx5=(1+0.015)*x(4)+0.15*x(5);
dx6=0.5+x(6)*(x(4)-10);
dx=[dx1;dx2;dx3;dx4;dx5;dx6];
这是上个FOR循环里面的方程 只不过这次控制项不同  有k1 k2
同样定义误差函数e=((x(:,4)-x(:,1)).^2+(x(:,5)-x(:,2)).^2+(x(:,6)-x(:,3)).^2).^0.5;
如何找出k1 k2 取值使e=0  这个e可以是耦合系统经过一定时间达到误差函数e=0画出k1 k2使e=0的区域  (k1 k2相图)
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

free--fire

新虫 (小有名气)

★ ★
brqhl_ing(金币+10): 2010-07-17 11:40:27
anyuezhiji(金币+2):感谢应助,欢迎常来! 2010-07-17 17:49:56
nono2009:代码建议用[code][/code],就不会有显示问题。 2010-07-18 11:11:38
引用回帖:
Originally posted by brqhl_ing at 2010-07-13 20:59:06:
function dx = Rossler(t,x,k1,k2)
dx1=-(1+0.015)*x(2)-x(3)+k1*(x(4)-x(1))+k2*(-x(4)-x(1))*(x(4)-x(1));
dx2=(1+0.015)*x(1)+0.15*x(2);
dx3=0.5+x(3)*(x(1)-10);
dx4=-(1+0.015)*x(5)-x(6)-k1*(x(4)-x( ...

CODE:
function help100716()

clc;
clear all;
tic;

global k1 k2 ;
n=0:0.01:0.5;
s=length(n);
K=zeros(s^2,3);
m=1;
for k1=0:0.01:0.5
    for k2=0:0.01:0.5
        [T,x]=ode45(@Rossler,[0,600],[0.2;0.3;0.6;0.4;0.7;0.1]);
        e=((x(:,4)-x(:,1)).^2+(x(:,5)-x(:,2)).^2+(x(:,6)-x(:,3)).^2).^0.5;
        if(min(e)<=1e-1)%% set the bar of the 'e' value
            K(m,:)=[k1 k2 min(e)];
            m=m+1;
        end
    end
end
if m>1
figure;
plot(K(1:m-1,1:2));
end
toc;
function dx = Rossler(t,x)
global k1 k2;
dx1=-(1+0.015)*x(2)-x(3)+k1*(x(4)-x(1))+k2*(-x(4)-x(1))*(x(4)-x(1));
dx2=(1+0.015)*x(1)+0.15*x(2);
dx3=0.5+x(3)*(x(1)-10);
dx4=-(1+0.015)*x(5)-x(6)-k1*(x(4)-x(1))-k2*(-x(4)-x(1))*(x(4)-x(1));
dx5=(1+0.015)*x(4)+0.15*x(5);
dx6=0.5+x(6)*(x(4)-10);
dx=[dx1;dx2;dx3;dx4;dx5;dx6];

[ Last edited by nono2009 on 2010-7-18 at 11:10 ]
我是流,是浮云天上游;我是虎,是大虫卧山谷。
7楼2010-07-17 10:57:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 10 个回答

xiegangmai

版主 (职业作家)

我没头衔

优秀版主优秀版主优秀版主


anyuezhiji(金币+1):谢谢提供意见 2010-07-14 07:38:28
这个问题好像不能用优化来做,不能写出k1、k2的目标函数。

有个笨一些的方法,假设知道k1,k2的范围,先取k1,k2较大的步长,双重循环计算e。找出e接近0的时候k1,k2的较小范围,再将k1,k2的步长缩小,找到使e=0的k1,k2。

先试试吧。
看看高手有没有别的办法。
明德厚学、求是创新
2楼2010-07-13 23:51:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

brqhl_ing

银虫 (小有名气)

引用回帖:
Originally posted by xiegangmai at 2010-07-13 23:51:05:
这个问题好像不能用优化来做,不能写出k1、k2的目标函数。

有个笨一些的方法,假设知道k1,k2的范围,先取k1,k2较大的步长,双重循环计算e。找出e接近0的时候k1,k2的较小范围,再将k1,k2的步长缩小,找到使 ...

这个k1 k2的取值范围是知道的一半都是在0到1之间。就是去k1 k2一个计算步长 相当于把空间分成很多点组成的  计算这些点的e的情况
3楼2010-07-14 08:32:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

brqhl_ing

银虫 (小有名气)

robert2020:匆匆又到暑期毕业季,大家有点忙...烦请耐心等待... 2010-07-16 16:21:08
大家快来讨论讨论 如何解决这个问题啊
4楼2010-07-14 21:02:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见