Pull to refresh

Comments 67

Делал такое для ломаных линий. Там нельзя посчитать нормаль по понятным причинам, поэтому просто в первой точке выбирал произвольное направление нормали, перпендикулярное направлению. А потом просто в каждой новой точке поворачивал координатную систему на угол поворота вектора направления (т.е. осью вращения было векторное произведение векторов предыдущего направления и нового).
Странно, кстати, что в статье нет упоминания про проблему пересечения сечений. Для заданных значения кривизны кривой и радиуса сечения всегда существует минимальный шаг между сечениями при котором сечения начнут пересекаться, в результате чего модель получается некорректной.
Подход с ломаными и поворотами координатной системы используется в этой книге:

image

Я тоже работаю с фактически ломаной, но сплайн превращает её в гладкую кривую с непрерывной второй производной, т.е. непрерывно меняющейся главной нормалью (нужно помнить, что сплайны нелокальны, т.е. изменение положения одной из точек кривой изменяет коэффициенты полиномов на всех отрезках, это затратно в смысле вычислений, но волшебным образом преображает ломаную). Что касается пересечения сечений — в большинстве случев можно подобрать такое их количество, чтобы они не пересекались. Реальные кривые являются гладкими не во всех точках, там, где касательная обращается в 0, все равно будут проблемы. Кроме того, именно проволочная модель с очень большим кол-вом сечений вообще будет выглядеть непонятно
Интерполяцию сплайнами тоже делал. Только использовал эрмитов сплайн, потому что он ведет себя более предсказуемо. Обычный кубический сплайн часто начинает осцилировать, особенно если в интерполируемых данных присутствует шум. Ну и при изменении одной точки эрмитов сплайн меняется только локально. Но зато вторая производная у него не непрерывна.
Поэтому делал так: интерполировал ломаную сплайном, а потом уже делал тесселяцию сплайна ломаной, но уже с более мелким шагом, и для нее уже использовал метод с поворотом координатной системы.
Я не уверен, что описанная схема содержит что-либо новое в визуализации трубок, и не знаю, какие методы для их построения используются в настоящих «взрослых» графических системах — возможно, подобные, а возможно — в корне отличающиеся.
Я (совершенно случайно) знаю — в корне отличаются, потому что используют кватернионы, а иногда даже дуальные кватернионы — чтобы заодно и скорость знать без дополнительных вычислений.
чтобы заодно и скорость знать без дополнительных вычислений

Скорость чего?

Я (совершенно случайно) знаю — в корне отличаются, потому что используют кватернионы, а иногда даже дуальные кватернионы

Вам это известно сразу обо всех системах, которые занимаются подобными построениями? Неужели в них во всех методы одинаковые?
Скорость чего?
Скорость изменения функции, производную то бишь. Также можно интерпретировать как как касательную в 3D-пространстве.

Вам это известно сразу обо всех системах, которые занимаются подобными построениями? Неужели в них во всех методы одинаковые?
Ну в более простом случае можно матрицами обойтись. В любом случае, описывать кривые параметрически — это детский сад, на этом далеко не уедешь.
Скорость изменения функции, производную то бишь. Также можно интерпретировать как как касательную в 3D-пространстве

Гмм, а вы публикацию-то целиком прочитали? В ней упоминается некий вектор T, это и есть касательная, её для построения трубки определять необходимо, даже когда не используются кватернионы

В любом случае, описывать кривые параметрически — это детский сад, на этом далеко не уедешь.

А где в приведенном алгоритме используется тот факт, что трубка строится именно для параметрической кривой? Алгоритм работает для любой пространственой ломаной, поэтому его можно использовать для фазовых траекторий динамических систем, они обычно в явном виде неизвестны. Параметрические кривые здесь используются для иллюстрации метода, трубку для них в моём приложении можно построить мгновенно и рассмотреть со всех сторон.
Не обязательно ссылаться на ваше приложение в каждом комментарии. Лучше покажите, как вы в нём делаете чуть более сложные модели — скажем, трубу не с круглым, а с квадратным сечением, завёрнутую в спирать n-е количество раз и имеющую начало и конец в явно заданных координатах. Затем посчитайте её объём и площадь поверхности. Вот тогда это будет математика по-взрослому — которая заодно и покажет, зачем придумали дуальные кватернионы. Ну и — я так и не дождался примера, как в вашей более универсальной программе рассчитывается волновое уравнение на произвольной поверхности и задаётся подавление на краевых условиях при уходе волны в бесконечность.

