Cтраница 2
А п В - ограниченные в пространстве Е, оператор А необратим и фредгольмов. Для неоднородного уравнения Аи BuJrj ( t) решение существует только при определенной гладкости / () и нек-рых условиях согласования значений f ( t) и ее производных с начальными данными. Количество производных, к-рые должны иметь нек-рые компоненты f ( t), и количество условий согласования равны максимальной длине Д - присоеднненных цепочек оператора А. [16]
От оператора Ф10 управление передается оператору Рц. Содержание оператора Рп составляет переменная команда I, передающая управление различным операторам ( Ф12, Ф) Фгъ Ф24) Фав) Ф32 Фзв) в зависимости от того, какая из совокупности нормально распределенных первичных ошибок будет моделироваться. Вначале оператор Рц передает управление следующему за ним оператору Фхг, осуществляющему формирование случайных значений первичной ошибки AL Если полученное значение удовлетворяет пределам поля допуска ( оператор Р13), то управление ( по стрелке с индексом 1) передается оператору Flb. Цепочка операторов Ф5Рб FU работает циклически до тех пор, пока не лолучится значение первичной ошибки А /, лежащей в пределах поля допуска. После этого вступает в действие оператор Flb, меняющий переменную команду I ( оператор Рц), с тем, чтобы обеспечить формирование следующей первичной ошибки, распределенной по нормальному закону, а именно ошибки А-у - неперпендикулярности оси прорези кулисы к оси элемента поступательной пары. [17]
Похоже, что мы уже исчерпали вс & полезные факты, которые нам могут дать линейные программы. Главными нашими достижениями являются открытие важности анализа информационных связей программы, а также извлечение из программы тех и только тех ее характеристик, которые нам помогают в решении задачи экономии памяти и которые изображаются в виде ее операторной схемы. После того как мы уже несколько освоились с этой находкой, давайте разберем подробнее, что такое информационная связь, как мы ее находим по заданной программе и как используем для распределения памяти. S к Т ведет цепочка операторов, и, наконец, в этой цепочке ни одни из операторов не имеет х своим результатом. Для построения информационных связей и вообще, для решения задачи экономии памяти, нам достаточно иметь операторную схему программы, в которой указаны символы операторов, их аргументы, результаты и сопоставленные им имена величин, а также порядок выполнения операторов. [18]
Гораздо проще отладить программу, если вывод не слишком велик и если перезаписывание памяти не оказывается побочным эффектом первичной ошибки. Помните Ваши тесты так, чтобы они изменяли направление ненормальных ситуаций на безопасное. Используйте последний ELSE в цепочке операторов ELSE IF, чтобы не пропустить условия, которые не должны, но все-таки могут встретиться. Не допускайте выполнения циклов, если переменная лежит вне ожидаемой области. [19]
Хотя устанавливать произвольные ограничения нелегко, кажется разумным сохранять размеры отдельных программ в пределах страницы, поскольку, чем короче программа, тем легче ее охватить. Если граница страницы пройдена, то трудно проследить за разметкой сдвигов по строкам. Даже процедуры, размер которых превышает одну страницу, спроектированы так, чтобы их было просто понять: каждая представляет собой просто цепочку операторов ELSE IF, предназначенных для осуществления выбора из большого набора альтернатив, а каждую альтернативу просто понять. [20]
Вспомнив правила выполнения каждого из этих шагов, мы понимаем, что секрет кроется в процедуре прокладки маршрутов. Цепочка операторов в исходной схеме ( рис. 1.10 а) (, , 1, х) не может осуществиться и смыслом задачи не предусмотрена. Процедура вычисления F ( x) так и работает: оператор возврата передает управления не любому из операторов / или X, а выбирает один из них в строгой зависимости от места вызова процедуры. Попав на f от, мы уйдем на /, попав на от -, мы уйдем на X, а перекрестные связи от - к / и от - f - к х невозможны. Таким образом, мы видим, что конструкция операторной схемы так, как мы ее ввели, не учитывает, что в реальной программе не все цепочки операторов, которые можно формально построить по схеме, на самом деле фактически выполняются. Первой реакцией на это открытие была бы попытка так подправить определение схемы, чтобы цепочки, невозможные в каком-то смысле в исходной схеме, обязательно оставались бы невозможными в результирующей. [21]
Следующим шагом в построении имитационной модели является проверка достоверности схемы программы модели. В соответствии с числом типов процессов исследователь имеет дело с множеством схем. Возможны два вида процессов: с циклической и дреновидной структурами. В первом случае алгоритм процесса замкнут с конца на начало, его выполнение представляет чередование алгоритмических операторов с операторами синхронизации. Во втором случае по окончании выполнения всей цепочки операторов синхронизации процесс переходит в пассивное состояние. В зависимости от вида процессов проверка достоверности схемы программ модели также существенно различается. Для процессов с циклическим алгоритмом проверка достоверности схемы каждого отдельного процесса не гарантирует достоверности всей модели. Задача усложняется, если процессы взаимодействуют с помощью операторов запуска и останова. Для процессов с древовидной структурой исследователь, просмотрев процессы поочередно, может быть уверен в том, что программа модели соответствует замыслу. В обоих случаях при проверке схемы программы модели зачастую используются диаграммы развития процессов в модельном времени. Отметим, что проверке по схеме не поддаются вопросы информационной стыковки модели. И совсем уже плохо обстоит дело с прокруткой программы модели по схеме для случая, когда алгоритм поведения зависит от взаимодействия с другими процессами по информации. [22]