逻辑图绘制不正确(Matlab)

逻辑图绘制不正确(Matlab),matlab,math,nonlinear-functions,Matlab,Math,Nonlinear Functions,我试图迭代并绘制由方程给出的非线性函数:x[n+1]=4*x[n]*(1-x[n])。我在这里找到了该函数的一个实现 我遵循的是相同的东西,只是点数N,在我的实现中,初始条件不同。我不知道为什么我在输出中没有得到任何值;大多数都是零值。当初始条件为x[1]=0.5时,我得到了图中给出的奇怪曲线图。但是当初始条件为0.3时,我得到了正确的逻辑图。理论上,初始条件可以是0到1之间的任何数字。那么,当初始条件为0.5时,为什么代码不起作用 有什么问题 N=20000; % number of data

我试图迭代并绘制由方程给出的非线性函数:
x[n+1]=4*x[n]*(1-x[n])
。我在这里找到了该函数的一个实现

我遵循的是相同的东西,只是点数
N
,在我的实现中,初始条件不同。我不知道为什么我在输出中没有得到任何值;大多数都是零值。当初始条件为
x[1]=0.5
时,我得到了图中给出的奇怪曲线图。但是当初始条件为0.3时,我得到了正确的逻辑图。理论上,初始条件可以是0到1之间的任何数字。那么,当初始条件为0.5时,为什么代码不起作用

有什么问题

N=20000; % number of data points
x = zeros(1,N);
x(1) = 0.5; % initial condition (can be anything from 0 to 1)


for n = 1:N
    x(n+1) = 4*x(n)*(1-x(n));
end
 plot(x(1:N),x(2:N+1),'rs-')
 xlabel('x_n')
 ylabel('x_{n+1}')
这里是情节


您得到的结果是正确的。让我用下面的蛛网图解释一下(来源:)

抛物线是曲线
y=4*x*(1-x)
,蓝色线性曲线是
y=x
。点
x[n]
的确定方式如下:

  • 从点
    (x0,y(x0))
    (通常绘制带有
    (x0,0)
    的线)
  • 水平移动,直到到达线性曲线
  • 垂直移动直到到达抛物线。这是您的
    x[n+1]
  • 重复步骤2-3直到无穷大或
    x[n]=x[n-1]
    (稳定点)或
    x[n]=x[n-m]
    (周期性)
  • 注意,稳定点是抛物线和线性曲线相交的地方

    将此方法应用于带有参数的对象,可以得到:

  • (0.5,1)
  • 水平转到
    (1,1)
  • 垂直于
    (1,0)
    (这是
    x[1]
  • 水平移动到
    (0,0)
  • 垂直于
    (0,0)
    (这是
    x[2]
  • 水平移动到
    (0,0)
  • 垂直于
    (0,0)
    (这是
    x[3]
  • 停止

  • 因此,您恰好到达了稳定点。

    感谢您提供了带插图的答案。如果我理解的话,我认为第3点中有一个拼写错误,它应该垂直向下到(1,0),得到x[1],而不是(0,1)?此外,在步骤4)之后,即坐标(0,0),下一个点x[2]如何是垂直坐标(0,0)尚不清楚。你能澄清一下吗?@RiaGeorge这确实是一个打字错误,谢谢你的注意。在第4)步之后,你应该保持垂直,直到你碰到抛物线为止。然而,你已经在抛物线上了,所以不再需要垂直了,你可以呆在原地。