2017-05-24 6 views
0

差動変換法を用いたChenのカオスシステムの解を計算しています。私が使用していたコードは次のとおりです。差動変換法を用いたチェンのカオスシステム解

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、および同様に他のもの。

enter image description here

答えて

1

これが答えではありませんが、より明確かつ正確に(プログラム的に言えば):しかし、このコードは、私が取得していますx(t)のグラフであるカオス系列の所望の出力を与えるものではありませんあなたのループを書く:

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 

ここで最も重要な問題は、インデックスこと、(私はtemp_sumでそれを置き換える他のものは、内部ループ(sumを使用して...のベクトル化を含む)に組み込み関数sumをオーバーロードされていません。 1で始まります(代わりにo常にk+1と書いてください)、不要な呼び出しをgammagamma(k)/gamma(k+1) = 1/k)に削除してください。

+0

k = 1の場合、コードの3行目に配列インデックスエラーがありません。また、ガンマ(1 + k)/ガンマ(2 + k)= 1 /(k + 1) – Upstart

+0

@Upstart、それはエラーをスローしませんが、それは間違っていました。そして、私が書きたいと思ったのは 'ガンマ(k)/ガンマ(k + 1)= 1/k'でした。 – EBH

+0

それはまだmatlabにエラーを投げます。あなたは私に3行目を説明できますか? – Upstart

関連する問題