P.S. это не критика и не придирки, а лишь попытка обсуждения «по-взрослому» без скидок на возраст и специальное образование — не знаю как у вас, а у меня его нет. И математику я изучал не для развлечения, а для решения конкретных практических задач.
Хорошо было бы, чтобы вы указывали мне, на что мне нужно ссылаться, а на что нет, а также не задавали бы мне для решения какие-то частные задачи, решением, которых вы когда-то занимались, я создавал приложение не для решения ваших задач. Назначение моего приложения — в основном образовательное, оно предназначено для демонстрации различных методов исследования динамических систем и применять его достаточно просто, и уж наверняка с его помощью пользователь может узнать намного больше о динамических системах в физике, химии, биологии и прочих областях, чем из вашего замечательного приложения, которое, по вашему собственному уверению, «никому не нужно».
Вообще, забавно читать ваши менторские рассуждения о «детском саде» и «взрослых системах», когда в качестве примера применения свого приложения вы приводите без пояснений красивую анимацию, которую можно принять как за описание физического процесса, так и за «ковер» — произведение искусства, предназначенное для продажи в виде NFT-токена.
Кстати, насчет объема и площади трубок — насколько мне помнится, в книге Грея, о которой говорится в публикации, упоминается теорема, согласно которой объем трубки зависит только от её длины и площади сечения (т.е. объем круглой трубки равен объему цилиндра с высотой, равной длине трубки), возможно, площадь тоже получается просто разворачиванием поверхности трубки (насчет объема я уверен, насчет площади — нужно проверять, можете это сделать самостоятельно). Возможно, кватернионы используются при доказательстве, а возможно — нет, я сейчас проверять не буду, но практическое значение имеет только само утверждение теоремы. Трубки некруглых сечений я в своём приложении не строил только из-за ограничений интерфейса — нужно было бы реализовывать задание различных типов трубок и параметров для них, само собой, метод, который я использовал, подходит и для разных сечений.
Ну, и я по-прежнему с нетерпением жду примеров применения вашего приложения (или хотя-бы публикации на Хабре). Свой пример решения краевой задачи я выложил в комментах к другой, известной вам публикации
Хорошо было бы, чтобы вы указывали мне

Конечно, имелось в виду «Хорошо было бы, чтобы вы не указывали мне ...»
Это не указание, это наблюдение, когда используемый подход (и даже не инструментарий!) ограничивает сложность доступных задач для решения. Я и сам с этим столкнулся, когда когда-то давно пытался свою двойную спираль свернуть ещё раз и не смог. И с комплексными числами было то же самое — только с ними я смог рисовать узоры в таком стиле:
спойлер

И да, это тоже алгебраическая кривая.
Пожалуста, очень хочу знать, какова сложность задач, доступных для решения в вашем приложении, каковы ограничения для его применения, что оно вообще умеет делать, кроме решения одного уравнения. Относительно своего приложения я это знаю, не скрываю, вот заглавная страничка сайта, на котором указана вся эта информация. Мой подход я изложил, в приложении в качестве примера хранится информация о примерно 150-ти динамических системах, которые можно исследовать всевозможными способами. Вы же все время пишете что-то вроде: «это детский сад», «это несерьезные графики», «это не взрослая математика», «каждый может такое написАть» и «я могу намного круче». Согласитесь, это как-то по-подростковому. При этом — я посмотрел ваши публикации, они вполне себе интересные, особенно эта: «Комплексные числа и геометрические узоры», но знаете, позиционировать себе как большого серьезного математика, поверьте, не стоит (таковым вы можете предстать перед автором публикации об алгебраических кривых, но не передо мной).
Меня подмывает вставить в моё приложение вычисление объемов и площадей трубок, сделаю это, если будет время, а вы пока могли бы порешать сто с чем-то моих систем (ой, простите, я имел в виду примеры в моем приложении) диффуравнений, чтобы показать свою настоящую силу
Наоборот, я позиционирую себя как не-математик, и с математиками себя никак не ассоциирую. Я — типичный программист, потому и на хабре, а не на dxdy или mathoverflow.
«это детский сад», «это несерьезные графики», «это не взрослая математика», «каждый может такое написАть» и «я могу намного круче». Согласитесь, это как-то по-подростковому.
Конечно соглашусь, что понты — это по-подростковому. Однако это не отменяет ничего из Вами перечисленного — графики действительно несерьёзные и любой программист действительно такое может написать, и подобных публикаций на хабре навалом, не только моих.
Можете ли вы уточнить, имеете ли вы в виду графики уважаемого автора публикации об алгебраических кривых или мои собственные? Если вы так отзываетесь о моих собственных графиках — тогда я втройне хочу увидеть ваши серьезные графики и узнать наконец, как же устроено ваше собственное приложение для решения дифференциальных уравнений? Есть у него какие-то формы для ввода исходных данных? Есть ли вообще какой-то пользовательский интерфейс? Предъявите их, пожалуйста, без этого все ваши суждения сильно смахивают на детский лепет и следствие вашего уязвленного самолюбия.
Что-нибудь вроде этого сможете быстро набросать для своего замечательного приложения?

