Функция Ln
Основы программирования Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее... |
Раздел: Стандартные функции Паскаля
Функция Ln вычисляет натуральный логарифм. Для подзабывших математику о логарифмах расскажу чуть позже. А пока синтаксис:
function Ln(Х : ValReal) : ValReal;
Функция Ln X возвращает натуральный логарифм вещественного числа Х. Число Х должно быть положительным - иначе случится ошибка времени выполнения. Хотя в моём случае ошибка не возникает, просто функция возвращает результат “минус бесконечность”. Видимо, это зависит от настроек компилятора.
О типе ValReal я рассказывал здесь.
Подробности см. в видео и читайте в статье далее.
А теперь немного математики.
Сначала вспомним, что такое логарифм.
Логарифм числа b по основанию a определяется как показатель степени, в которую надо возвести основание a, чтобы получить число b. Обозначение:
logab
То есть, чтобы вычислить логарифм числа b по основанию a, надо решить уравнение
ах = b
где а и b известны, а х - неизвестная величина.
Например,
log39 = 2
так как число 3 в степени 2 равно 9:
32 = 9
Теперь о натуральном логарифме, который и вычисляет функция Ln в Паскале.
Натуральный логарифм - это логарифм по основанию е. Где е - это иррациональная константа, которая равна приблизительно 2,72. То есть
ln x = logex
В FreePascal также есть другие функции для вычисления логарифмов:
- Log10 - вычисляет логарифм по основанию 10
- Log2 - вычисляет логарифм по основанию 2
- LogN - вычисляет логарифм по основанию N (в эту функцию передаются два параметра, сначала - основание N, затем число X)
- Lnxp1 - вычисляет натуральный логарифм по основанию Х+1
Но эти функции определены в модуле Math. То есть, чтобы воспользоваться этими функциями вам придётся подключить модуль Math к своей программе.
Такие вещи как область определения натурального логарифма Ln, производная, разложение в ряд Тейлора и прочие “ништяки” рассматривать не будем, так как это уже далеко выходит за сферу программирования.
А вот формулу, которая позволяет вычислить логарифм по произвольному основанию, используя только функцию Ln, я вам покажу:
logab = (ln b) / (ln a)
То есть, если вы не хотите подключать к вашей программе модуль Math, то это вам не помешает вычислить логарифм с любым основанием.
Пример собственной функции, которая является аналогом функции LogN из модуля Math, вы найдёте в исходном коде ниже.
program funcln; uses Math; var x : single; function MyLogN(n, x : single) : single; begin MyLogN := Ln(x) / Ln(n); end; begin x := Ln(2.718281828); WriteLn('Ln(2.72) = Ln(e) =', x:0:4); x := LogN(3, 9); WriteLn('Log 3 (9) = ', x:0:4); x := MyLogN(3, 9); WriteLn('MyLog 3 (9) = ', x:0:4); ReadLn; end.
Вступить в группу "Основы программирования"
Подписаться на канал в РУТУБ Подписаться на Дзен-канал Подписаться на рассылки по программированию |
Как стать программистом 2.0
Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее... |
Помощь в технических вопросах
Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее... |