Автоматическое определение отношений между переменными рабочего пространства через функции - PullRequest
0 голосов
/ 06 января 2011

Я пытаюсь написать функцию, которая обнаружит эту связь между переменными, которые я получил в рабочей области:

v1 - fft(v2) = 0

Где v1, v2 - переменные моего рабочего пространства.

Иногда мне нужно знать, какие переменные имеют определенное числовое отношение. Если мне тридцать, я не хочу искать это отношение «вручную», просто введя предложение для каждой пары различных переменных.

Я хотел бы, чтобы функция, в которой я вводил (или изменял эту функцию каждый раз, когда мне это нужно), предложение (например, то, что я написал ранее), и функция показывает мне пару переменных, которые я ищу. Кто-нибудь знает как это сделать?

1 Ответ

5 голосов
/ 06 января 2011

Вы можете использовать who () для программного получения списка переменных, которые существуют в настоящее время. Затем вы можете использовать eval () , чтобы получить их значения. В этот момент вы можете использовать довольно тривиальный вложенный цикл для итерации по всем возможным парам в поисках этих отношений.

Примечание 1: Использование eval() для «нормального» программирования считается плохим стилем; он действительно должен использоваться только для таких задач метапрограммирования, как этот.

Примечание 2: Если у вас в рабочей области N переменные, есть N^2 упорядоченных пар. Итерирование может занять некоторое время, если N большое.

Примечание 3: По сути, вы ищете равенство между переменными, которое может быть не особенно надежным в плавающей точке.

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