2011-05-23 70 views
1

我的失誤與無限因子和XD我重做代碼後,但我不斷收到語法錯誤:\無效的語法繪製

from scitools.std import * 
from math import factorial, cos, e 
from scipy import * 
import numpy as np 


def f1(t): 
    return 0.5*(1 + sum((a**(2*n)*cos(2*sqrt(1 + n)*t))/(e**a**2*factorial(n)) for n in range(0,100))) 

a=4 
t = linspace(0, 35, 1000) 
y1 = f1(t) 

plot(t, y1) 

xlabel(r'$\tau$') 
ylabel(r'P($\tau$)') 
legend(r'P($\tau$)') 
axis([0.0, 35.0, 0.0, 1.0]) 
grid(True) 
show() 

它說,有一個在我的程序中的錯誤:無效的語法和a是紅色的:\

現在有什麼問題? :(

編輯:

我在總和年底又增加了),但現在我不斷收到巨大的錯誤:

Traceback (most recent call last): 
    File "D:\faxstuff\3.godina\kvantna\vježbe\qm2\v8\plot.py", line 12, in <module> 
    y1 = f1(t) 
    File "D:\faxstuff\3.godina\kvantna\vježbe\qm2\v8\plot.py", line 8, in f1 
    return 0.5*(1 + sum((a**(2*n)*cos(2*sqrt(1 + n)*t))/(e**a**2*factorial(n)) for n in range(0,100))) 
    File "C:\Python26\lib\site-packages\numpy\core\fromnumeric.py", line 1415, in sum 
    res = _sum_(a) 
    File "D:\faxstuff\3.godina\kvantna\vježbe\qm2\v8\plot.py", line 8, in <genexpr> 
    return 0.5*(1 + sum((a**(2*n)*cos(2*sqrt(1 + n)*t))/(e**a**2*factorial(n)) for n in range(0,100))) 
TypeError: unsupported operand type(s) for /: 'numpy.ndarray' and 'numpy.float64' 

我應該使之表達還給一個數組,我可以繪製或?

+1

您的第二個錯誤是與您的第一個錯誤不同的問題。請提出一個新問題。 – 2011-05-23 18:53:57

回答

4

return 0.5*(1 + sum(...中的括號不平衡。

作爲一個風格問題,我會建議避免from <module> import * -style進口。在您的具體示例中,最終將導入全局名稱空間的單字母變量名稱(e),然後您將繼續使用該名稱。這可能會導致混淆,更糟糕的是,難以診斷的錯誤。

+1

我糾正了括號問題,但現在我有TypeError ... – 2011-05-23 18:13:18