Пример расчета с заданной точностью
Рассмотрим программу подсчета суммы сходящегося ряда с заданной точностью, которая имеет ряд важных технических особенностей.
Проверку можно сделать с помощью оператора суммирования:
Разберем создание программы по пунктам.
1) Сначала вводим имя программы и блок из нескольких маркеров.
2) Задаем условный цикл «While» (пока). В качестве условия остановки в его правом маркере определим, что число операций суммирования не должно превышать 100000.
Это необходимо в связи с тем, что если ряд не сходится или сходится очень медленно, то подсчет может вестись неограниченно долго.
3) Затем задаем вид общего члена ряда:
Он определится как элемент вектора: это нужно для того, что бы затем была возможность подсчитать максимально просто сумму всех членов ряда.
4) Далее определяется условие остановки цикла. Делается это при помощи условного оператора «if». В качестве условия задано, что два соседних члена ряда должны отличаться по абсолютной величине не более, чем на 10-14 (такой подход возможен только в случае равномерной сходимости).
5 Определяется первый элемент вектора t0 как 0:
Иначе возникает проблема: с чем будет сравниваться первый член ряда.
6) В левом маркере условного оператора цикла (на самом деле он выводится ниже оператора) задаются те операции, которые должны быть произведены при выполнении условия точности.
Так как их несколько, то вводим дополнительный программный блок.
Во-первых, требуется произвести суммирование рассчитанных членов ряда. Так как они были сохранены в форме вектора, то операцию суммирования следует выполнить при помощи специального оператора суммы элементов вектора (Vector Sum) панели «матрица»:
Во-вторых, интересно узнать, сколько просуммировано элементов. А так как в качестве результата работы программы может быть выведен только один объект, то интересующие величины следует объединить в один вектор:
Для объединения операций в данном случае пришлось использовать оператор исключающего «или». При использовании логического «ИЛИ» ответ был бы выведен неполным: в нем бы присутствовало только значение суммы, и не было бы числа членов ряда.
Проще можно было бы объединение в один вектор произвести его непосредственным определением:
Так как задача программы выполнена, цикл должен быть остановлен. Делается это с помощью специального оператора остановки «Break». Он почти всегда используется с оператором «if».
7) В том случае, если условие точности выполнено не было, цикл должен продолжить свою работу. Однако на следующем круге должен быть рассмотрен уже следующий член ряда. Для этого следует увеличить значение переменной на 1:
Подобное переопределение переменной (или функции) через саму себя называется реккурентным.
Несмотря на то, что с точки зрения математики реккурентные выражения выглядят алогично, они являются одним из наиболее мощных и широко используемых средств компьютерной математики.
Первое значение переменной i (индекса) должно быть задано выше цикла как 1.
8) В конце первой программной линии вводим имя той величины, которая должна быть выдана в качестве ответа. В нашем случае это вектор «Sum».
Необходимо помнить, что в качестве результата работы программы выводится значение того выражения, которое находится в последнем маркере главного программного блока.
Ошибившись с его определением (или забыв задать его вовсе), можно получить совсем не тот ответ, который соответствует решению данной задачи.
Дата добавления: 2017-05-02; просмотров: 1606;