2017-04-06 3 views
1

I 해요 단지 거 해결하기 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

는 2 차원 배열을 만들 append' 대신'extend'의'사용해야합니다 : 예를 들어, 여기 2에 대한 결과입니다. 그러나 여러분의 모든 x 값은 '0'이므로 아마 어딘가에 또 다른 버그가있을 것입니다 ... 그리고 마지막으로 같은 결과에 대해'zip'보다는 'zip'을 사용할 수 있습니다 :'x, y = my_array.T' – Julien

+0

@ 고마워. 네가 말한 대치를 적용했다. 오류는 해결되었지만 프로그램은 아무것도 반환하지 않습니다! –

+0

돌아 오기를 기대하고 있습니까? – Julien

답변

1

@Julien이 말했듯이 extend 대신 append을 사용해야합니다. 또한 귀하의 스 니펫에 plt.show()이 없기 때문에 결과를 볼 수 없습니다. plt.plot(x,y) 뒤에 바로 추가해야합니다. 그런 다음, 출력 될 것입니다 :

enter image description here

0 모든 r에 대한 방정식의 답이 있기 때문에 당신은 더 나은 뭔가 다른 초기 추측을 변경합니다.

enter image description here

관련 문제