matlab 迭代问题

如题所述

1)建立迭代模型函数文件

function [xk1,yk1]=iterative(xk,yk)

xk1=1+yk-1.4*xk^2;

yk1=0.3*xk;

end

2)利用循环语句,求xk,yk值

当x0=0.1,y0=0.2,k=100时的xk,yk值

k=0;xk=0.1;yk=0.2

k=1;xk=1.186;yk=0.03

k=2;xk=-0.93923;yk=0.3558

k=3;xk=0.12077;yk=-0.28177

k=4;xk=0.69781;yk=0.036232

k=5;xk=0.35452;yk=0.20934

........

k=97;xk=0.45573;yk=0.1404

k=98;xk=0.84964;yk=0.13672

k=99;xk=0.12608;yk=0.25489

k=100;xk=1.2326;yk=0.037823

3)在2)基础求得

用scatter(xk,yk,'*')绘出,当x0=0,y0=0,k=30000时的xk与yk关系图形

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-06-25

这个问题的背景是关于混沌现象的一个称为Hénon映射的离散时间动态系统模型

    

其中经典Hénon映射取a = 1.4,b = 0.3,也就是题目中给的数据。

 

(1)按照要求,编写函数:   

function [x, y] = henon(x0, y0, N)

x = [0; zeros(N,1)*NaN];

y = x;

for i = 1 : N

    x(i+1) = 1 + y(i) - 1.4*x(i)^2;

    y(i+1) = 0.3 * x(i);

end

   

输入参数分别为初值x0、y0以及迭代次数,输出为迭代结果。

 

(2)调用函数   

x0 = 0.1; y0 = 0.2;

[x, y] = henon(x0, y0, 100);

disp([x(end) y(end)])

   

结果为 xk = -1.2493, yk = 0.3805。

 

(3)调用函数  

x0 = 0; y0 = 0;

[x, y] = henon(x0, y0, 30000);

plot(x, y, '.')

xlabel x, ylabel y

   

本回答被提问者采纳
相似回答