Алгоритмический контроль
Алгоритмические методы контроля, так же как и логические, предусматривают проверку контрольных соотношений. Однако сами контрольные соотношения непосредственно вытекают из математических особенностей решаемых задач. Алгоритмический контроль поэтому можно использовать только в устройствах, перерабатывающих информацию.
Каждая математическая задача имеет свои особенности, поэтому хотя бы относительно полное описание алгоритмических методов не представляется возможным.
Ниже будут рассмотрены отдельные наиболее типичные методы контроля. Каждый из них может быть использован для контроля правильности решения определенного класса задач.
Проверка попадания в область ответа заключается в том, что для определенных этапов вычислений заблаговременно рассчитывается область возможных ответов при заданных ограничениях на значения исходных данных.
В программе после контролируемого участка необходимо предусмотреть проверку попадания результата в область ответов. Если, например, область ответов результата у задана ( и ), то после вычисления необходимо осуществить проверку
Приведем пример определения границ области ответа. Пусть требуется вычислить определенный интеграл
Область ответа в данном случае определяется соотношениями
В некоторых случаях границы области ответа не требуют вычислений, так как они задаются самим существом получаемого результата. Например, если результатом вычислений является вероятность Р, то можно проверить удовлетворение условия
Если переменная у является синусом или косинусом, то можно проверить условия
Проверка попадания в область ответа позволяет обнаружить грубые ошибки в реализации программ. Этот .метод контроля незначительно снижает коэффициент производительности и требует обычно небольшого числа дополнительных команд. Применение его целесообразно в тех случаях, когда область ответа либо заранее известна, либо легко вычисляется.
Контроль методом обратного просчета состоит в том, что по полученному результату находят исходные данные (аргументы) и сравнивают их с начальными исходными данными. Если они совпадают (с заданной точностью), то полученный результат считается верным. Для обратного просчета могут быть использованы обратные функции, например, и т. д.
Одним из примеров применения этого метода является контроль правильности вычисления кубического корня . Известно, что извлечение кубического корня происходит по подпрограмме. Для контроля работы этой подпрограммы можно возвести в куб результат и предусмотреть проверку условия Если указанное условие выполнено, то корень вычислен верно.
Обратный просчет позволяет с очень высокой вероятностью обнаружения ошибок проконтролировать правильность выполнения программы. Преимущество его состоит еще и в том, что он одинаково эффективно обнаруживает ошибки, возникшие как в результате сбоев, так и в результате отказов.
Применение этого метода целесообразно в тех случаях, когда обратный просчет не занимает много времени. В приведенном примере вычисление требует выполнения нескольких десятков команд, а проверка условия - всего пяти команд, следовательно, в данном случае метод обратного просчета достаточно эффективен.
Проверка контрольных соотношений заключается в нахождении косвенных соотношений между переменными, участвующими в вычислениях, и проверке соблюдения этих соотношений.
Например, если решается задача на вычисление углов А, В и С треугольника, то можно проверить соблюдение неравенств
Выполнение данного неравенства с высокой степенью вероятности гарантирует правильность выполнения программы.
Приведем еще один пример использования контрольных соотношений.
Пусть имеется программа обращения матриц. Исходной матрицей является матрица . В результате выполнения программы получают обратную матрицу . Известно, что произведение прямой и обратной матриц дает единичную матрицу. Следовательно, соотношение , где - единичная матрица, может быть использовано как контрольное. Его проверка обеспечивает выявление всех ошибок, вызванных как сбоями, так и отказами.
Недостатком данного соотношения является необходимость большого числа команд для его проверки. Можно получить более простые соотношения, требующие меньшего числа команд для своей реализации, но и обладающие меньшей эффективностью. Например, не производя полного умножения матриц А и , можно вычислить только отдельные элементы единичной матрицы и убедиться на выбор, что ее диагональные члены равны единице, а остальные - нулю.
Составим контрольные соотношения для проверки четырех элементов единичной матрицы.
Обозначив , получаем
Отсюда находим контрольные соотношения
где е задается исходя из точности вычислений.
Проверка контрольных соотношений является эффективным методом алгоритмического контроля. Рекомендуется применение этого метода во всех случаях, когда могут быть найдены относительно простые контрольные соотношения.
Проверка контрольных соотношений с использованием дополнительных переменных состоит во введении искусственных переменных, которые либо связаны известными соотношениями основными переменными,
либо значения этих переменных при определенных условиях найдены заранее. По существу данный метод является одним из частных случаев метода проверки контрольных соотношений.
Можно выделить два случая введения дополнительных переменных. В первом случае вводятся математические переменные, не имеющие непосредственного физического смысла, во втором - переменные, учитывающие физические особенности решаемой задачи. Дать какие-то общие рекомендации по введению дополнительных переменных невозможно, так как здесь важна именно специфика задачи. Поэтому проиллюстрируем данный метод на примерах.
Пусть решается алгебраическое уравнение
Назовем это уравнение исходным, а корни его обозначим
Перейдем к новому уравнению
Корни этого вспомогательного уравнения обозначим . Первые п корней вспомогательного уравнения совпадают с корнями исходного, а последний n+1 корень равен а.
Теперь можно рекомендовать следующий способ контроля правильности функционирования программы решения алгебраического уравнения:
перейти от исходного уравнения к решению вспомогательного уравнения ;
найти все корни . вспомогательного уравнения;
для каждого полученного значения корня осуществить проверку
Если хотя бы для одного из корней неравенство выполняется, считают, что уравнение решено верно. Здесь в качестве дополнительной переменной выступает заранее известное значение одного из корней.
Описанный метод может найти лишь ограниченное применение, так как в общем случае отыскиваются не все корни уравнения.
Покажем, как данный метод может быть применен для контроля решения некоторых дифференциальных уравнений.
Допустим, что решается уравнение
при начальных условиях у(хо)= у0, у'(хо)=у'0 .
Для контроля введем дополнительную переменную, продифференцировав дважды исходное уравнение:
Теперь, решая заданное уравнение, можно на каждом шаге (либо в выбранных точках) находить значения дополнительной переменной и проверять условия
Выполнение этого неравенства будет свидетельствовать о правильности вычислений. Два приведенных примера показывают, как можно ввести в программу дополнительные переменные, непосредственно связанные с математическими особенностями задачи.
Метод контроля за счет введения дополнительных переменных можно рекомендовать в тех случаях, когда для их реализации не требуется большого числа команд.
Контроль сравнением переменной с экстраполированным значением используется, как правило, применительно к медленно меняющимся переменным. Состоит он в том, что на каждом шаге реализации программы вычисляется два значения переменной. Одно значение вычисляется на основании вновь поступивших данных, другое (экстраполированное значение) находится исходя из значений переменных ( ), вычисленных на предыдущих шагах. В зависимости от обстоятельств могут применяться различные методы экстраполяции. На экстраполированное значение переменной накладывается так называемый строб Ах и находятся предельные возможные значения переменной и . Если значение попало внутрь строба, то считают, что ошибки вычислений отсутствуют, и программа продолжает выполняться обычным образом. Если же вычисленное значение переменной вышло за пределы строба, то фиксируется факт наличия ошибки.
Приведем контрольные соотношения для линейного способа экстраполяции:
Если величина постоянна, то строб называется фиксированным, если меняется в зависимости от некоторых условий, то строб носит название динамического.
Программная реализация контроля с помощью фиксированного строба относительно проста, но обладает меньшей эффективностью, чем контроль с помощью динамического строба.
В простейшем случае для последующего определения величины динамического строба на каждом шаге реализации программы вычисляется
Величина . Величина строба для последующего шага находится из соотношения
где коэффициент к подбирается заблаговременно на основании тщательного изучения характера изменения переменной х.
Описанный метод контроля позволяет с высокой эффективностью проверять правильность вычисления медленно меняющихся переменных. Весьма положительным его качеством является то, что в определенной мере он позволяет исключить влияние отдельных ошибок при работе программы. Если, например, в результате ошибки значение вышло за пределы строба, то вместо можно взять величину и продолжать вычисления (в случае необходимости строб расширяют). Выход переменной за пределы строба на нескольких шагах подряд свидетельствует о грубых систематических ошибках в работе программы.
Подстановка результата применяется для контроля программ решения линейных и нелинейных уравнений, а также систем уравнений.
Данный метод контроля состоит в том, что полученные результаты подставляются в исходное уравнение и проверяется, превратилось ли оно в тождество.
Пусть, например, программа предназначена для решения алгебраического уравнения вида
Получив в результате выполнения программы корни уравнения , можно подставить последовательно каждый из корней в уравнение и проверить выполнение неравенств
Величина г* при этом определяется заданной точностью вычислений. Если подстановка корня л:,- приводит к выполнению неравенства, то корень вычислен верно.
Данный метод обладает высокой эффективностью и его применение, как правило, бывает целесообразным.
Общих методов оценки эффективности алгоритмических методов контроля пока не существует. Поэтому в каждом конкретном случае необходимо определять характеристики для выбранного метода, пользуясь приведенными выше соотношениями, и решать вопрос о целесообразности его применения.
Дата добавления: 2017-03-29; просмотров: 1172;