2013-02-22 2 views
0

Я пытаюсь запустить следующий скрипт. Мое намерение состояло в том, чтобы получить результат, который даст один высокий уровень гаусса в середине, за которым следуют два маленьких гаусса по обе стороны от большого. Это суммирование Фурье всех значений y, принимающих разные значения n каждый раз и их построение против x. Но почему-то я не получаю желаемого результата. Некоторая помощь будет оценена по достоинству. код-Суммирование Фурье с различными заказами

from pylab import * 

n = 6  
D = 6 

x = linspace(-3, 3, 13000)  
y = [1, 1, 1, 1, 1]  
F = [] 

for i in range(1,n): 
    F=sum((item*cos(2*pi*i*x/D)for item in y)) 

plot(x,F,'r') 

show() 
+0

Вы назначаете 'F'' n-1' раз. Вы имели в виду 'F [i] = sum (...)' или 'F.append (sum (...))'? –

+0

Суммирование должно быть таким: Y1 * cos (2 * pi * i1 * x/D) + Y2 * cos (2 * pi * i2 * x/D) + Y3 * cos (2 * pi * i3 * x/D) + Y4 * cos (2 * pi * i4 * x/D) + Y5 * cos (2 * pi * i5 * x/D) Он должен выполнить процедуру для всех значений x. И, наконец, это должно заложить их против x. Я не знаю, в каком направлении. – user2095624

ответ

0

Вы переназначение F каждый раз через петлю. Это может быть вашей проблемой, так как в конце вашего цикла for i in range(1,n) у вас есть F как число, а не как список цифр.

Чтобы создать список значений F, просто измените F = sum(....) на F.append(sum(...)), и в конце вы получите список значений.

Также обратите внимание, что range(1, n) - это диапазон от 1 до n-1. Это может быть или не быть тем, что вы хотели.

Смежные вопросы