Предъявите их, пожалуйста, без этого все ваши суждения сильно смахивают на детский лепет и следствие вашего уязвленного самолюбия.
Пусть будет детский лепет и уязвлённое самолюбие — мне не жалко) Как я уже говорил, моё приложение решает одно-единственное уравнение — волновое (в 2D), оно захардкожено и оптимизировано. Отражающие поверхности задаются либо мышкой, либо прямо в коде. Можно было засунуть сюда и импорт xml, и парсер формул — но у меня сейчас есть более приоритетные (и интересные) задачи.
как-то так выглядит оно сейчас

Не скажу, что ваш интерфейс как-то уж особенно впечатляет, как и то, что приложение посвящено решению одного уравнения (правда, это должно быть уравнение в частных производных — это совсем особая область, и методы сильно отличаются от методов для ОДУ), но хорошо, что есть хоть какой-то, а то я уж думал, что вы прямо в коде параметры меняете.
Можно было засунуть сюда и импорт xml, и парсер формул — но у меня сейчас есть более приоритетные (и интересные) задачи.
Звучит так, будто парсеры вы уже не раз писАли (я написАл только один, и было это 30 лет назад, ваш новый, тот, который вы напишите, когда закончатся интересные задачи, наверняка будет более быстрым при выполнении, это ж сколько лет прошло и как наука вперед шагнула!). Но до того, как будет готов ваш парсер — умоляю вас, не разбрасывайтесь заявлениями о несерьезных графиках и о том, как вы можете круче. Будет готов парсер — можно будет его обсудить, и вы сможете построить настоящие серьезные графики с кучей антиалиасинга. Я надеюсь, что смогу таки увидеть, как же надо программировать графику по-настоящему.
давно уже есть у меня свой парсер, и даже комплексные числа поддерживает.
скриншот

А комплексные числа нужны как минимум для того, чтобы такое выражение посчитать: cos(2×arccos(2}}
Мне комплексные числа не понадобились, но это ни о чем не говорит, если они есть — это плюс, конечно. А скажите, какое внутренне представление для выражений вы используете?
Мне комплексные числа не понадобились
Наверно потому что Вам не доводилось считать полиномы Чебышева произвольного порядка.

какое внутренне представление для выражений вы используете?
Дерево. А каждый узел у него — это объект унаследованного класса от IFunction с переопределённым методом Process(), который в зависимости от класса реализует конкретную функцию — sin(x), cos(x), add(x,y) и т.д. Считается рекурсивно. Хотя более правильно было бы преобразовать его в стек с обратной польской записью.
Наверно потому что Вам не доводилось считать полиномы Чебышева произвольного порядка.

Серьезно? Вот они, разноцветные, порядка с пятого по десятый
Полиномы Чебышева
image

Вы, конечено, знаете, что полиномы Чебышева удовлетворяют некоторому обыкновенному дифференциальному уравнению?
Так а почему вы их за пределами (-1;1) не рисуете-то?
Так а почему вы их за пределами (-1;1) не рисуете-то?

