Обобщенные (рекуррентные) формулы Цель работы: - получение навыков нахождения обобщенных (рекуррентных) формул, необходимых для разработки циклов восходящим методом; - получение навыков построения (вывода) таблиц значений функций; - получение навыков вывода на экран графика функции. 1. Теоретическая часть Перед началом выполнения данной работы необходимо изучить вторую часть раздела 10 «Вычисления по формулам» конспекта лекций по дисциплине «Языки программирования». 2. Практическая часть Требования к выполнению заданий Для каждого варианта необходимо выполнить следующее: 1) найти обобщенную формулу вычисления в форме для двух случаев: а) когда , б) когда ; 2) вычислить промежуточные значения для функции вида для каждого из случаев «а» и «б». В процессе вычислений все промежуточные значения переменных S и x надо записывать в строковые переменные в форме: 3) с использованием накопленных в строках промежуточных значений построить таблицу для функции вида для каждого из случаев «а» и «б». Таблицы для случая «а» и для случая «б» представлять в следующем виде: i | xi | Si | | x1 | S1 = x1 | | x2 | S2 = x1 + x2 | | x3 | S3 = x1 + x2 +x3 | ... | ... | ... | 4) с использованием накопленных в строках промежуточных значений S и x построить на экране (в выбранном масштабе) график функции si=f(i) вида: | s1 | * | *s3 | |-----+-------+-------+--------+--------- i | 1 2 3 4 | * | s2 s4* | | |s(i) Примечание. 1. Строить график необходимо путем вывода символа "звездочка" ('*') в позиции, номер которой надо вычислять исходя из размера выводимого значения S. Чтобы график был на экране более компактным, необходимо выполнять нормализацию выводимых значений. 2. Строить график можно с помощью стандартных процедур вывода write/writeln или с использованием средств модуля CRT Free Pascal (таких, как процедура gotoxy, устанавливающая курсор на экране в нужную позицию). 2.2. Варианты заданий для выполнения № | Задание | | S = –1/2 + 2/(2*3*4) – 3/(2*3*4*5*6) + 4/(2*3*4*5*6*7*8) – – 5/(2*3*4*5*6*7*8*9*10) | | S = –x2/2 + x4/(3*4) – x6/(5*6) + x8/(7*8) – x10/(9*10) | | S = -2/3 + 1 – 6/5 + 8/6 – 10/7 | | S = –3 +2 – 5/3 + 6/4 – 7/5 | | S = -x-1 + x-2/2 – x-3/(2*3) + x-4/(2*3*4) – x-5/(2*3*4*5) | | S = –1 + ½ – (2*3)/6 + (2*3*4)/8 – (2*3*4*5)/10 | | S = - 1 + x/2 – x2/(2*4) + x3/(2*4*6) – x4/(2*4*6*8) + x5/(2*4*6*8*10) | | S = 3 + 4*(1/(2*3*4) – 1/(4*5*6) + 1/(6*7*8) – 1/(8*9*10) +1/(10*11*12)) | | S = (16/5 - 4/239) – (16/(3*53) - 4/(3*2393)) + (16/(5*55) – 4/(5*2395)) – - (16/(7*57) – 4/(7*2397)) | | S = 6/3*(1 – 1/(3*3) + 1/(32*5) – 1/(33*7) + 1/(34*9)) | | S = –x + 1/2*(x3/3) – 1/2*3/4*(x5/5) + 1/2*3/4*5/6*(x7/7) – 1/2*3/4*5/6*7/8(x9/9) | 2.3. Требования к содержанию отчета Отчет о лабораторной работе должен включать: 1. Конспект теоретической части. 2. Полученные рекуррентные формулы всех возможных форм и их обоснование. 3. Схемы разработанных алгоритмов. 4. Тексты разработанных программ с комментариями. 5. Копии экранов с полученными результатами. 6. Объяснение полученных результатов. 2.4. Контрольные вопросы 1. Что такое рекурсия? 2. Какая формула называется обобщенной? 3. Какая формула и почему называется рекуррентной? 4. Где (для чего) используются обобщенные и рекуррентные формулы? 5. Какие существуют способы получения рекуррентных формул? 6. В чем состоит разница в программировании обобщенных и рекуррентных формул? 7. Что называется многомеcтной (n-арной) операцией и какой подход используется для ее программирования? 8. Что такое подготовка цикла и что в нее включается? 9. Какая подготовка цикла является простой? 10. Каковы правила упрощения подготовки цикла? 11. Для чего служит заголовок цикла? 12. Что включается в тело цикла? 13. Какие задачи приводят к появлению циклов в программе? 14. Как выполняется разработка циклов восходящим способом? Лабораторная работа № 10 |