неверный синтаксис в Python при попытке построить

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 - красный:\

Что теперь не так?: (

EDIT:

Я добавил еще один) в конце суммы, но теперь я получаю огромную ошибку:

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'

Должен ли я сделать так, чтобы выражение sum возвращало массив, из которого я могу построить или?

  • 1
    Ваша вторая ошибка отличается от вашей первой ошибки. Пожалуйста, задайте новый вопрос.
Теги:
syntax
plot

1 ответ

4

Скобки в return 0.5*(1 + sum(... не сбалансированы.

В качестве стиля я бы рекомендовал избегать импорта from <module> import * -style. В вашем конкретном примере вы получите однобуквенное имя переменной (e), импортированное в глобальное пространство имен, которое затем вы начнете использовать. Это может привести к путанице и, что еще хуже, трудно диагностировать ошибки.

  • 1
    Я исправил проблему с круглыми скобками, но теперь у меня есть TypeError ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню