Russian Qt Forum
Апрель 19, 2024, 19:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3] 4   Вниз
  Печать  
Автор Тема: Матьиматика  (Прочитано 21964 раз)
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #30 : Октябрь 21, 2014, 21:07 »

Я найду время, просто "не сию минуту" - есть и другие дела  Улыбающийся
Да-да-да. Вам же нужно еще показать нам "профессиональную" реализацию - просим просим. Улыбающийся
Да и неплохо бы прокомментировать свои традиционно голословные заявления по поводу невозможности сделать прокси устройство от QIODevice, которое умеет испускать исключения.
Есть еще "другие дела", есть.

А то я уже начал расстраиваться... думаю забыл мастер сирых. Ан нет.  Строит глазки

P.S. И название темы подобрано хорошо: Мать И Матика. Улыбающийся
« Последнее редактирование: Октябрь 21, 2014, 22:20 от Old » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #31 : Октябрь 22, 2014, 12:49 »

Приаттачиваю проект, на всякий случай..
 
Ага, понял, у Вас все время уходит на запись в поток. В аттаче обещанная реализация. Насчет точности, расхода памяти, удобства - тут и спорить нечего, bisect превосходен. Но все-таки табличное задание быстрее, и может быть еще быстрее если ф-ция сложнее. И этот плюс может перевесить все минусы.

Да-да-да. Вам же нужно еще показать нам "профессиональную" ..
Если Вы в припадке раздражения - то я лучше промолчу, все равно разговор ничем хорошим не кончится  Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #32 : Октябрь 22, 2014, 12:57 »

Если Вы в припадке раздражения - то я лучше промолчу, все равно разговор ничем хорошим не кончится  Улыбающийся
Вы меня расстраиваете, "профессиональную" сортировку можно не ждать? Грустный
Все как всегда, пришел, бла-бла-бла и в кусты. Зато как щеки раздувал. Дааа, это не финдреплейсы на QStringах писать... понимаю. Улыбающийся

Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #33 : Октябрь 22, 2014, 13:45 »

Вы меня расстраиваете, "профессиональную" сортировку можно не ждать? Грустный
Все как всегда, пришел, бла-бла-бла и в кусты. Зато как щеки раздувал. Дааа, это не финдреплейсы на QStringах писать... понимаю. Улыбающийся
О чем Вы Непонимающий Какую сортировку я Вам обещал  Непонимающий
Цитировать
Да ты бредишь, Парамоша
(классика советского кино)
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #34 : Октябрь 22, 2014, 13:48 »

О чем Вы Непонимающий Какую сортировку я Вам обещал  Непонимающий
Ну как же "профессиональную". Улыбающийся
Ну понятно, ниасилил, бывает.
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #35 : Октябрь 22, 2014, 15:55 »

Цитировать
В аттаче обещанная реализация.
Посмотрел) Надо отметить - изысканная вещь для ценителей хардкора)
Я не представляю себе пользователя, который бы использовал это в реальном проекте..
Да, в этом конкретном случае, работает быстрее, но учитывая, что для  реальных задач важна не только скорость (а скорость в обеих случаях неплохая и едва ли будет где-либо узким местом) но и точность (и память) то оно того не стоит..
Таким решением просто неудобно пользоваться, к тому же оно ещё и мой бисекшн использует Улыбающийся

Цитировать
Но все-таки табличное задание быстрее, и может быть еще быстрее если ф-ция сложнее. И этот плюс может перевесить все минусы.
Быстрее, но, поверьте, в реальных задачах, функции обычно (практически всегда) зависят ещё от кучи параметров.
Будете табулировать её для всех возможных значений всех параметров?)

Поэтому такое решение имеет очень ограниченный круг применения..

Кстатии, эту функцию (обратную к y*exp(y)) можно найти приближённо аналитически (по теория возмущений):
Код
C++ (Qt)
template <class T>
T approx_func2(const T & x)
{
   static const T r = 1.33;
   const T y0 = log(1 + x)/r;
 
   const T a = 0.5 / (y0*y0);
   const T b = -(1 + 1.0/y0);
   const T c = log(x/y0) - y0;
 
   return y0 + (-b - sqrt(b*b - 4*a*c))/(2*a);
}
 

С абсолютной погрешностью меньше 0.0003 на всём интервале x от 0 до нескольких миллионов..

В общем,  мораль, как всегда, такова: лучше вначале хорошенько 10 раз подумать (подальше от компьютера) и только потом уже кодить  Подмигивающий 


 

 
   
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #36 : Октябрь 22, 2014, 16:01 »

В общем,  мораль, как всегда, такова: лучше вначале хорошенько 10 раз подумать (подальше от компьютера) и только потом уже кодить  Подмигивающий 
Это для школьников, которые лабы делают.
А настоящие "профессионалы" во время звонка клиента, который говорит "Слушай, хочу такую прогу....", уже набирают в редакторе "class MainWindow". Это настоящие мужики. Улыбающийся
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #37 : Октябрь 22, 2014, 16:37 »

В общем,  мораль, как всегда, такова: лучше вначале хорошенько 10 раз подумать (подальше от компьютера) и только потом уже кодить  Подмигивающий 
Это для школьников, которые лабы делают.
А настоящие "профессионалы" во время звонка клиента, который говорит "Слушай, хочу такую прогу....", уже набирают в редакторе "class MainWindow". Это настоящие мужики. Улыбающийся


Я бы сказал, это очень брутальные мужики Улыбающийся

/* Чёта почувствовал себя опять школьником) */
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #38 : Октябрь 22, 2014, 17:08 »

Да, в этом конкретном случае, работает быстрее,
Насколько? Я не знаю что Вашей машине, на моей в 8-9 раз быстрее

