高分求一道迭代模型的matlab编程问题,题目如图。答案私信我,千万私信!!!(答得好追加)

在线坐等
2025-02-24 00:19:20
推荐回答(2个)
回答1:

承蒙楼上的知友抬爱,把我两年半之前回答一个问题(编号687646670441069324)的答案一字不改的复制过来了。其实那段代码是我在上某门课时为了观察Hénon引力线的迭代过程而编写的,与当时问题的要求也并不太相符。

 

这个问题的背景是关于混沌现象的一个称为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

回答2:

N=3000;
x=[0; zeros(N,1)*NaN];
y=x;
clf
tail = plot(x,y,'.','color',[1 1 1]*0.75,'markersize',5);
hold on
head = plot(NaN,NaN,'.','markersize',25);
title(['x_{k+1} = 1+y_k+1.4*x_k^2' 10 'y_{k+1} = 0.3x_k']);
xlabel('x');
ylabel('y');
for i=1:N
x(i+1)=1+y(i)-1.4*x(i)^2;
y(i+1)=0.3*x(i);
try
set(tail,'xData',x,'yData',y)
set(head,'xData',x(i+1),'yData',y(i+1))
drawnow
catch
break
end
end