Потому, что экран узкий…
Знаете, у вас какие-то странные претензии. Я быстро набросал картинку для полиномов в их естественной области определения. Вы вообще неспособны быстро иллюстрировать свои мысли картинками, но почему-то предъявляете повышенные требования то к качеству картинок, то к их содержанию. Займитесь всовыванием парсера в ваше прекрасное приложение, и покажите, наконец, как нужно делать картинки
Полином Чебышева для Refridgerator'а
Здесь полином построен по явной формуле, но можно организовать и рекуррентное вычисление коэффициентов полиномов, а затем пользоваться схемой Горнера для вычисления значений. Думаю, что в здравом уме во всяких системах для научных вычислений полиномы Чебышева через арккосинусы никто не вычисляет
image
Причём тут вера? Я говорил о полиномах произвольной степени, когда эта самая степень передаётся в качестве параметра, и вычисляемых посредством формулы cos(n·arccos(x)). И например, arccos(2) без комплексных чисел у Вас вычислить не получится, равно как и не получится вычислить фильтр Чебышева или окно Дольфа-Чебышева.
Я говорил о полиномах произвольной степени, когда эта самая степень передаётся в качестве параметра, и вычисляемых посредством формулы cos(n·arccos(x))
Так не пользуйтесь этой формулой. Я же набросал вместе с графиком универсальную схему для вычисления значений полиномов, повторю, думаю, что нормальные системы пользуются чем-то подобным. Это уже не говоря о временных затратах на вычисление, для прямых и обратных тригонометрических функций они должны быть немаленькими.
Я не отрицаю важность и нужность комплексных чисел, но в практических расчетах они нужны не всегда, иногда могут создавать проблемы (типа образования чисел вроде 0.5+i*10^-12). То же относится и кватернионам. Понимаю, что они вам интересны, но совать их во все дырки не следует. Перефразируя одного литературного героя, хочется спросить у вас: «Кто они вообще такие, эти Кватернионы? Это ваши родственники, что ли?»
Я вам открою секрет — при достаточно больших n полиномиальная форма неприменима из-за катастрофического накопления погрешностей, и преимущество по скорости вычисления тоже теряют по очевидным причинам. Можно их конечно вычислять итеративно — однако реализовать такое в скрипте намного проблематичнее, чем просто вложить одну функцию в другую. Плюс существует много и других функций, в которых комплексные числа появляются при промежуточных вычислениях. И если Вы не знали — Wolfram Mathematica вообще всё считает в комплексных числах, и наверное у них были для этого причины.
Чувствуется, что вы провели много времени за анализом исходников Mathematic'и, и откуда только у вас доступ взялся, и откуда вы знаете все их секреты? Я же, со своими скромными возможностями, могу предположить, что в действительности для разных значений аргумента и разных степеней полиномов внутри могут использоваться разные методы (вы, с вашим доступом к их исходникам, как раз и могли бы это проверить). Для уменьшения погрешности при вычислении значений полиномов используется схема Горнера, вы хоть гляньте, что это
Здесь на хабре иногда появляется один из русскоязычных разработчиков Mathematica, поэтому вся инфа из первых рук. Про схему Горнера спасибо я знаю — вот только ошибку вычисления она увеличивает, а не уменьшает.
И он подтвердил, что что значения полиномов Чебышева всегда вычисляются через арккосинусы?
Не спрашивал, но для нецелых n другого пути не вижу.
А для целых тоже нужно арккосинусы считать? Вот вы разработчик, вы бы так и поступили?
Я именно так и поступил, и если вам кажется, что для n=1000000 проще, быстрее, и точнее посчитать полином миллионной степени — ну ок.
А всем всегда нужны полиномы только степени не меньше миллиона? Ну, тогда это оправдано. Я бы для полиномов относительно небольшой степени обошелся бы полиномом, а при вычислении проверял степень полинома и использовал разные методы. Ну, вам виднее
Про схему Горнера спасибо я знаю — вот только ошибку вычисления она увеличивает, а не уменьшает.
Удивился этому факту, сам не проверял, решил поискать, нашел это
Резюмируя сказанное, замечу, что вычисление одного или нескольких значений полинома бесспорно нужно проводить с использованием схемы Горнера.
Ну, может и правда нужно вычислять значения полиномов при помощи возведения в степень и сложения. Не знаю…
В той статье автор не приводит никаких исследований на практических измерениях точности. Известное мне обоснование строится на том, что погрешность умножения больше чем у сложения, а в схеме Горнера под него попадают коэффициенты полинома. В собственных исследованиях я не обнаружил значимой разницы и использую схему Горнера с чистой совестью, а когда нужная большая точность — использую double-double.
Я даже знаю, что сначала появились полиномы Чебышева, а потом уже под них придумали дифференциальное уравнение — чисто математическое развлечение, не имеющее никакого практического смысла.
У вас очень своеобразный взгляд на историю математики, думаю, здесь дело в каких-то профессиональных деформациях.
Кстати, в процессе дискуссии у меня начинают возникать смутные подозрения — а вы вообще понимаете, в чём отличие обыкновенных дифференциальных уравнений от уравнений в частных производных? А то вы мне пытались подсунуть для решения волновое уравнения, хотя я ясно сказал с самого начала, что моё приложение предназначено для решения систем обыкновенных дифференциальных уравнений
А ещё вы сказали, что Ваше приложение универсальнее и предпочтительнее моего неуниверсального.
Так это же вы сказали: «а я могу круче», несмотря на то, что ваше неуниверсальное приложение посвящено области, не пересекающейся с областью моего приложения (или, скажем, слабо пересекающейся). Как же вы крутость-то свою подтверждать собирались? Если вы это произнесли, то нужно либо доказать, что у вас круче, либо замолчать и извиниться (конечно, в обратном порядке). Не я ведь разговор в подобном тоне начал
Очевидно что одномерное уравнение решить проще, чем двумерное, особенно на краевых условиях, то есть обеспечить уход волны в бесконечность. Извиняться не вижу причин, к тому же вы и сами особую учтивость продемонстрировать не смогли. Замолчать — боюсь и тут вы не смогли продемонстрировать достаточного обоснования для права подобного требования. Но вы можете и имеете право поставить мне минус в карму.
Но вы можете и имеете право поставить мне минус в карму.
Ха-ха-ха, я таким не занимаюсь, это можно применить только к тем, что поддерживает агрессию против других стран.
А вот у меня в комментах был один плюсик, а потом исчез, неужели вы постарались?

