Решение 50 типовых задач по программированию на языке Pascal Дата размещения сборника в сети
Задача № 50. Вычислить экспоненту с заданной точностью
Download 1.52 Mb. Pdf ko'rish
|
Задачи на Pascal
- Bu sahifa navigatsiya:
- Данил Душистов: «Решение 50 типовых задач по программированию на языке Pascal» 66
Задача № 50. Вычислить экспоненту с заданной точностью
Формулировка. Дано действительное число x. Вычислить значение экспоненциальной функ- ции (то есть, показательной функции e x , где e – математическая константа, 2, 718281828459045 e ≈ ) в точке x с заданной точностью eps с помощью ряда Тейлора: 2 3 0 1 1! 2! 3! ! n x n x x x x e n ∞ = = + + + + = ∑ Данил Душистов: «Решение 50 типовых задач по программированию на языке Pascal» 66 Примечание 1: показательными называются функции вида a x , где a – некоторое действитель- ное число, x – независимая переменная, являющаяся показателем степени. Примечание 2: ряд Тейлора – это представление функции в виде суммы (возможно, бесконеч- ной) некоторых других функций по особым правилам (требующим детального математического обоснования, что в данном случае нам не нужно). Решение. Не вникая в теоретическую часть и полагая представленную формулу корректной, попробуем разобраться в том, что же нам необходимо сделать для того, чтобы решить эту задачу: 1) Нам дана некоторая точка на оси Ox, и мы должны вычислить значение функции e x в этой точке. Допустим, если x = 4, то значение функции в этой точке будет равно 4 4 2, 71828 54, 598 e ≈ ≈ ; 2) При этом вычисление необходимо реализовать с помощью заданной бесконечной формулы, в которой прибавление каждого очередного слагаемого увеличивает точность результата; 3) Точность должна составить вещественное число eps, меньшее 1 – это означает, что когда очередное прибавляемое к сумме слагаемое будет меньше eps, то необходимо завершить вычисление и выдать результат на экран. Это условие обязательно выполнится, так как ма- тематически доказано, что каждое следующее слагаемое в ряде Тейлора меньше предыду- щего, следовательно, бесконечная последовательность слагаемых – это бесконечно убыва- ющая последовательность. Теперь разберемся с вычислением самого ряда. Очевидно, что любое его слагаемое, начиная со 2-го, можно получить из предыдущего, умножив его на x и разделив на натуральное число, явля- ющееся номером текущего шага при последовательном вычислении (примем во внимание то, что тогда шаги нужно нумеровать с нуля). Значение x нам известно на любом шаге, а вот номер теку- щего шага (будем хранить его в переменной n) придется фиксировать. Создадим вещественную переменную expf (от англ. exponential function – экспоненциальная функция) для накопления суммы слагаемых. Будем считать нулевой шаг уже выполненным, так как первое слагаемое в ряду – константа 1, и в связи с этим expf можно заранее проинициализировать числом 1: expf := 1; Так как мы начинаем вычисления не с нулевого, а с первого шага, то также нужно инициали- зировать значения n (числом 1, так как следующий шаг будет первым) и p (в ней будет храниться значение последнего вычисленного слагаемого): n := 1; p := 1; Теперь можно приступить к разработке цикла. С учетом заданной точности eps условием его продолжения будет abs(p) >= eps, где abs(p) – модуль числа p (модуль нужен для того, чтобы не возникло ошибки, если введено отрицательное x). В цикле необходимо домножить p на x и доделить его на текущий номер шага n, чтобы обес- печить реализацию факториала в знаменателе, после чего прибавить новое слагаемое p к результату Download 1.52 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling