![]() |
|
Модераторы: bsa |
![]()
|
|
| gastly |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 14.12.2011 Репутация: нет Всего: нет |
Нужна помощь по курсачу. Задание состоит в следующем: написать sin cos log e работающие в 2 раза быстрее чем из Math.h. Вообщем программы по оптимизации я написал. А вот что писать в самой курсовой я даже понятия не имею) подкиньте кто нить хорошие идеи и книги которые помогут написать курсачь)
P.S. Эт моя первая курсовая в универе. P.P.S. кто подскажет как мне всю курсовую написать тому огромнейшее будет спасибо от меня) |
|||
|
||||
| alexvs11 |
|
|||
|
hell is here ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: 2 Всего: 10 |
курсовая это небольшое исследование
разделы на мой взгляд 1) зачем нужна подобная оптимизация, в чем цель ускорения этих функций 2) текущая реализация математических функций в math.h 3) обзор основных методов вычислительной математики, которые можно применить 4) описание, код вашего метода 5) проверка на правильность его работы, сравнение скорости работы оригинальной и вашей 6) выводы о том, что лучше, почему и как |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
||||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
На мой взгляд, оптимизировать можно только путем создания таблицы из некоторого числа значений. Когда тебе необходимо получить результат функции, то ты находишь пару близких записей в таблице и аппроксимируешь (линейно) до искомого значения. Например, у тебя есть запись для 85 и 90 градусов. А тебе надо найти результат для 89. Тогда искомый будет: r89 = (r90 * (89 - 85) + r85 * (90 - 89)) / (90 - 85). Чем больше таблица, тем выше точность. Записи в таблице должны быть с равным периодом (иначе считать будет сложней). Для логарифма этот вариант не подходит (если только для какого-то диапазона).
Кстати, e - это вообще константа. функции Math.h используют средства "математического сопроцессора", который давно уже есть во всех настольных процессорах (AMD, Intel, Via). А вот у процессоров для встраиваемых систем (ARM, AVR...) его может и не быть. Я сильно сомневаюсь, что у тебя получится что-то ускорить в первом случае... |
|||
|
||||
| alexvs11 |
|
|||
|
hell is here ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: 2 Всего: 10 |
может подразумеваться и другая оптимизация
если нужны значения мат функций с заданной ограниченной точности, то простенький алгоритм вычислительной математики сосчитает функцию быстрее чем из math.h |
|||
|
||||
| gastly |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 14.12.2011 Репутация: нет Всего: нет |
alexvs11 +1) спасибо за разьясние именно этого я и хотел)
от меня и требуется) обрезать тип double) я обрезал до 10 знаков) а так может кто подкинуть статьи и книги по моей теме?) |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
там всего 8 байт. До каких 10 знаков вы обрезали? Если вы создали алгоритмы то вам в пору самому писать книги и статьи... |
|||
|
||||
| gastly |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 14.12.2011 Репутация: нет Всего: нет |
volatile, в дабле 16 знаков после запятой) я до 10 знаков обрезал)
|
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
gastly, дабл это двоичный формат.
при вычислении синуса никаких 16 знаков нет и в помине. Знаки появляются только при выводе / вводе. короче, все ясно... |
|||
|
||||
| gastly |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 14.12.2011 Репутация: нет Всего: нет |
volatile, вот тебе лог к примеру(так же и для остальных функций)
препод сказал код абсолютно правильный))))) вот так вот=)))))))) |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
gastly, Это какой-то обрывок цикла, вычисляющего std-lib логарифмы для чисел в диапазоне от 1.0; до1.9999999999 и записывающего в массив.
Ну, ни к селу ни к городу, ... А если еще и правильный, то ему вообще цены нет. Ладно, всё! я ушел из этой темы. --- to all: вот здесь что-то близко к теме, и похоже на реальные результаты. http://gruntthepeon.free.fr/ssemath/ Это сообщение отредактировал(а) volatile - 16.12.2011, 02:11 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |