НОУ ИНТУИТ Лекция Вычисление функций на последовательностях. Значения "минус" и "плюс бесконечность"Как реализовать воображаемые элементы "минус бесконечность" и "плюс бесконечность" при программировании на конкретных алгоритмических языках, а не на псевдокоде? Вспомним, что компьютер может представлять не все возможные числа, а только их ограниченное подмножество. Поэтому для компьютера существует минимальное и максимальное целое и вещественное числа. В языке Си эти константы записаны в стандартных заголовочных файлах " limits. Для типа int эти константы называются INT_MIN и INT_MAX. INT_MIN = (- 2. 14.
INT_MAX = 2. 14. 74. Для вещественных типов максимальное и минимальное числа равны по абсолютной величине и отличаются лишь знаками, поэтому специального названия для максимальной по абсолютной величине отрицательной константы не существует. Максимальное число типа float называется FLT_MAX, типа double - DBL_MAX. FLT_MAX = 3. 4. 02.
DBL_MAX = 1. 7. 97. Стоит отметить, что через FLT_MIN и DBL_MIN обозначены минимальные положительные числа, а вовсе не максимальные по абсолютной величине отрицательные! FLT_MIN = 1. 1. 75. DBL_MIN = 2. 2. 25. Константа DBL_MAX является нормальным числом, она не равна. Использовать бесконечно большое значение опасно. Итак, в качестве значений "минус бесконечность" и "плюс бесконечность" можно использовать константы.
INT_MIN и INT_MAX для типа int. Для типа double в качестве значений "минус бесконечность" и "плюс бесконечность" можно использовать выражения ( - DBL_MAX ) и DBL_MAX. Не забудьте только при программировании на Си подключить стандартные заголовочные файлы: для целых типов идля вещественных. Впрочем, вовсе не обязательно помнить названия этих констант и имена стандартных заголовочных файлов. В качестве значения "минус бесконечность" всегда можно использовать произвольноезначение, заведомо меньшее, чем любое конкретное число, которое может встретиться в программе. Например, если известно, что программа работает только с неотрицательными числами, то в качестве значения "минус бесконечность" можно использовать произвольное отрицательное число, например, минус единицу.
Аналогично, в качестве значения "плюс бесконечность" можно применять любое достаточно большое число. Оно должно быть заведомо больше, чем все конкретные числа, которые могут встретиться в алгоритме. Пусть, например, известно, что в программе могут встретиться вещественные числа не больше миллиона.
Часто последовательность представлена в программе как массив. заданной точке по схеме Горнера. Число t и коэффициенты многочлена в порядке. ГОРНЕРА СХЕМА. — одна из распространенных вычислительных схем.
БЛОК-СХЕМА ПРОГРАММЫ. Расчётная программа. Сразу же оговорюсь, что схема Горнера работает и в том случае, если «красное» Используя схему Горнера, найти целый корень уравнения и разложить соответствующий многочлен на множители.
Тогда в качестве значения "плюс бесконечность" можно использовать константут. Можно даже использовать 1.
Блок- схема алгоритма решения задачи и программа решения на языке Pascal. Вычисление значения многочлена методом Горнера. Разработка схем. Схема горнера онлайн калькулятор Симметрические уравнения - Изучайте английский язык. Ипотечный калькулятор — это программа, позволяющая быстро. Самая большая привлекательность схемы Горнера состоит в простоте Это может значительно ускорить работу программы.
Схема Горнера. Рассмотрим еще один важный пример функции на последовательности. Пусть дана последовательность коэффициентов многочлена p(x) по убыванию степеней: p(x) = a. Нужно вычислить значение многочлена в точке x = t. Алгоритм, основанный на просмотре последовательности коэффициентов в направлении от старшего к младшему, называется схемой Горнера.
Проиллюстрируем его идею на примере многочлена третьей степени: Его можно представить в виде. Для вычисления значения многочлена достаточно трех умножений и трех сложений. В общем случае, многочлен представляется в следующем виде: p(x) = (..((a. Обозначим через pk(x)многочленk - ой степени, вычисленный по коэффициентам a.
Тогдат. е. при считывании нового коэффициента многочлена надо старое значение многочлена умножить на значениеx, а затем прибавить к нему новый коэффициент. Выпишем алгоритм: вещ алгоритм схема Горнера(вх: цел n, вещ a[n+1], вещ t). Инициализация значения многочлена. Вычисление нового значения по.
В. И. Ракитин. Вычисление общего члена. В. И. Ракитин. Данная публикация содержит: — математические основы по теме. Последовательности и ряды"; —алгоритмы решения некоторых типовых задач на.
QBasic, Паскаль, Си; — программы для вычисления значений. Последовательности и способы их. Ряды Определение 1. Функция. определенная на множестве натуральных чисел. Последовательность может быть.
Будем рассматривать. Элемент последовательности an (элемент с номером n). Последовательность может быть. При этом. задаются несколько первых членов. Таким образом, заданные. Например, заданы два первых члена. Тогда. полагая п = 3, можно составить уравнение для.
Далее, полагая п =. Рекуррентные соотношения называют. В этом случае функции числа п. В некоторых частных случаях. Примеры последовательностей. В частности, если a.
Например, для a. 0= 2 и q = 2 имеем. Примеры последовательностей, заданных. Если п < 3, то an= 1, в противном. Каждый элемент последовательности. Эту последовательность {1, 1, 2, 3, 5. Фибоначчи"; 9) an = ln ( l + ln ( 2 + ln ( 3 + .. Элементы данной последовательности могут.
Определим. последовательность bn, полагая. Элементы. последовательности bm представляют собой рекурсивную функцию. Применяя рекурсии для bn и используя равенство. Последовательности в примерах 5—8. Функции числа п, начиная с некоторого номера.
Определение 2. Формальную. Ряд записывается в видеа. Можно определить частичные. S1 = а. 1, S2 = а.
S3 = а. 1+а. 2. +а. Последовательность частичных сумм Sn естественно определяется. S0 =0, Sn =Sn- 1 +an ( n = 1, 2, 3 .. S1 =а. 1, Sn =Sn- 1 +an (.
Замечание. Иногда, определяя. Обязательно следует пополнить. Подобрать формулу для общего. Подобранные формулы таковы. Представление ряда с.
Замечание. При представлении. Примеры одинаковых рядов.
Программирование вычислений. Программы без подпрограмм Задача 1. С клавиатуры вводятся. Составить программу для вычисления заданного.
Вывести. на экран полученные значения. Решение. Будем использовать. Программы состоят из: • Блока описаний, где указываются.
Тела программы, включающего; — очистку экрана; — ввод данных с клавиатуры; — вычисление элементов. В программах переменные п, р и а —. Используемые типы данных имеют названия single, real.
Бейсик, Паскаль, Си соответственно. При выходе какой- либо переменной за пределы. Форматированный вывод результатов работы. Имеем: n= l. O= 1. Программа на языке QBasic ; 'Блок описаний.
DIM a AS INTEGER, i AS INTEGER, n AS INTEGER, p AS INTEGERDIM power AS SINGLE, exponent AS SINGLE, factor AS SINGLE'Тело программы: очистка экрана, ввод данных с. CLSINPUT "Введите число n = ", n. INPUT "Введите степень р = ", р. INPUT "Введите основание показательной функции а. FOR i = 1 ТО рpower = power * n.
NEXT i. FOR i = 1 TO nexponent = exponent * afactor = factor * i. NEXT i'вывод результатов на экранst$ = "power=####.#,exponent=#####.#,factor=######.#"PRINT USING st$; power; exponent; factor Замечания к блоку описаний в. QBasic • Если для используемых переменных.
Если при определении типов. DEFINT. А, I, Р; DEFSGN E- F, Р,то переменные, имена которых начинаются с A, I.
E—F, Р, будут иметь тип single.• Оператор. DIM. a, i, n, p AS INTEGERне объявляет, что тип integer имеют все четыре. Переменные a, i, n будут иметь тип. Программа на языке Паскаль{Блок описаний}uses crt; var a, i, n, p : integer; power, exponent, factor: real; {Тело программы}begin{очистка экрана, ввод данных с клавиатуры}clrscr; write ( 'Введите число n = ' ); readln(n); write ( 'Введите степень р = ' ); readln(р); write ( 'Введите основание показательной.
Программа на языке Си/* Используемые модули */#include < conio. Введите число n = ") ; scanf ("%d", & n) ; printf ("Введите степень р = "); scanf ("%d", & p); printf ("Введите основание. Программы с подпрограммами- функциями.
Рассмотрим вновь задачу 1 п. Для. вычисления значений степенной и показательной. При вычислении элементов. Программа на языке QBasic. DECLARE FUNCTION power! AS INTEGER, у AS INTEGER)DECLARE FUNCTION factor! AS INTEGER)DIM A AS INTEGER, N AS INTEGER, P AS INTEGERCLSINPUT "Введите число n = ", n.
INPUT "Введите степень p = ", p. INPUT "Введите основание показательной функции а. PRINT USING st$; power(n, p) ; power(a, n) ; factor (n)'Переменные i и у — локальные, используемые. FUNCTION factor! (x- AS INTEGER)DIM i AS INTEGER, у AS SINGLEУ = 1. FOR i = 1 TO xу = у * i.
NEXT ifactor = у. END FUNCTION'Переменные i и z — локальные, используемые только.
FUNCTION power! (x AS INTEGER, у AS INTEGER)DIM i AS INTEGER, z AS SINGLEz = 1. FOR i = 1 TO yz = z * x. NEXT ipower = z. END FUNCTIONПрограмма на языке Паскальuses crt; var a, n, p : integer; { Переменные i и у — локальные, используемые. Переменные i и z — локальные, используемые.
Основная программа}beginclrscr; write ( 'Введите число n = ' ); readln (n); write ( 'Введите степень p = ' ); readln (p); write ( 'Введите основание показательной. Программа на языке Си#include < stdio. Переменные i и у — локальные, используемые. Переменные i и z — локальные, используемые.
Введите число n = "); scanf ("%d", & n); printf ("Введите степень р ="); scanf. Введите основание.
Полпрограммы- функции с рекурсией Изменим теперь вид. Оформление подпрограмм.
Подпрограммы на языке QBasic'Подпрограмма- функция factor (х). FUNCTION factor! (x AS INTEGER)IF х = 0 THENfactor = 1. ELSEfactor = x*factor (x - 1)END IFEND FUNCTION'Подпрограмма- функция power (x, y) определена для. FUNCTION power! (x AS INTEGER, у AS INTEGER)IF у = 0 THENpower =1 ; ELSEpower = x*power (x, у - 1)END IFEND FUNCTION Подпрограммы на языке Паскаль{ Подпрограмма- функция factor(x) определена. Функция power (x, y) определена для неотрицательных.
Подпрограммы на языке Си/* Подпрограмма- функция factor(x). Подпрограмма- функция power(x, y) определена для.
Замечание. Рекурсивный вызов функций. В. этом можно убедиться, сравнивая работу двух. Фибоначчи. На любом из трех языков программирования.
Фибоначчи при п = 5. Программы отличаются. Фибоначчи fib (x) в одном из вариантов используют. Даже очень быстрые. Объясняется это тем, что рекурсивная функция для.
Программа, вычисляющая числа. Фибоначчи, на языке QBasic. DECLARE FUNCTION fib! AS INTEGER)DIM N AS INTEGERCLSINPUT "n=", n. PRINT USING "fib (###) = ########"; n; fib (n)FUNCTION fib! AS INTEGER)DIM i AS INTEGER, DIM y AS SINGLEDIM fib. AS SINGLE, fib. 2 AS SINGLEIF x < 3 THENfib = 1.
ELSEfib. 1 = 1: fib. FOR i = 3 TO xy. = fib. NEXT ifib = y. END IFEND FUNCTIONРекурсивная функция.
FUNCTION fib! (x AS INTEGER)IF x < 3 THENfib =1. ELSEfib = fib (x - 1) + fib (x - 2)END IFEND FUNCTIONПрограмма, вычисляющая числа. Фибоначчи, на языке Паскальprogram numbers_of_Fibonacci; uses crt; var n : integer; function fib (x : integer) : real; var i : integer; y, fib. Рекурсивная функцияfunction fib (x : integer) : real; beginif x < 3 thenfib : =1elsefib: =fib (x - 1) + fib (x - 2)end; Программа, вычисляющая числа. Фибоначчи, на языке Си#include < stdio.
Рекурсивная функцияfloat fib (int x){if (x < 3) return(1) ; else return (fib (x- 1) + fib (x- 2) ); }2. Последовательность, элементы. Задача 2. Вычислить значение. Inn) ..) ) ),где п — некоторое натуральное число. Решение. В подпрограмме- функции а (x).
В. основной программе используется функция. RND, или. random ( ) , в зависимости от языка программирования.
RANDOMIZE. Можно отметить, что. Бейсик и Си библиотечной функцией log, а в языке. Паскаль — ln. Программа на языке QBasic. DECLARE FUNCTION a! AS INTEGER)'Основная программа. DIM n AS INTEGERCLSRANDOMIZE TIMERn = 5 + INT (1.
RND)PRINT n; " "; a(n)'Подпрограмма, вычисляющая элемент. FUNCTION a! (x AS INTEGER)DIM k AS INTEGERDIM b AS SINGLEb = LOG (x)FOR k = 2 TO xb = LOG (b + x - k + 1)NEXT ka = b. END FUNCTIONПрограмма на языке Паскальuses crt; var n : integer; {Подпрограмма, вычисляющая элемент. Основная программа}beginclrscr; randomize; n : =5 + random (1.
Программа на языке Си#include < stdio. Подпрограмма, вычисляющая элемент.
Программирование вычислений сумм. Задача. 3. Пусть задана последовательность an=(- 1)n+1 ( n • 2n / (2n + 1)! Вычислить: 1. Сумму п слагаемых данной последовательности. Сумму. нечетных элементов последовательности; номера. Сумму членов данной последовательности при.
Найти при. этом число слагаемых, образующих эту сумму. Решение. Обозначим через sum. В программах это будут. Бейсик. Паскаль, Си). Вариант 1 Представим. Функция для вычисления. Наязыке QBasic. FUNCTION a# (x AS INTEGER)а = - x*power (- 2, x) / factor (2*x + 1)END FUNCTION Наязыке.
Паскальfunction a (x : integer) . Наязыке. Сиfloat a (int x){return (- x*power (- 2, x) / factor (2*x+l ) ) }Вариант 2 He. Прежде всего по. заданной формулеan = (- 1)N+1. И, наконец, присваивая.
В. соответствий с полученными рекуррентными. Наязыке. QBasic. FUNCTION a! AS. INTEGER)DIM i AS INTEGER, b AS single.
IF x < = 1 THEN b = 1 / 3. ELSE b = 1 / 3 FOR j = 2 TO x b = - b / ( j - 1 ) / ( 2*j + 1 ) NEXT j. END IF a = b. END FUNCTION Наязыке. Паскаль. FUNCTION a (. Наязыке. Сиfloat.
Замечания. В языке Си деление 1 / 3. Выражение —1 / (j - 1) / (2*j + 1) возвращало бы 0, а выражение —1, 0 /. Программирование. При вычислении сумм. S0 = 0, si = si- 1. I = 1, 2, 3, … ,n). Абсолютной погрешностью вычисления.
S = Sn — Sn- 1. Таким. образом, мы будем суммировать элементы ряда до.
Очередным аn,модуль которого. И тем. самым останавливаем процесс суммирования. Программы для решения задачи 3 приведены ниже.
Вычисление. сумм sum. На языке QBasic 'Блокописаний.
DECLARE. FUNCTION a! AS INTEGER)CONST. DIM. i AS INTEGER, n AS INTEGERDIM. AS SINGLE, sum. 2 AS SINGLEDIM.
AS SINGLE 'Основнаяпрограмма. CLSINPUT. : sum. 2=0 : sum. Вычисление. i = 1 TO n sum. IF. i MOD 2 = 1 THEN sum.
END. и числа слагаемых, 'образующих. WHILE ABS ( a ( i ) ) > epsilon sum. LOOP 'He форматированныйвыводрезультатов. PRINT. sum. 1, sum. PRINT. 'Подпрограмма- функция.
FUNCTIONa! На языке Паскаль {Блокописаний} uses. Подпрограмма- функциядлявычисления. Введите. n='); readln (n); sum.
Вычисление. sum. 3 и числа слагаемых, образующих сумму}i. Форматированныйвыводрезультатов} writeln. На языке Си/*Блок. Подпрограмма- функция.