Как мне объявлять и использовать много переменных в Python одновременно? - PullRequest
0 голосов
/ 13 апреля 2019

Я студент, делающий научные расчеты в последнее время, обычно я использую функцию odeint для решения дифференциальных уравнений , теперь мне нужно решить систему дифференциальных уравнений с 100 переменными. Если я буду следовать своему предыдущему стилю программирования на python, я буду действовать как это:

def XFunction(X,t,sets):
   x1,x2,x3,x4,,,,,,x100=X
   lambd=sets
   return np.array([equation1,equation2,equation3,,,,,equation100])

Но этот метод занимает слишком много времени, есть ли более эффективный способ сделать это?

1 Ответ

0 голосов
/ 13 апреля 2019

Да, использование таких целочисленных суффиксов, как это, указывает на то, что вы, вероятно, хотите использовать последовательность, такую ​​как список или массив, но отображение, такое как dict, также может работать. Таким образом, вместо x1,x2,x3... вы пишете X[0], X[1], X[2]..., когда вам это нужно, без предварительного извлечения их в местные жители. Возможно, X уже является массивом в вашей программе.

Если это просто итерация, а не последовательность, вы можете сначала сохранить ее в списке,

X = [*X]

Что позволяет использовать оператор индекса X[i].

Обычно вы не «объявляете» переменные в Python, это подразумевается присваиванием, хотя вы можете объявить без присваивания, дав ему (тип) аннотацию.

Часть [equation1, ...] может быть выполнена с использованием списка , которое похоже на математическое множество, но упорядочено.

Вот глупый пример с одной картой и шагом фильтра. (У вас может быть несколько фильтров или нет фильтров, но вы должны использовать хотя бы один цикл.)

[x**2 for x in X if x % 2 == 0]

Это понимание списка будет генерировать список всех квадратов элементов X, где элемент был четным.

Я не знаю, какой набор формул вам нужен для вашего приложения, но если его можно параметризировать с помощью X, вы можете сделать это следующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...