![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| lamber |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 20.12.2008 Репутация: нет Всего: нет |
Вот возник нечаянно, негаданно вопрос, как найти логарифм, n-ого основания, либо вообще любого т.к. все мы знаем формулу преобразования одного основания в другое. Можно спросить нахрен мне это надо т.к. эта функция есть в math.h а так же в математическом сопроцессоре. тем не менее хочется знать, гуглил и нашел только алгоритмы для нахождения целой части логарифма и все. Знаю что есть несколько способов нахождения, хотелось бы узнать основные.
|
|||
|
||||
| afiskon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 31.3.2011 Где: Россия, Москва Репутация: 1 Всего: 4 |
Одно из возможных решений - http://eax.me/genetic-algorithms/ (простите за самопиар). Можно получить функцию для log, sin, cos, sqrt - чего угодно. А вообще - ряды Тейлора.
Это сообщение отредактировал(а) afiskon - 12.6.2011, 22:41 |
|||
|
||||
| lamber |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 20.12.2008 Репутация: нет Всего: нет |
2afiskon
только засел за чтение твоего блога (мистика нах), подумал еще дельно пишет, жаль что на Перле в основном. Сори за офф топ. По теме да самопиар т.к. тема запощена в C++, а пример на Перле и конкретного ответа на мой вопрос там нет. Так что жду ответов господа))) PS Придерживаюсь услышанного мнения что Перл придумали профессиональные извращенцы. |
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Первый простейший способ - разложение в ряд Тейлора в окрестности единицы (для облегчения жизни - с предварительным отбрасыванием целой части логарифма).
Второй - использование сравнительно быстро сходящегося ряда ln( (1+x)/(1-x) ) = 2 * (x + x^3/3 + x^5/5 + x^7/7 + ...). Понятно, что сначала надо представить аргумент в виде (1+x)/(1-x), но это совершенно элементарно. Третий - использовать цепные дроби. Точное выражение не помню, но что-то хорошее там существует. Ну и т.п. |
|||
|
||||
| afiskon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 31.3.2011 Где: Россия, Москва Репутация: 1 Всего: 4 |
lamber, плохо читали значит.
Вот собственно весь ответ на ваш вопрос. Далее идут только детали того, как подбирались коэффициенты. |
|||
|
||||
| lamber |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 20.12.2008 Репутация: нет Всего: нет |
2afiskon
Думаю ГА для такой задачи это из пушки по воробьям 2Фантом Можно первые два метода набросать основную идею в коде. По второму методу не понял что мы делаем с x, получаем его путем x' = (1+x)/(1-x) либо мы в сходящийся ряд подставляем просто аргумент. Это сообщение отредактировал(а) lamber - 12.6.2011, 23:32 |
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
Да что там набрасывать-то - это банальный подсчет суммы ряда.
Если мы ищем ln(y), то находим такой x, что y = (1+x)/(1-x), а потом пользуемся вышеприведенной формулой. |
|||
|
||||
| lamber |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 20.12.2008 Репутация: нет Всего: нет |
2Фантом
По второй формуле тогда вопрос, каким способом сделать преобразование y = (1+x)/(1-x), я имею ввиду в коде, на бумаге, сложности не представляет))) |
|||
|
||||
| Фантом |
|
|||
![]() Вы это прекратите! ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1516 Регистрация: 23.3.2008 Репутация: нет Всего: 49 |
||||
|
||||
| lamber |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 143 Регистрация: 20.12.2008 Репутация: нет Всего: нет |
Все до петрил, сенкс что разжевал все такому тупице как я )))
Это сообщение отредактировал(а) lamber - 13.6.2011, 00:40 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |