2013-11-27 17 views
-1

這裏是我的代碼,「‘廉政’對象不是可調用的」錯誤時想要繪製

import numpy as np 
import math 
import matplotlib.pyplot as plt 

#Voltages 
V,I = np.genfromtxt('Photocurrent_graph_2.csv', dtype=float, delimiter=',', 
        usecols=(0,2), skiprows=1, unpack=True) 

z = np.polyfit(V,I,6) 


def function(x): 
    return (z[0])*x**6 (z[1])*x**5 + (z[2])*x**4 + (z[3])*x**3 + (z[4])*x**2 + (z[6])*x + z[7] 

plt.plot(V, function(V))  
plt.plot(V,I,'ro') 

如果我註釋掉線plt.plot(V,函數(V)),Python不給我任何錯誤。我做錯了什麼?

編輯:

我跟着iCodez的建議,但我沒有設置新的錯誤訊息話題,

return (z[0])*x**6 + (z[1])*x**5 + (z[2])*x**4 + (z[3])*x**3 + (z[4])*x**2 + (z[6])*x + z[7] 
IndexError: index 7 is out of bounds for axis 0 with size 7 

回答

2

問題是這一行:

return (z[0])*x**6 (z[1])*x**5 + (z[2])*x**4 + (z[3])*x**3 + (z[4])*x**2 + (z[6])*x + z[7] 

你忘了+(z[0])*x**6(z[1])*x**5之間。

這裏是固定的版本:

return (z[0])*x**6 + (z[1])*x**5 + (z[2])*x**4 + (z[3])*x**3 + (z[4])*x**2 + (z[6])*x + z[7] 

沒有+,您嘗試通過後直接把它給(z[1])打電話(z[0])*x**6,這是一個整數。

+0

哦,是的。你看,我是想看看我是否錯過了*,而忽略了看,如果我錯過了+。我固定的,但現在我收到此消息:IndexError:索引7超出範圍爲0軸與大小7 – Mack

+0

是對誤差由於Z [7]?我認爲這將是y截距。 – Mack

+0

是的,你是正確的。我其實是做了這件事。感謝您的幫助。 – Mack

0

您的第一個表達式之後錯過+跡象。 你使用太多的括號 - 他們不添加到代碼的清晰度,只是使其不可讀 並有一個更好的方式來寫多項式計算:

sum(c*x**pos for pos, c in enumerate(reversed(z))) 
相關問題