2017-04-06 6 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次元配列を作成する代わりに '' extend'のappend'を使用する必要があります。しかし、あなたの 'x'値はすべて' 0'なので、別のバグがあるかもしれません...そして最後に 'x、y = my_array.T'のように' zip'ではなくzipを使うことができます。 – Julien

+0

@ジュリアン:ありがとう。私はあなたが言った交換を適用しました。エラーは解決されますが、プログラムは何も返しません! –

+0

何を返すと思いますか? – Julien

答えて

1

@Julien氏によると、extendの代わりにappendを使用する必要があります。さらに、あなたのスニペットにはplt.show()が存在しないため、結果を見ることはできません。 plt.plot(x,y)の後ろに追加する必要があります。その後、出力は次のようになります。

enter image description here

0はすべてrための方程式の答えですので、あなたがより良い何か他のものにあなたの最初の推測を変更します。例として、ここでの結果は2ためです:

enter image description here

関連する問題