Извиняться не вижу причин, к тому же вы и сами особую учтивость продемонстрировать не смогли
Человек, очень громко заявляющий: «Я крут, а вы все ничтожны» (согласитесь, именно такой посыл содержали ваши первые комментарии), конечно же, должен быть готов к тому, что его попытаются убедить в обратном. В процессе дискуссии выяснилось, что у вас имеются некоторые пробелы в знаниях и умениях, поэтому ничего зазорного нет в том, чтобы написать: «Я был неправ, я не настолько крут, как мне казалось, а вы, мои оппоненты, не настолько ничтожны».
Кстати, как там с объемом трубок, вы разобрались? Правда ли, что его считать несложно, нужно только знать длину центральной кривой?
А вот у меня в комментах был один плюсик, а потом исчез, неужели вы постарались?
Пусть это будет интрига — голосование потому и анонимное.

Человек, очень громко заявляющий: «Я крут, а вы все ничтожны» (согласитесь, именно такой посыл содержали ваши первые комментарии), конечно же, должен быть готов к тому, что его попытаются убедить в обратном. В процессе дискуссии выяснилось, что у вас имеются некоторые пробелы в знаниях и умениях
А я помню всё прямо наоборот — только не обладаю достаточным самомнением для того, чтобы требовать извинений.
Пусть это будет интрига — голосование потому и анонимное.
Двойное ха-ха-ха! Уж нарушу правила и поставлю смайл ;-)
А я помню всё прямо наоборот — только не обладаю достаточным самомнением для того, чтобы требовать извинений.
Знаете, мой университетский преподаватель приводил такой пример использования слова «наоборот»: «На этой картине изображено море, а на той — наоборот, собака». Ваш «наоборот» какого-то такого свойства
давно уже есть у меня свой парсер, и даже комплексные числа поддерживает.
Так это же превосходно! Значит, вы засунете его туда, куда собирались, относительно быстро, а я скоро смогу поучится правильному программированию графиков!
Рассмотрел ваш существующий вариант, графики у вас тоже как-то не очень… Но вы же себя еще покажете, надеюсь, когда достигнете, наконец, совершенства!
Толсто) Совершенства я может и не достиг, но помимо антиалиасинга ещё и скорость нарастания функции яркостью могу кодировать с НЧ-фильтром.

