Найти - Пользователи
Полная версия: Сгенерирывать массив вещественных с не эквидистантным шагом
Начало » Python для новичков » Сгенерирывать массив вещественных с не эквидистантным шагом
1 2 3
old_monty
ElfStone
Геометрическую прогрессию сгенерировать вполне реально, но переменного шага добиться не получается.
Автор, куда же вы пропали? Или не заметили мое решение среди других ответов?
Еще раз, вот с переменным шагом, как вы хотели.
from math import exp, ceil
X = list(map(lambda i: ceil(exp(i)), range(5)))
Y = list(range(56)) # элементы int в списке только для простоты, вообще можно любые
Z = []              # сюда добавляем элементы из Y, выбирая их с (почти) экспоненциально меняющимся шагом
for i in X:
   Z.append(Y[i])
ElfStone
Что такое комплексный шаг, я честно говоря плохо понимаю

Это как-то не по-питоновски, но делает то что нужно -
переменный шаг, меняющийся по экспоненте

    res = []
    step = log(end/start)/float(numb - 1)
    for i in range(numb):
        res.append(exp(log(start) + i * step))
ElfStone
2old_monty

Да действительно,шаг пременный. Спасибо.
Rodegast
> Или не заметили мое решение среди других ответов?
> Еще раз, вот с переменным шагом, как вы хотели.

> > Да действительно, шаг пременный. Спасибо.

Ну хорошо… Округлим результат из моего примера в большую сторону и будет тоже самое:
>>> map(math.ceil, map(math.exp, xrange(10)))
[1.0, 3.0, 8.0, 21.0, 55.0, 149.0, 404.0, 1097.0, 2981.0, 8104.0]
old_monty
Rodegast
Ну хорошо… Округлим результат из моего примера в большую сторону и будет тоже самое:
>>> map(math.ceil, map(math.exp, xrange(10)))

Вы просто проходите по списку целых чисел от 0 до 9 с постоянным шагом (step = 1), и к каждому элементу i применяете функцию exp(i). Где здесь переменный шаг цикла, который требовался по заданию?
Rodegast
> Где здесь переменный шаг цикла, который требовался по заданию?

Какой же ты непонятливый. Последовательность с переменным шагом это и есть результат работы функции. В школе график функции на уроках математики строил? Вот тут происходит тоже самое.
old_monty
Rodegast
Какой же ты непонятливый. Последовательность с переменным шагом это и есть результат работы функции. В школе график функции на уроках математики строил? Вот тут происходит тоже самое.
Непонятливый в данном случае ты. Ты до сих пор не понял (или притворяешься, что не понял) условие задачи. И тут даже близко не происходит “то же самое”. У тебя никакая не “последовательность с переменным шагом”. Такого понятия вообще нет, “последовательность с переменным шагом”. Да и с постоянным тоже. Понятие шага используется только при обходе элементов последовательности. Например, что ты можешь сказать о “шаге” для такой последовательности
mylist = ['a', 'b', '13', 'xyz', 'bla-bla-bla']
если не указано, с каким шагом делать обход ее элементов?

В твоем решении делается обход элементов последовательности из 10 элементов (целых чисел от 0 до 9), но не с переменным шагом, а с постоянным (равным 1), один за другим, применяя к каждому целочисленному элементу exp(i) в функции map. В результате у тебя получилась новая последовательность, также из 10 элементов, значения которых изменяются по экспоненте. Разве это требовалось в условии?
Rodegast
> Такого понятия вообще нет, “последовательность с переменным шагом”. Да и с постоянным тоже.

Тут имеется в виду последовательность чисел, а шаг это разность между соседними числами. По моему это очевидно.

> В результате у тебя получилась новая последовательность, также из 10 элементов, значения которых изменяются по экспоненте. Разве это требовалось в условии?

А разве нет?
Сгенерирывать массив вещественных с не эквидистантным шагом.
Собственно, как сгенерировать последовательность в указанном диапазоне с экспоненциальным шагом?
old_monty
Rodegast
Тут имеется в виду последовательность чисел, а шаг это разность между соседними числами. По моему это очевидно.
А по-моему очевидно, что ты цитируешь выборочно, причем с искажением смысла. Первое сообщение ElfStone было еще не вполне ясное, но ты выбрал именно его, ведь это выгодно для тебя. Однако другое его сообщение (там же, на 1-й странице), где он уточняет свое требование, ты предпочел игнорировать. Ну что ж, придется мне сделать это специально для тебя:
ElfStone
смысл экспоненциального шага не в том что разность между соседними элементами составляет 2.7 а в том что сам шаг изменяется.

Мое решение как раз и реализует переменный шаг (в данном случае близкий к экспоненциальному). Автор темы ElfStone подтвердил, что это то самое, что ему было нужно. Более того, мое решение работает также и для последовательностей с не числовыми элементами, например, с элементами из строк. А твое - нет.

Удивительно, насколько упорно ты не желаешь признать свою ошибку в этой простой задачке. Это же элементарный уровень. Не вижу ничего хорошего в том, что я вынужден подробно разъяснять и доказывать настолько простые вещи тебе, такому вроде бы опытному участнику данного форума.


Rodegast
>> А по-моему очевидно, что ты цитируешь выборочно, причем с искажением смысла… другое его сообщение, где он уточняет свое требование, ты предпочел игнорировать.
> смысл экспоненциального шага не в том что разность между соседними элементами составляет 2.7 а в том что сам шаг изменяется.

Конечно я его игнорировал т.к. ТС там глупость написал.

> Мое решение как раз и реализует переменный шаг …

А в чём собственно это решение состоит? У тебя сначала вычисляется список вещественных чисел с экспоненциальным шагом (это как раз то что и было нужно), а потом он зачем-то итерируеться и далее идёт выборка из к.л. списка. Т.е. ты включил фантазию и с чего-то взял что нужна выборка из списка с экспоненциальным шагом, хотя ТС ни о чём таком не просил.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB