Mathcad: выводим все сочетания без повторений для вектора значений
В MathCAD уже есть 2 встроенные функции, позволяющие вычислить известные из комбинаторики число сочетаний без повторений (combinations) и число размещений (permutations).
Называются они, соответственно, combin
и permut
. У обеих функций по два параметра - общее количество элементов в множестве n
и количество выбираемых элементов k
, предполагается, что
n ≥ k ≥ 0
.
К сожалению, показать сами комбинации выбираемых значений Mathcad не может, это нужно программировать. Ниже изображена функция
combins(v,k)
, которая возвращает матрицу столбцов, соответствующих найденным комбинациям. Первый параметр - вектор из n
элементов, второй - количество выбираемых элементов k
.
На втором скрине приводятся тесты функции.
Функция "по-маткадовски", то есть, стандартным обработчиком error
, реагирует на неправильные параметры, это демонстрируют тесты 2 и 3. Все элементы она по определению считает разными, так что тестировать на векторах с повторяющимися значениями нет смысла.
Последний тест - для маленькой функции time_combins
с теми же параметрами, что у combins
. Она просто измеряет время подбора комбинаций, в нашем случае, по 6 из 20. Заодно это пример того, как измерять в Mathcad время выполнения чего-то в секундах.
Функция для вывода всех комбинаций чисел в Mathcad
Тесты функции
Функция для проверки времени работы другой функции в Mathcad
Скачать или открыть файл Mathcad 15 .xmcd с этим содержимым (52 Кб)
Полагаю, для permut
можно сделать такой же аналог.
10.11.2016, 00:24 [7990 просмотров]