Надо отметить - изысканная вещь для ценителей хардкора)
...
Я не представляю себе пользователя, который бы использовал это в реальном проекте..
..
для  реальных задач важна не только скорость
...
Таким решением просто неудобно пользоваться, ...
...
Поэтому такое решение имеет очень ограниченный круг применения..
Все эти "стоны придавленного дерева" никто не будет даже слушать - если сказано хотя бы "вдвое быстрее", а о большем неудобно и говорить. В задачах рендера за это продают душу (ну у кого она есть)

Кстатии, эту функцию (обратную к y*exp(y)) можно найти приближённо аналитически (по теория возмущений):
Вот Вы считаете что я тупой ретроград  Улыбающийся Ну ладно, пусть так (на Вас не обижаюсь). Но тогда поясните почему я (такой тупой) применил куда более общее решение чем Вы, такой современный и продвинутый? Улыбающийся Ну в самом деле - то Вы прологарифмировали уравнение, то Вы заменили его приближенным. Это прекрасно - но только в частном случае. А в табличном решении пофиг какая ф-ция - все равно это предрасчет выполняемый один раз. Имеет др минусы? Не спорю, но как и всякое решение (в том числе и Ваше). Кстати в игровых задачах фаза предрасчета может длиться неск суток - и это норм (все равно ноль в runtime)

Не надо судить "по одежке" (типа сколько там template  Улыбающийся) - это очень поверхностный взгляд на вещи

Это для школьников, которые лабы делают.
А Вам вообще "не дано" придумать свое решение - слишком долго сидели на дусте. Ну что ж, "прекрасный реализатор" - тоже неплохо, кто знает...
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #39 : Октябрь 22, 2014, 17:11 »

А Вам вообще "не дано" придумать свое решение - слишком долго сидели на дусте. Ну что ж, "прекрасный реализатор" - тоже неплохо, кто знает...
Ну вообще пока, только вы ничего кроме финдреплейса сделать не осилили. Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #40 : Октябрь 22, 2014, 17:28 »

Ну вообще пока, только вы ничего кроме финдреплейса сделать не осилили. Улыбающийся
Как в том анекдоте
Цитировать
Сломался, сломася новозеландский спорсмен..
Может я и был неправ (не судите - и не судимы будете), но в общем хорошо - пока так пока.
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #41 : Октябрь 22, 2014, 17:57 »

Цитировать
Насколько? Я не знаю что Вашей машине, на моей в 8-9 раз быстрее
У меня примерно также.. Но..

Цитировать
Все эти "стоны придавленного дерева" никто не будет даже слушать - если сказано хотя бы "вдвое быстрее", а о большем неудобно и говорить. В задачах рендера за это продают душу (ну у кого она есть)
Мне частенько приходиться писать числодробилки, в которых такие трансцендентные уравнения возникают постоянно, и функции там потяжелее логарифмов с экспонентами) Но вот табулировать их значения - это дохлый номер.. И никто (кроме, наверное Вас) этим заниматься не будет по следующим причинам:

Во-первых, по мимо аргумента функции, имеются ещё и доп параметры.. Даже если взять пример TC и чуть усложнить его:
x = y*exp(a * y), то Ваш табличный метод уже в пролёте.

Во-вторых, в данном примере, Вам просто повезло с функцией: y - имеет очень медленную логарифмическую зависимость и поэтому для очень большого интервала x, y меняется незначительно..
А если взять хотя бы такую функцию: x = pow(y, 1/4) + pow(y, 1/6), то размер Вашей таблички очень быстро вырастет если мы претендуем хоть на какую то точность, пусть хоть и во втором знаке..

Цитировать
Вот Вы считаете что я тупой ретроград  Улыбающийся
Нет, это Вы преувеличиваете)

Цитировать
Но тогда поясните почему я (такой тупой) применил куда более общее решение чем Вы, такой современный и продвинутый?
Так о том и речь, что Ваше решение очень ограниченное) Неужели это до сих пор не очевидно?   
 
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #42 : Октябрь 22, 2014, 18:06 »

не судите - и не судимы будете
А почему сами судите?
Вы не стесняетесь судить в темах 8Observer8, не замечали? А в другой теме, вы назвали комментатора мудаком и посоветовали не обращать на него внимание. Забыли?
А когда вас просят показать себя, вы сдуваетесь и начинаете истерить и говорить "сам дурак".
Традиционно, чем меньше вы в теме разбираетесь, тем сильнее вам хочется её комментировать, а когда вам говорят о вашем не знании - начинаете капризить. Ну сколько можно?
« Последнее редактирование: Октябрь 22, 2014, 19:15 от Old » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #43 : Октябрь 23, 2014, 09:38 »

Так о том и речь, что Ваше решение очень ограниченное) Неужели это до сих пор не очевидно?   
Да какое оно "мое"? Улыбающийся Табличный метод известен с незапамятных времен, и также известно что он ощутимо быстрее аналитики. Хотели проверить, ну вот проверили.

Насчет ограничений никто не спорит. Напр atan табличкой не сделать (можно через cos дважды). Но аналитическое решение тоже имеет минусы. Вот напр пользователь задал точки сгладив их по Безье - ох и долго Вам придется возюкаться с формулами Улыбающийся А искать "делением пополам" - так монотонности никто не обещал.
Записан
OKTA
Гость
« Ответ #44 : Октябрь 23, 2014, 13:43 »

Ну... спасибо всем большое за советы и обсуждение  Улыбающийся
Сейчас начну пробовать ваши идеи на своей задачке и выскажусь по результатам!  Подмигивающий
Записан
Страниц: 1 2 [3] 4   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.089 секунд. Запросов: 23.