solvelib::conditionalSortВозможные сортировки списка в зависимости от параметров
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
solvelib::conditionalSort(l)
solvelib::conditionalSort(l) сортирует список l в порядке возрастания. В отличие от этого, для sort, только обычный порядок на вещественные числа а не внутренний порядок (см. sysorder) используется. solvelib::conditionalSort делает анализ случая, если элементы списка содержат indeterminates.
solvelib::conditionalSort вызывает решатель неравенства, чтобы получить простые условия в анализе случая. Способность solvelib::conditionalSort распознать сортировки невозможными таким образом ограничивается способностью решателя неравенства распознать неравенство неразрешимым. Смотрите Пример 3.
Только выражения, представляющие вещественные числа, могут быть отсортированы. Это - ошибка, если невещественные числа происходят в списке; это неявно принято, что все параметры берут только такие значения, которые заставляют все элементы списка быть действительными.
Сортировка нестабильна, т.е. равные элементы могут быть помещены в любой порядок в получившемся списке; эти случаи могут быть перечислены отдельно в анализе случая.
Обычные упрощения для кусочных заданных объектов применяются, например, равенства, которые могут быть выведены из условия, применяются (заменой) к списку.
solvelib::conditionalSort учитывает предположения на всех происходящих идентификаторах.
В самом простом случае, сортируя двухэлементный список [a,b] только суммы к решению неравенства a<=b w.r.t. все происходящие параметры.
solvelib::conditionalSort([x,x^2])

Если неявными или явными предположениями на параметрах никакие различные сортировки не могут произойти, результатом является только список.
Согласно неявному предположению, что все элементы списка действительны, x mustBeNonnegative.
solvelib::conditionalSort([sqrt(x), -3])
![]()
Иногда случаи не распознаны невозможными.
assume(x>5): solvelib::conditionalSort([x,gamma(x)])

|
Список арифметических выражений |
Перечислите, если сортировка является тем же самым для всех возможных значений параметров; или объект типа piecewise если некоторый анализ случая необходим.
Сложность сортировки списка элементов n составила
.