我目前正在尝试绘制python中某个函数的迭代图。我已经定义了如下函数,但是我不确定如何绘制图形,以使y值位于y轴上,而迭代次数位于x轴上。
因此,我尝试将plt.plot
函数的x值用作不同的值,但将logistic(4, 0.7)
作为y轴的y值。
def logistic(A, x):
y = A * x * (1 - x)
return y
但是每个返回一个错误。任何人都可以阐明这一点,我希望进行总共1000次迭代。
答案 0 :(得分:0)
当您向我们展示函数 logistic(4,0.7)时,我对您所说的x是重复次数并不太了解。据我所知,迭代是整数,整数。您不能只进行一半或部分迭代
def logistic(A, x):
y = A * x * (1 - x)
return y
A = 1
x_vals = []
y_vals = []
for x in range(1,1000):
x_vals.append(x)
y_vals.append(logistic(A,x))
#plt.plot(x_vals,y_vals) # See every iteration
#plt.show()
plt.plot(x_vals,y_vals) # See all iterations at once
plt.show()
答案 1 :(得分:0)
啊,后勤图。您是否要绘制蜘蛛网图?如果是这样,您的错误可能在其他地方。正如其他人提到的那样,您应该发布错误消息和代码,以便我们更好地为您提供帮助。但是,根据您给我们的信息,您可以使用numpy.arrays
来获得所需的结果。
import numpy as np
import matplotlib.pyplot as plt
start = 0
end = 1
num = 1000
# Create array of 'num' evenly spaced values between 'start' and 'end'
x = np.linspace(start, end, num)
# Initialize y array
y = np.zeros(len(x))
# Logistic function
def logistic(A, x):
y = A * x * (1 - x)
return y
# Add values to y array
for i in range(len(x)):
y[i] = logistic(4, x[i])
plt.plot(x,y)
plt.show()
但是,使用numpy.arrays
,您可以省略for
循环而只需
x = np.linspace(start, end, num)
y = logistic(4, x)
,您将获得相同的结果,但速度更快。