You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

绘制Logistic映射迭代序列时出现额外横向线条问题

问题解决:迭代序列绘图出现额外横向线条

问题根源

你代码里的n0数组长度为nsteps+1(101个元素),但循环仅给前100个元素赋值为0到99,最后一个元素n0[100]保持初始的0。而x数组是完整的101个值(从x₀到x₁₀₀),调用plt.plot(n0, x)时,最后一个数据点会从(99, x[99])连接到(0, x[100]),这就是那条额外横向线的由来。

两种修正方案

方案一:直接生成正确的n序列

用numpy.arange直接创建0到100的整数数组,替代循环赋值,更简洁高效:

n0 = np.arange(nsteps + 1)

方案二:切片匹配数组长度

如果保留原循环逻辑,绘图时只取n0和x的前100个元素(对应n从0到99,x从x₀到x₉₉):

plt.plot(n0[:-1], x[:-1], color='b', label=f"$k$ = {k:.1f}, $x(0)$ = {x0:.1f} ")

完整修正代码(方案一)

import numpy as np
import matplotlib.pyplot as plt

nsteps = 100
x0 = 0.5
k = 3.5

fig = plt.figure(figsize=(8, 6), dpi=100)

x = np.zeros(nsteps + 1)
n0 = np.arange(nsteps + 1)  # 生成0到100的完整序列

x[0] = x0
for n in range(nsteps):
    x[n+1] = k*x[n]*(1.0 - x[n])
    print(f'n = {n}, x(n) = {x[n]}')

plt.plot(n0, x, color='b', label=f"$k$ = {k:.1f}, $x(0)$ = {x0:.1f} ")
plt.legend(loc='lower right')
plt.xlabel("n")
plt.ylabel("x")
plt.xlim(0,100)
plt.show()

内容的提问来源于stack exchange,提问作者Rex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:52:48