![]() КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Примеры алгоритмов, линейных и с разветвлением
Разветвления в алгоритмах
Рассмотрим сначала линейные алгоритмы. Линейным называется алгоритм, в схеме которого блоки (вершины) связаны в одну линию. Пример 1.1. Составить СА для вычисления следующей функции: y = sin(a)cos(b) + e -x cos(a) (1.1) при заданных значениях a, b, x. Вычислительный процесс для данной функции может быть организован в виде последовательности шагов, на каждом из которых выполняются следующие вычисления: 1) А1 = sin(a); 2) A2 = cos(b); 3) A3 = exp(- х); 4) A4 = cos(a); 5) B1 = A1 A2; 6) B2 = A3 A4; 7) у = B1 + B2. СА, представляющая данный вычислительный процесс с учётом ввода исходных данных и вывода вычисленного значения y, является линейной (рис. 1.1; начальный и конечный блоки не нумеруются). Её особенность – то, что операторные блоки 2-5 можно располагать в произвольном порядке; то же относится и к блокам 6 и 7.
Независимость СА от расположения отдельных блоков означает, что реализуемые ими фрагменты вычислительного процесса можно выпол-нить одновременно (параллельно) при наличии соответствующих аппарат-ных средств. Одновременность выполнения фрагментов обозначается на СА параллельными линиями (рис. 1.2); при этом допускается возможность расхождения связей на выходах всех блоков (кроме, разумеется, конечного).
Рис. 1.1. Пример линейной СА (последовательная реализация)
Для вычисления функций SIN, COS и EXP используются стандартные подпрограммы (СП), основанные, как правило, на представлении этих функций в виде полиномов (например, разложение в ряд Тейлора [4]). Однако эти СП реализуют нелинейные СА, содержащие циклы – см. п. 1.2.
Рис. 1.2. Параллельная реализация СА для примера 1.1
Таким образом, линейность СА - понятие относительное; при более подробном рассмотрении СА может оказаться нелинейной. В сколько-нибудь сложной СА линейными могут быть только её отдельные фрагменты. Рассмотрим далее схемы алгоритмов с разветвлением. Разветвлением будем называть фрагмент СА, содержащий блок выбора альтернативного направления с одним входом и с двумя или более выходами; по этим выходам организуются связи с другими фрагментами СА. Выбор альтернатив осуществляется по определённому условию, возможно, сложному, реализуемому совокупностью условных операторов. Пример 1.2. Составить СА нахождения корней квадратного уравнения au2 + bu + c = 0. (1.2) Предварительно запишем приведённое квадратное уравнение с целью уменьшения числа параметров, определяющих решения исходного уравнения: u2 + pu + q = 0; (1.3) здесь p = b / a, q = c / a (a ¹ 0!). (1.4) Корни приведённого квадратного уравнения определяются по формуле u1,2 = - p /2 ± Ö d, (1.5) где d = p 2/4 – q. (1.6) В зависимости от значений d возможны 3 случая: · d>0. Решение содержит два вещественных корня u1 = - p /2 + Ö d, u2 = - p /2 - Ö d; (1.7) · d<0. Решение содержит два мнимых корня (u = x + iy, i = Ö-1) u1 = - p /2 + i Öï d ï, u2 = - p /2 - i Öï d ï; (1.8) · d=0. Решение содержит два слившихся вещественных корня u1 = u2 = - p /2. (1.9) Проанализируем поведение корней при изменении величины и знака дискриминанта d (рис.1.3): 1 ) d< 0 - корни перемещаются симмет-рично по вертикали (мнимая ось); 2) d >0 - корни перемещаются симметрично по горизонтали (реальная ось); 3) d =0 - граничная точка x = - p /2 при переходе с вертикали на горизонталь.
Анализ такого рода необходим при построении контрольного примера для отладки программы или при ее тестировании. Конечно, для такого анализа рассмотренный пример слишком простой. Но в более сложных случаях (нахождение корней уравнения высокого порядка, корней системы уравнений и т.д.) без такого анализа не обойтись, особенно если интересны не только совокупность конкретных значений решения задачи, но и зависимость этих значений от параметров задачи.
Составляем СА (рис. 1.4), исходя из такой последовательности шагов: вводим исходные данные и вычисляем параметры приведённого квадратного уравнения; вычисляем значения корней в соответствии с тремя возможными альтернативами, определяемыми условными блоками; выводим результаты на экран (принтер).
На рис. 1.4,а пунктиром выделен блок выбора трёх альтернативных направлений в зависимости от значения дискриминанта d; он легко преоб-разуется в эквивалентный ему блок выбора (рис. 1.4,б). Анализ этого блока показывает, что проверку условия d =0 можно исключить из алгоритма, так как в случае d =0 равные значения корней получаются автоматически.
Дата добавления: 2014-01-14; Просмотров: 1571; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |