Python 类型错误:打印包含元组的数组

Python 类型错误:打印包含元组的数组,python,matplotlib,Python,Matplotlib,我只是想用matplotlib求解并绘制一个非线性方程,但有一个错误是: TypeError:zip参数#1必须支持迭代 你能帮我修一下吗 import numpy as np import matplotlib.pyplot as plt from scipy.optimize import fsolve r = np.arange(-100, 100, step=0.01, dtype=float) def equation(p,r0): x = p r = r0

我只是想用matplotlib求解并绘制一个非线性方程,但有一个错误是:

TypeError:zip参数#1必须支持迭代

你能帮我修一下吗

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import fsolve

r = np.arange(-100, 100, step=0.01, dtype=float)

def equation(p,r0):
    x = p
    r = r0
    return (r * x + np.power(x,3)- np.power(x,5))

temp = []

for i in r:
    x = fsolve(equation, 0, args=(i,))
    temp.extend((i,x))

my_array = np.array(temp)

#print(my_array)
x, y = zip(*my_array)
plt.plot(x,y)

正如@Julien所说,您必须使用
append
而不是
extend
。此外,我想您可能看不到结果,因为您的代码片段中没有
plt.show()
。您需要在plt.plot(x,y)之后添加它。然后,输出将是:

你最好把你最初的猜测改成别的,因为
0
是所有
r
的等式的答案。例如,下面是
2
的结果:


您需要使用
append
而不是
extend
来创建二维数组。但是您可能在某个地方有另一个bug,因为您的
x
值都是
0
。。。最后请注意,对于相同的结果,您可以使用转置而不是
zip
x,y=my_array.T
@Julien:谢谢。我已经申请了你说的替代品。错误已解决,但程序不返回任何内容!你希望它返回什么?@Julien:一个二维绘图,用来绘制元组集,每个元组的第一项是
r
中的一个元素,第二项是
dsolve
作为
x
的输出,对应于特定的
r
。你是在命令行中运行它还是以交互方式运行它?它对我来说是互动的。。。如果从命令行执行此操作,则可能需要在绘图后设置程序的姿势,以便在图形自动关闭之前查看图形。不知道怎么做,因为我从来没有使用命令行绘图,但我相信你可以在其他帖子中找到答案。。。