Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 11, 2013 10:30:57

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Вычислительные рассчеты

Ну это квадратный корень же. Мне показалось оно быстрей так будет. Сейчас замерил - разницы нет, оказывается.

def calcf(n):
    const = 2 * pi * pi    
    x = 1.0 / n * np.arange(n+1)
    one = np.sin(pi*x)
    return np.vstack(e*const*one for e in one)

Офлайн

#2 Ноя. 11, 2013 11:21:50

keekdown
Зарегистрирован: 2013-11-09
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Вычислительные рассчеты

sergeek
Ну это квадратный корень же. Мне показалось оно быстрей так будет. Сейчас замерил - разницы нет, оказывается.
Я имел ввиду что
const = 2**0.5*pi != 2*pi*pi

Офлайн

#3 Ноя. 11, 2013 12:24:48

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Вычислительные рассчеты

блин ну посмотрите внимательнее

2**0.5 * pi == (2*pi*pi) **0.5
обе функции дают один результат
from math import pi
import numpy as np
  
def calcf(n):
    const = 2**0.5 * pi
     
    x = 1.0 / n * np.arange(n+1)
    one = np.sin(pi*x)*const 
    return np.vstack(e*one for e in one)
def calcf(n):
    const = 2 * pi * pi
     
    x = 1.0 / n * np.arange(n+1)
    one = np.sin(pi*x)
    return np.vstack(e*const*one for e in one)
в первом примере
return np.vstack(e*one for e in one)
в вектор one уже добавлены множители корня константы и при перемножении она просто возводится в квадрат и получается исходная константа
во втором
return np.vstack(e*const*one for e in one)
константа добавляется при самом перемножении



Отредактировано sergeek (Ноя. 11, 2013 12:25:20)

Офлайн

#4 Ноя. 11, 2013 13:01:50

keekdown
Зарегистрирован: 2013-11-09
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Вычислительные рассчеты

sergeek
блин ну посмотрите внимательнее
Понял,простите-не заметил.Благодарен :-)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version