2个回答
展开全部
承蒙楼上的知友抬爱,把我两年半之前回答一个问题(编号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
来自:求助得到的回答
展开全部
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
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
追问
把别人的复制过来有什么用。。。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询