Сколько программистов нужно, чтобы возвести число A в степень B
В решении упражнения 1.45 я записал процедуру power, возводящую вещественное число a в вещественную степень b:
(define (power a b) (exp (* b (log a))))
Любопытно, что практически ни в одном старом языке программирования этой процедуры нет среди средств стандартной библиотеки (хотя каждый порядочный калькулятор эту функцию содержит). Таким образом, программистам, сталкивающимся с необходимостью возводить числа в произвольные степени, приходится несладко.
Жизнь здорово упрощается для тех разработчиков, которым знакомы (и которыми еще не забыты) логарифмические тождества. А именно тождество:
ab = eb ln a,
где ln – это натуральный логарифм (уж функция для его вычисления есть в любом языке программирования), а e – его основание. Именно это тождество и использует записанная мной выше процедура.
Доказательство тождества вполне элементарно и доступно даже школьнику. Опыт показывает, что программисты плохо запоминают то, чего не понимают, потому привожу доказательство целиком.
По определению, ln a – это такое число x, что ex = a.
Тогда ab = (ex)b = (eb)x = eb ln a.Что и требовалось доказать.
Как видите, проще не придумаешь.
Comments
Comment from meduza
Date: October 22, 2008, 4:09 pm
> проще не придумаешь
можно еще проще 😉 e^(b*lna) = (e^lna)^b = a^b (по основному лог. тождеству)
Write a comment