или так

Других идей по улучшению у меня пока нет.
Вы искренне считаете ваши графики очень красивыми и аккуратными?
Ваша проблема, как и автора публикации об алгебраических кривых, в том, что вы пишете приложения для себя (у него, конечно, они очень уж топорные, у вас получше, но суть одна). Приложение, которым смогут пользоваться другие пользователи, да еще и сделанное для решения максимально широкого круга задач — это нечто совершенно иное
Программисты из Wolfram-a и MathCad-a тоже так считают почему-то. Хотя конечно, их программы и не решают настолько широкий круг задач, как Ваша.

Ну а я так-то именно программированием на жизнь зарабатываю, если чё.
Программисты из Wolfram-a и MathCad-a тоже так считают почему-то.

То есть? Вы имеете в виду, что ваши программы используются в Mathematica? Очень хочу узнать, какие именно, просто сгораю от нетерпения!

Ну а я так-то именно программированием на жизнь зарабатываю, если чё.

Я тоже, хоть и не программами для решения диффуравнений, это для души. Но как пишутся настоящие программы, я примерно представляю
Я имею в виду, что профессиональные мат.пакеты тоже давно перешли на антиалиасинг при отрисовке графиков и искренне не пониманию Вашего его неприятия. Вроде бы совершенно очевидно должно быть, какой из этих двух графиков более наглядный:
Так а никто же и не спорит. Профессиональные пакеты создаются множеством высококвалифицированных программистов и стоят немалых денег. Но, тем не менее, вы для своих задач делаете своё приложение, и понятно, почему — оно помогает решать ваши узкоспециализированные задачи. Я пишу своё приложение в одиночку, и оно позволяет быстро набросать довольно сложные графики абсолютному непрофессионалу. Конечно, графики высокого качества лучше, чем графики среднего качества, но графики среднего качества несоизмеримо лучше, чем никакие графики. Вот пример поверхности, это катеноид, я набросал его примерно за пять минут, включая вращение и анимацию. Уравнения поверхности известны, сможете быстро построить что-то похожее? Можно пользоваться математическими пакетами, а можно вашим прекрасным приложением. Я могу засекать время?
Катеноид
image
Пожалуйста

Анимация, правда, доступна только в приложении — потому что 20 лет назад никакого интернета с хабром у меня не было для их публикации.
Ну, это же проволочная модель, анимация помогает её рассмотреть со всех сторон. И что значит
Анимация, правда, доступна только в приложении — потому что 20 лет назад никакого интернета у меня не было для их публикации.
? Вы хотите сказать, что картинка нарисована не только что?
Нет это значит, что программа была написана 20 лет назад, и от Дельфи как языка программирования я тоже отказался 20 лет назад, потому и дорабатывать её для расширения функциональности тоже не буду. А для построения графиков у меня сейчас есть официально купленная Mathematica, возможности которой намного шире за счёт специальных функций и автоматического нахождения пределов в неопределённых ситуациях типа sin(0)/0.
А так чего же вы в Mathematic'е и не построили? Там бы все получилось быстро и гладко, правда? И с анимацией
Потому что изначально разговор был о собственноручно написанных программах.
Интересно. А можно вас попросить убрать запятую (любую из) в присваивании
j:=0,2*pi,20;

Хотелось бы узнать, как ваша программа прореагирует.
Потом, я вижу, что вы используете только целочисленные аргументы. А вещественными пользоваться тоже можно?
Напишет, что ожидается запятая в строке 1 или 2. 20 — это количество разбиений плоскости, оно и должно быть целым. Но если будет дробное, то округлит.
Я не о количестве точек в сетке, это более или менее естественно, я об аргументах выражений для X, Y и Z. Интересуюсь, что будет, если понадобится налагать изображение одной поверхности на изображение другой — у них у всех область определения должна быть [0, бесконечность]? И cosh(20) как-то напрягает, с cosh(2000) тоже все будет нормально? Можете попробовать? Вот вам, как я понял, иногда нужно вычислять значения полинома Чебышева порядка миллион, как с этим будет в вашем приложении?
Cosh(2000) конечно же вызовет переполнение, потому что выходит за пределы double. Если вы имели в виду 2000 — разбиений —
то вот

