2017-04-06 57 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