Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск логарифма 
:(
    Опции темы
lamber
Дата 12.6.2011, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 20.12.2008

Репутация: нет
Всего: нет



Вот возник нечаянно, негаданно вопрос, как найти логарифм, n-ого основания, либо вообще любого т.к. все мы знаем формулу преобразования одного основания в другое. Можно спросить нахрен мне это надо т.к. эта функция есть в math.h а так же в математическом сопроцессоре. тем не менее хочется знать, гуглил и нашел только алгоритмы для нахождения целой части логарифма и все. Знаю что есть несколько способов нахождения, хотелось бы узнать основные.
PM MAIL   Вверх
afiskon
Дата 12.6.2011, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 31.3.2011
Где: Россия, Москва

Репутация: 1
Всего: 4



Одно из возможных решений - http://eax.me/genetic-algorithms/ (простите за самопиар).  Можно получить функцию для log, sin, cos, sqrt - чего угодно. А вообще - ряды Тейлора.

Это сообщение отредактировал(а) afiskon - 12.6.2011, 22:41
PM MAIL WWW   Вверх
lamber
Дата 12.6.2011, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 20.12.2008

Репутация: нет
Всего: нет



2afiskon
только засел за чтение твоего блога (мистика нах), подумал еще дельно пишет, жаль что на Перле в основном. Сори за офф топ.

По теме да самопиар т.к. тема запощена в C++, а пример на Перле и конкретного ответа на мой вопрос там нет. Так что жду ответов господа)))
PS
Придерживаюсь услышанного мнения что Перл придумали профессиональные извращенцы.

PM MAIL   Вверх
Фантом
Дата 12.6.2011, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 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), но это совершенно элементарно.

Третий - использовать цепные дроби. Точное выражение не помню, но что-то хорошее там существует.

Ну и т.п.
PM   Вверх
afiskon
Дата 12.6.2011, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 294
Регистрация: 31.3.2011
Где: Россия, Москва

Репутация: 1
Всего: 4



lamber, плохо читали значит.
Цитата

Генетические алгоритмы позволяют подобрать коэффициенты полинома таким образом, чтобы его график проходил максимально близко к графику аппроксимируемой функции.


Вот собственно весь ответ на ваш вопрос. Далее идут только детали того, как подбирались коэффициенты.
PM MAIL WWW   Вверх
lamber
Дата 12.6.2011, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 20.12.2008

Репутация: нет
Всего: нет



2afiskon
Думаю ГА для такой задачи это из пушки по воробьям

2Фантом

Можно первые два метода набросать основную идею в коде. По второму методу не понял что мы делаем с x, получаем его путем x' = (1+x)/(1-x) либо мы в сходящийся ряд подставляем просто аргумент.

Это сообщение отредактировал(а) lamber - 12.6.2011, 23:32
PM MAIL   Вверх
Фантом
Дата 12.6.2011, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: нет
Всего: 49



Цитата(lamber @  12.6.2011,  23:27 Найти цитируемый пост)

Можно первые два метода набросать основную идею в коде.

Да что там набрасывать-то - это банальный подсчет суммы ряда.

Цитата(lamber @  12.6.2011,  23:27 Найти цитируемый пост)
По второму методу не понял что мы делаем с x, получаем его путем x' = (1+x)/(1-x) либо мы в сходящийся ряд подставляем просто аргумент.

Если мы ищем ln(y), то находим такой x, что y = (1+x)/(1-x), а потом пользуемся вышеприведенной формулой.
PM   Вверх
lamber
Дата 13.6.2011, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 20.12.2008

Репутация: нет
Всего: нет



2Фантом

По второй формуле тогда вопрос, каким способом сделать преобразование y = (1+x)/(1-x), я имею ввиду в коде, на бумаге, сложности не представляет)))
PM MAIL   Вверх
Фантом
Дата 13.6.2011, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: нет
Всего: 49



Цитата(lamber @  13.6.2011,  00:25 Найти цитируемый пост)

По второй формуле тогда вопрос, каким способом сделать преобразование y = (1+x)/(1-x), я имею ввиду в коде, на бумаге, сложности не представляет))) 

Так на бумаге и сделать. Если y=(1+x)/(1-x), то x=(y-1)/(y+1). Кодирование этого, думаю, сложности не представляет.  smile 
PM   Вверх
lamber
Дата 13.6.2011, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 20.12.2008

Репутация: нет
Всего: нет



Все до петрил, сенкс что разжевал все такому тупице как я )))

Это сообщение отредактировал(а) lamber - 13.6.2011, 00:40
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0508 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.