Я не совсем понимаю, к чему эти вопросы. Если вы ищете слабые места — то конечно же они есть, я это всё писал студентом без опыта и знаний. Поддержки комплексных чисел тут тоже нет, они появились в другом приложении для задач обработки сигналов, и полиномы Чебышева там же используются для оконной функции, получаемой через обратное преобразование Фурье.
Cosh(2000) конечно же вызовет переполнение, потому что выходит за пределы double.
Ну, мне, как человеку, который писал нечто подобное, хоть и вызывающее у вас кучу нареканий, интересно, как ваша программа реагирует на переполнения.
Я не совсем понимаю, к чему эти вопросы.
Вопросы эти к тому, что ваша неумная безапелляционность, ваш менторский тон и ваши претензии на обладание истиной в последней инстанции вызывают немедленное желание очень подробно познакомиться с вашим программистским творчеством. В нём есть что-то полезное и интересное, но и мусор присутствует тоже, как, впрочем, у всех. Это можно спокойно обсуждать, а можно реагировать в вашей манере. Повторю, не я начал дискуссию в стиле «вы все дураки»
Неплохое приложение (я стараюсь быть объективным, без наездов в вашем стиле). Переполнения добиться мне не удалось. Правда, обнаружилось, что, даже находясь в полном покое, оно занимает 50% времени процессора, т.е. отъедает одно полное ядро. В целом, можно считать его условно полезным
Наоборот, я позиционирую себя как не-математик, и с математиками себя никак не ассоциирую


Ну, а это тогда зачем?
Вот тогда это будет математика по-взрослому — которая заодно и покажет, зачем придумали дуальные кватернионы.
Ну наверное затем, что программисты должны решать реальные задачи, а не цитировать авторов отдельно взятых дифференциальных уравнений. Кватернионы я в частности использовал для синтеза звука на поверхности сферы,
а именно

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

Как-то вы замысловато изъясняетесь, и не поймешь сразу, что имеется в виду. Что, решать дифференциальные уравнения, которые уже когда-то решили первооткрыватели (вроде вас?) — не имеет смысла? Ну, в образовательных целях — явно имеет смысл. Реальные задачи — нужны, а модельные — нет? Я уже упоминал о самой вашей интересной публикации — какой в ней практический смысл? Но она таки интересная!

Но это тоже довольно банально — интереснее, что там будет на более высоких размерностях
Новые размерности как добавлять будете — неужели прямо в код?
Как-то вы замысловато изъясняетесь, и не поймешь сразу, что имеется в виду.
Ну ок, давайте перефразирую. Дифференциальные уравнения — безусловно интересная тема а я в ней полный профан. Однако для инженера более важно уметь их составлять, а не решать, и уж тем более не зазубривать наизусть именованные решения — потому что в современном мире существуют системы компьютерной алгебры, которые справляются с этим намного лучше отдельно взятого человека. Равно как и с дифференцированием/интегрированием и упрощением, хотя для последнего, конечно, ручная доработка напильником всё ещё требуется.

Я уже упоминал о самой вашей интересной публикации — какой в ней практический смысл? Но она таки интересная!
Спасибо за лестный отзыв — но для меня на самом деле всё наоборот, она наиболее банальная из всех, и писать по этой причине было тяжело. Я взялся за неё только потому, что меня достало засилье статей о магическом тождестве Эйлера, а также полное непонимание у масс того, что с этими самыми комплексными числами можно делать. Даже признанный математиками Пафнутий Чебышев не смог свои полиномы и механизмы в комплексном виде описать — что уж там про простых смертных говорить. И практический смысл есть вполне — дизайн ценных бумаг или стилизации под них.

Новые размерности как добавлять будете — неужели прямо в код?
Ну а как иначе-то? Единственное, что я не стал бы октонионы и седенионы как отдельные классы писать — а сразу бы процедура Кэли-Диксона реализовал бы (ну или хотя бы попробовал).
Sign up to leave a comment.

Articles