首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用微分变换法求解chen混沌系统

用微分变换法求解chen混沌系统
EN

Stack Overflow用户
提问于 2017-05-24 16:00:51
回答 1查看 117关注 0票数 0

本文用微分变换法计算了Chen混沌系统的解。我使用的代码是:

代码语言:javascript
复制
x=zeros(1,7);
x(1)=-0.1;
y=zeros(1,7);
y(1)=0.5;
z=zeros(1,7);
z(1)=-0.6;
for k=0:5
    x(k+2)=(40*gamma(1+k)/gamma(2+k))*(y(k+1)-x(k+1));
    sum=0;
    for l=0:k
        sum=sum+x(l+1)*z(k+1-l);
    end
    y(k+2)=(gamma(1+k)/gamma(2+k))*(-12*x(k+1)-sum+28*y(k+1));
    sum=0;
    for l=0:k
        sum=sum+x(l+1)*y(k+1-l);
    end
    z(k+2)=(gamma(1+k)/(1+k))*(sum-3*z(k+1));
end
s=fliplr(x);
t=0:0.05:2;
a=polyval(s,t);
plot(t,a)

这段代码所做的是计算x(k)y(k)z(k) --这是逼近解的多项式的系数。解决方案x(t) = sum_0^infinity x(k)t^k,以及类似的其他。但是,这段代码并没有给出混沌序列的期望输出,我得到的x(t)图是:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-24 17:05:12

这不是一个答案,而是一个更清晰、更正确(以编程方式)编写循环的方法:

代码语言:javascript
复制
for k = 1:6
    x(k+1)=(40*1/k)*(y(k)-x(k));
    temp_sum = sum(x(1:k).*z(k:-1:1),2);
    y(k+1) = (1/k)*(-12*x(k)-temp_sum+28*y(k));
    temp_sum = sum(x(1:k).*y(k:-1:1),2);
    z(k+1) = (1/k)*(temp_sum-3*z(k));
end

这里最重要的问题不是重载内置函数sum (我用temp_sum替换了它)。其他事情包括内部循环的向量化(使用sum.)、从1开始的索引(而不是一直写k+1 ),以及删除对gamma (gamma(k)/gamma(k+1) = 1/k)的不必要调用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44163372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档