У меня есть определение последовательности
xn+1 = f( xn , xn-1)
Где x< sub>n — это x, вычисляемый во времени тн. Любое значение в последовательности определяется некоторой функцией двух предыдущих значений (и временного шага, но на данный момент оно постоянное). Я хотел бы сгенерировать первые значения N в этой последовательности, учитывая x0 и x1 .
Какой самый питонический способ сделать это?
Мой текущий подход — просто зациклиться. Я создаю массив numpy.ones правильного размера, а затем просматриваю его по индексу. Если индекс = 0 или 1, я меняю значение с 1 на x0 / x 1 соответственно. Для больших индексов я просматриваю предыдущие значения в массиве и применяю функцию.
Но мне кажется, что здесь не используются методы массива numpy, поэтому мне интересно, если есть лучший подход?
Код
В моем коде есть функция createSequence, которая принимает определение xn+1, а также граничные условия и временной шаг и выводит последовательность, соответствующую этим правилам. Обратите внимание: я новичок в Python, поэтому буду признателен за любые общие советы!
import numpy as np
def x_next(x_current,x_previous,dt):
"""Function to return the next value in the sequence
x_current and x_previous are the values at tn and tn-1 respectively
dt is the time step
"""
return (x_current - x_previous)/dt #as an example
def createSequence(x_next,x0,x1,start,stop,dt):
""" Function to create sequence based on x_next function, and boundary conditions"""
num = (stop-start)/dt
x_array = np.ones(int(num))
x_array[0] = x0
x_array[1] = x1
for index in range(len(x_array)):
if index == 0:
x_array[index] = x0
elif index == 1:
x_array[index] = x1
else:
x_current = x_array[index - 1]
x_previous = x_array[index - 2]
x_array[index] = x_next(x_current,x_previous,dt)
return x_array
print(createSequence(x_next=x_next,x0=0.1,x1=0.2,start=0,stop=20,dt=0.1))
Подробнее здесь: https://stackoverflow.com/questions/479 ... difference
Питонический способ создания последовательности из линейной разности ⇐ Python
Программы на Python
1737285477
Anonymous
У меня есть определение последовательности
xn+1 = f( xn , xn-1)
Где x< sub>n — это x, вычисляемый во времени тн. Любое значение в последовательности определяется некоторой функцией двух предыдущих значений (и временного шага, но на данный момент оно постоянное). Я хотел бы сгенерировать первые значения N в этой последовательности, учитывая x0 и x1 .
Какой самый питонический способ сделать это?
Мой текущий подход — просто зациклиться. Я создаю массив numpy.ones правильного размера, а затем просматриваю его по индексу. Если индекс = 0 или 1, я меняю значение с 1 на x0 / x 1 соответственно. Для больших индексов я просматриваю предыдущие значения в массиве и применяю функцию.
Но мне кажется, что здесь не используются методы массива numpy, поэтому мне интересно, если есть лучший подход?
Код
В моем коде есть функция createSequence, которая принимает определение xn+1, а также граничные условия и временной шаг и выводит последовательность, соответствующую этим правилам. Обратите внимание: я новичок в Python, поэтому буду признателен за любые общие советы!
import numpy as np
def x_next(x_current,x_previous,dt):
"""Function to return the next value in the sequence
x_current and x_previous are the values at tn and tn-1 respectively
dt is the time step
"""
return (x_current - x_previous)/dt #as an example
def createSequence(x_next,x0,x1,start,stop,dt):
""" Function to create sequence based on x_next function, and boundary conditions"""
num = (stop-start)/dt
x_array = np.ones(int(num))
x_array[0] = x0
x_array[1] = x1
for index in range(len(x_array)):
if index == 0:
x_array[index] = x0
elif index == 1:
x_array[index] = x1
else:
x_current = x_array[index - 1]
x_previous = x_array[index - 2]
x_array[index] = x_next(x_current,x_previous,dt)
return x_array
print(createSequence(x_next=x_next,x0=0.1,x1=0.2,start=0,stop=20,dt=0.1))
Подробнее здесь: [url]https://stackoverflow.com/questions/47951758/pythonic-way-to-generate-sequence-from-linear-difference[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия