MathCAD


Рис. 3.14. Логические операторы и функции - часть 2


Функцию Решение можно построить намного проще – вычислить среднее арифметическое значений аргументов. Эту работу выполняет встроенная Mathcad-функция mean. Если оно окажется больше, чем 0.5 – то решение принято (возвращается единица), нет – нуль:

Решение(V):= mean(V) > 0.5

Число аргументов новой функции Решение, таким образом, допустимо увеличивать, не прибегая к сложному дереву булевых операций, показанных в пункте 8 на рис. 3.14.

В пункте 9 на рис. 3.14 формируется еще одна функция Решение для голосования комитета с любым числом членов, принимающих решение большинством голосов. Но при этом часть голосующих обладает правом вето

(пример – Совет Безопасности ООН где, как писал Джорж Оруэл: «все равны, но некоторые равнее»). Люди (или страны: США, Россия, Китай, Франция и Великобритания, если иметь в виду СБ ООН) с правом вето у нас объединены в вектор Const (постоянные члены СБ), а все остальные – в вектор Var. Если для принятия решения большинством голосов годится среднее арифметическое, то для блокировки принятия решения – среднее геометрическое (gmean): корень n-й степени из произведения n сомножителей. Эта встроенная функция появилась только в восьмой версии Mathcad. При этом gmean требует, чтобы все элементы вектора (матрицы) аргумента были ненулевыми. Поэтому в пункте 9 на рис. 3.14 мы сначала переопределили функцию gmean так, чтобы она «проглатывала» и нулевые элементы вектора-аргумента, а потом уже с ее помощью сформулировали функцию Решение для электората типа СБ ООН. В конце пункта 9 показаны три типичных исхода голосования:

— решение принимается большинством голосов;

—    решение проваливается одним человеком с правом вето;

—    решение не проходит, так как большинство против.

Конечно, использование среднего геометрического для подсчета голосов – это чистой воды извращение (см. название данного этюда). Тут можно использовать функцию And – просто логическое умножение безо всякого корня. В пункте 10 на рис. 3.14 сформулированы функции And и Or, аргументы которых – векторы-столбцы с переменным числом элементов[26].




- Начало -  - Назад -  - Вперед -