Основы современных компьютерных технологий

         

Основы решения вычислительных задач


Рассмотрим принципы описания и решения простейших вычислительных задач в системе ТК Solver Для того чтобы в ТК Solver появилась текущая вычислительная задача необходимо ее описать как минимум на двух панелях

  • на панели Rule Sheet описать вычислительную модель в виде условных и безусловных предложений вычислимости
  • на панели Variable Sheet сформулировать задачу путем явного разбиения переменных входящих в ВМ на входные (типа Input) и выгодные (типа Output) и д ы входных переменных задать начальные значения
  • После такою описания в ТК Solver появляется текущая вычислительная модель задачи

    Вычислительная модель представляет собой декларативное описание отношении вы числимости на языке спецификации вычислительных задач В рамках вычислительно!! модели можно обращаться к функциям описывающим алгоритмы с использованием операторов беисикоподобного алгоритмического языка

    Для получения решения задачи на текущей модели задачи необходимо выполнить команду Commands | Solve (Команды |Решить) или нажать клавишу На рис 25 5 показано содержимое панелей Rule Sheet и Variable Sheet в окне ТК Solver после решения задачи с формулировкой

    ЗНАЯ Текущую модель задачи ВЫЧИСЛИТЬ S ПО P

    Здесь переменным с именами S и Р в графическом представлении модели задачи (рис 25 4) соответствуют объекты ПЛОЩАДЬ и ПЕРИМЕТР соответственно

    Рис 25 5 Вид панелей переменных и правил в окне ТК Solver

    337

    Содержимое всех панелей текущей модели задачи можно сохранить в файле с расширением TKW. В дальнейшем этот файл можно загрузить и использовать для решения других задач.

    Решение задач на вычислительной модели, описанной в ТК Solver, на панели Rule Sheet может осуществляться в трех режимах:

  • в режиме прямого решателя, который активизируется с помощью команды Commands \ Solve (Команды \ Решить) или нажатием клавиши ;
  • в режиме спискового решения, который активизируется командой Commands \ List Solve (Команды \ Решить списком) или нажатием клавиши ;
  • в режиме итеративного решателя, который активизируется автоматически из других режимов, если возникает прерывание по ошибке из-за невозможности вычислить значение какой-либо переменной, входящей в уравнение и для этой переменной назначен атрибут G в поле St на панели описания переменных Variable Sheet.



  • На рис. 25. 5 приведен пример, когда решение получено с использованием режима прямого решателя. Прямой решатель находит значения всех переменных, которые можно вычислить с использованием предложений вычислимости, заданных на панели Rule Sheet, с использованием входных переменных панели Variable Sheet. Если для предложения вычислимости входных данных недостаточно, то оно в вычислениях не участвует и в поле S на панели Rule Sheet помечается символом *.

    В процессе решения решатель проверяет вычисления на непротиворечивость, т.е. если, например, в процессе решения для какого-либо из уравнений все переменные оказались входными, то проверяется выполнение равенства левой и правой частей уравнения. В случае невыполнения равенства вычисления прекращаются, выводится сообщение об ошибке, а переменные уравнения и само уравнение на соответствующих панелях помечаются символом >. Для исключения уравнения из вычислений достаточно перед ним поставить символ ; (точка с запятой), т.е. объявить его комментарием.

    Для выполнения списковых вычислений, т.е. решения одной и той же задачи на различных исходных данных, необходимо предварительно с каждой переменной, участвующей в вычислениях, связать список. Для этого в поле St на панели Variable Sheet указать атрибут L, а для входных переменных - атрибут Input (в поле Input появится 0, а не первый элемент списка ) и в связанные с ними списки занести множество принимаемых этой переменной значений. После этого можно активизировать списковые вычисления нажатием клавиши .

    В процессе списковых вычислений прямой решатель вызывается столько раз, сколько элементов в списках входных переменных. Найденные на каждом цикле значения выходных переменных задачи помещаются в соответствующие списки для выходных переменных. При этом номер элемента в списке является номером решения одной и той же задачи на различных исходных данных. Результаты решения можно просмотреть в соответствующем списке, для этого необходимо активизировать панель List Sheet и раскрыть список с помощью правой кнопки мыши.



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

    338

    графическом виде в форме графика в декартовой системе координат, столбиковой или круговой диаграммы.

    В процессе решения задачи может оказаться, что получение решения невозможно из-за неполноты задания исходных данных задачи. В этом случае целесообразно применять режим итеративного решателя. Для того, чтобы перевести систему ТК Solver в режим итеративного решения уравнений, необходимо неизвестным переменным назначить тип Guess в поле St на панели Variable Sheet и в поле Input присвоить им начальное приближение.

    Рассмотрим два уравнения с двумя неизвестными:

    y=x*sin(x)

    x*y = cos(x + y)

    Пусть эти уравнения описаны в виде правил. Если переменной х назначить тип Input и значение х=0.5, то в режиме прямого решателя (после нажатия клавиши ) будет выведено сообщение об ошибке, так как после вычисления значения у с помощью первого уравнения прямой решатель подставит значения x и y во второе уравнение и равенство для него не будет выполняться.

    В случае, когда переменной х назначен тип Guess и значение х =0.5, будет активизирован режим итеративного решения, при этом после возникновения ошибки из-за второго уравнения решение не будет прекращено, а произойдет перевычисление значения переменной х, вычислено новое значение у и цикл вычислений будет повторяться до тех пор, пока будет инициироваться прерывание по ошибке. Окончательное решение для данных уравнений х = .727 и у = .484.

    339

    334 :: 335 :: 336 :: 337 :: 338 :: 339 :: Содержание


    Содержание раздела