Вычисление элементарных функций

advertisement
Вычисление элементарных функций
Для вычисления значений элементарных функций на компьютере используются разные приемы: разложение функций в ряд Тейлора, рациональные приближения, разложение в цепные дроби и другие методы. Мы будем ипользовать только разложение в
ряд Тейлора и некоторые способы оптимизации вычислений.
Вычисление многочленов. Рассмотрим многочлен 𝑃 (𝑥) степени 𝑛 с действительными
коэффициентами:
𝑃 (𝑥) = 𝑎0 + 𝑎1 𝑥 + 𝑎2 𝑥2 + . . . + 𝑎𝑛 𝑥𝑛
(1)
1 Напишите программу, вычисляющую значение многочлена 𝑃 (𝑥) в точке 𝑥* . Степень
многочлена и его коэффициенты задаются пользователем.
2 Определите количество операций сложения и умножения, необходимое для вычисления многочлена по формуле (1)
Эффективным методом вычисления многочленов в заданной точке является схема
Горнера. Оставим без изменений первое слагаемое в (2), а в остальных вынесем 𝑥 за
скобку:
𝑃 (𝑥) = 𝑎0 + 𝑥(𝑎1 + 𝑎2 𝑥 + 𝑎3 𝑥2 + . . . + 𝑎𝑛 𝑥𝑛−1 ).
Повторяя эту операций для суммы в скобках, получим выражение:
𝑃 (𝑥) = 𝑎0 + 𝑥(𝑎1 + 𝑥(𝑎2 + 𝑥(𝑎3 + . . . + 𝑥(𝑎𝑛−1 + 𝑥𝑎𝑛 ) . . .))).
Обозначим в (2) 𝑏𝑛 = 𝑎𝑛 и запишем рекуррентную формулу 𝑏𝑖−1 = 𝑎𝑖−1 + 𝑥𝑏𝑖 . Заметим, что тогда 𝑃 (𝑥) = 𝑏0 .
3 Решите задачу (1), используя схему Горнера
4 Определите количество операций сложения и умножения при использовании схемы
Горнера для вычисления полинома (1).
Тригонометрические функции. Для вычисления функций sin (𝑥) и cos (𝑥) используем
их разложение в ряд Тейлора вблизи нуля:
sin (𝑥) = 𝑥 −
cos (𝑥) = 1 −
𝑥3
3!
𝑥2
2!
+
+
𝑥5
5!
𝑥4
4!
−
−
𝑥7
7!
𝑥6
6!
...,
(2)
....
(3)
5 Напишите функции sin(x), cos(x), возвращающие значения синуса и косинуса аргумента 𝑥 с точностью 0.00001. Убедитесь, что для больших значений 𝑥 получается неверный результат.
6 Учитывая периодичность функций sin(𝑥) и cos(𝑥), перед непосредственным вычислением следует свести аргумент 𝑥 к интервал −2𝜋 < 𝑥 < 2𝜋. При реализации 𝑥 часто
приводят полуинтервалу 0 ≤ 𝑥 < 2𝜋 и сохраняют знак отдельно. Примените этот подход
для оптимизации решения предыдущей задачи.
7 Используя формулы приведения для тригонометрических функций, оптимизируйте
вычисление синуса и косинуса, сведя аргумент 𝑥 к полуинтервалу 0 ≤ 𝑥 < 𝜋
4.
8 Определите, сколько членов суммы (2) необходимо использовать чтобы вычислить
sin 𝑥 при с точностью 0.1, 0.01, 10−5 при
а) 𝑥 — любом,
б) 0 ≤ 𝑥 < 2𝜋,
в) 0 ≤ 𝑥 < 𝜋
4.
Вычисление 𝑒𝑥 . Ряд Тейлора для экспоненты вблизи нуля имеет вид
𝑒𝑥
=1+𝑥+
𝑥2
2!
+
𝑥3
(4)
+ ... .
3!
9 Напишите функцию, возвращающую значение 𝑒𝑥 , используя формулу (4).
Вычисление ln(𝑥) и log𝑎 (𝑥). Разложим ln(𝑥) в ряд Тейлора при |𝑥| < 1:
ln (1 + 𝑥) = 𝑥 −
𝑥2
2
+
𝑥3
3
−
𝑥4
4
+ ... ,
|𝑥| < 1.
(5)
10 Как воспользоваться формулой (5) при значении аргумента больше 1, зная, что ln 10 ≈
2.3025851?
11 Напишите функцию, возвращающую значение ln(𝑥).
Для вычисления log𝑎 (𝑥) воспользуемся формулой:
log𝑎 (𝑥) =
ln(𝑥)
ln(𝑎)
.
12 Напишите функцию, возвращающую значение log𝑎 (𝑥).
Вычисление степенной функции.
13 Выразите 𝑥𝑦 при 𝑥, 𝑦 ∈ R через функции ln и exp. Напишите функцию, возвращающую 𝑥𝑦 .
14 Быстрое возведение в степень. Напишите функцию, возвращающую 𝑥𝑦 при 𝑥 ∈ R,
𝑦 ∈ Z, использовав 𝑂(log 𝑦) операций умножения.
Андрей Строганов. savthe@gmail.com
Download