2017-04-06 58 views
1

我只是要解决并绘制与matplotlib非线性方程,但有一个错误说:类型错误:绘图阵列包括元组

TypeError: zip argument #1 must support iteration

你能帮我解决它...

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) 
+0

你需要使用'的append'代替'extend'创建一个二维数组。但是你可能有另一个bug,因为你所有的'x'值都是'0' ...最后请注意,对于相同的结果,你可以使用换位而不是'zip':'x,y = my_array.T' – Julien

+0

@朱利安:谢谢。我已经应用了你所说的替换。错误已解决,但程序不会返回任何内容! –

+0

你期待它返回什么? – Julien

回答

1

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

enter image description here

你最好改变你的初始猜测到别的东西,因为0是方程的所有r答案。作为一个例子,这里是2结果:

enter image description here