@johan
Нормальные калькуляторы умеют перегруппировывать операции для получения точного значения
@darkcat09 Сомневаюсь в «перегруппировке», скорее, длина слова всё-таки влияет.
@johan @darkcat09 нормально считает: 10^100+1-10^100
= 1
тот же KDE Calculator, который дефолтный в кедах.
@grumb @darkcat09 10100 не вмещаются во float, в этом суть проблемы, для калькуляторов нужен какой-то свой, не нативный тип. Но если поргомисту лень... Получается 0.
сперва хотелось написать: «тебя в детстве часто роняли? :)», потом вспомнил, что у тебя в профиле написано :)
float относится к 32-х разрядным и старым системам. давно есть double.
да никто не использует для расчётов float & double, любой инженерный софт стоится вокруг отказа от IEEE 754.
всё для чего годится IEEE 754 — эти ваши float & double — это лишь для хранения или представления результата арифметических операций над целыми числами.
любая попытка использовать в вычисления числа хранящиеся в IEEE 754 — это преступление ведущие к катастрофам, т.е. авариям с человеческими жертвами.
@johan
Нагкодить в калькуляторе не так уж сложно :)
А готовых библиотек для больших чисел полно, и как бы очевидно, что для графического калькулятора нет смысла применять нативные f32 и f64 — юзеру не нужна такая производительность, чтоб всё за один такт цпу, а большие числа посчитать как раз не получится.
Упрощать выражения некоторые крутые библиотеки умеют.
@grumb
@grumb @darkcat09 Да, я описа́лся, давно, видите ли, сударь, не погромировал :-( 64 бита «на всё», в общем. Но таки мне подсказывают, что в IEEE 754 описаны числа расширенной точности, с ними должно прокатить. Так в пользу чего же «отказываются»?
видел в биткоине такую единицу как сатоши? или в эффериуме аналог её? вот так и считают. полно библиотек для big number, которые этот вопрос решают.
никакой CAD/CAE/CAM никогда не использует IEEE 754 для расчётов. никакие системы управления транспортными средствами, электродвигателями или производственными процессами тоже никогда не используют IEEE 754.
всё для чего годится float & double — это предоставить переменную для отображения числа в логах, отчётах или на экран вывести.
@darkcat09 @grumb Посмотри еще раз у меня на 2 и 3 скрине, там можно выбирать разрядность. 128 бит мало, 576 уже хватило. Но можно 1152 заебенить.
никакие системы управления транспортными средствами, электродвигателями или производственными процессами тоже никогда не используют IEEE 754
Точно? Там же всратые микроконтроллеры и экономия каждого байтика? Или прошли те лихие времена?
@johan @darkcat09 а с чего ты решил, что микроконтроллеры имеют вычислительные блоки для операций над числами с плавающей точкой?
floating point unit (FPU) встречается у микроконтроллеров не часто. именно по той причине, что они важны лишь для представления чисел или данных людям, а не вычислений и управления.
грубо говоря, это трёхмерная графика нуждается в большом количестве вычислений с float типом. считая разные шейдеры вокруг полигонов.
при этом, хорошо известен такой факт, что важно где считать — на процессоре или же через расширенный набор инструкций, уходящих на сопроцессор (FPU).
Инструкции x87 совместимы со стандартом IEEE-754. Однако, x87 выполняют операции не в строгом соответствии с форматами IEEE-754, из-за использования более широких регистров. Поэтому последовательность арифметических операций может выполняться несколько по-разному на наборе x87 и на процессоре, строго следующем формату IEEE-754.
@oxpa, Не удивительно. Под моим постом в слоновнике сейчас идет хеллтред (который сюда, почему-то не транслируется), там вроде пришли к выводу, что хорошие погромисты для точных расчетов используют либо типы расширенной точности, либо специальные библиотеки для «научных» расчетов. А криворукие — обычный double (в который 10^100 тупо не вмещается). Посмотри на втором и третьем скрине (они по ссылкам) — там 128 бит не хватает, выходит 0, 572 бита уже дают единицу.
@kitteh, Бля, твой буст создал новый тред "у себя", мастодон очевидно не шлет в жуйк к нему комменты
@kitteh, Комменты не присылаются на урл, они присылаются в инбокс жуйка
Они не присылаются, потому что ты порвал тред и начал новый у себя, своим бустом, блять
@vt, Ты не врубейшн. Я ничего не бустил (это вообще не важно), я дал ссылку на свой комментарий по его URL в Мастодоне. Поэтому тред идет там. То-то я не понимал, почему вроде отвечать можно, но дерево не строится. Получается, что если я даже из слоновника веду с жуйкоюзером диалог — я отвечаю всегда на /1 🤪
@kitteh, Ну не буст, так ссылка на урл на своем сервере, если бы ты дал ссылку на жуйк, то сюда бы и слались комменты, а так твой сервер решил что это новый тред и не шлет сюда ничего
@vt, Вот. В том-то и суть, что а) так делать не нужно; б) я технически не могу «дать ссылку на жуйк». Ща. @johan@cr8r.gg, подь сюды!
@kitteh Вот у меня сейчас URL этого камента — juick.com/m/3070054#18
У себя я вижу тред полностью, и наш, как говорится, и ваш.
@johan @darkcat09 Вообще, для управления моторами используется такая математика, что и МатЛаб не всегда решает.
Полно систем уравнений, достаточно высокого порядка, решаемых в реальном времени. Как из сферы переходных процессов — четырёхмерного пространства, так и с теории автоматического регулирования.
Поищи про электропривод на микроконтроллерах, только не путай с ПЛИСами.
@johan @darkcat09 там используется поиск решений уравнений в численном виде различными методами. всякие синусы и косисусы обычно не считаются, а берутся примерные значения по таблицам, как и логарифмы. но в остальном предвычисления помогают слабо.
@johan @darkcat09 А тут про два подхода к управлению теми же асинхронниками https://electricalschool.info/elprivod/1975-skaljarnoe-i-vektornoe-upravlenie.html
Чем большее сопротивление вращению преодолевает вал двигателя (из-за механической нагрузки), тем активнее система управления сопротивляется перегреву в обмотках и смене угловой скорости вращения вала.
скорость вращения ротора всегда немного меньше скорости вращения магнитного поля (которая определяется частотой переменного тока, питающего двигатель).
Отставание ротора от вращающегося магнитного поля статора (скольжение ротора) тем больше, чем больше нагрузка двигателя. Отсутствие синхронизма между вращением ротора и магнитного поля статора — характерная черта асинхронного двигателя, от которой и происходит его название.
Вращающееся магнитное поле в статоре создается с помощью обмоток, питаемых токами, сдвинутыми по фазе.
С целью регулировки угловой скорости вращения ротора, а также крутящего момента на валу современных бесщеточных двигателей, применяют либо векторное, либо скалярное управление электроприводом.
@grumb @darkcat09 Ну а тут тем более — под такое описание подходит тупо вентилятор кулера с регулировкой оборотов.
@johan @darkcat09 С каких пор вентиляторы куллеров стали делать на асинхронных двигателях? И зачем ему микроконтроллер для управления оборотами и крутящим моментом? :)
читай по приведённой ссылке:
Сегодня подход к данному методу несколько иной: математическая модель двигателя позволяет рассчитывать скорость вращения ротора и момент на валу в зависимости от текущих токов фаз (от частоты и величин токов в обмотках статора).
Этот более прогрессивный подход предоставляет возможность независимо и почти безынерционно регулировать как момент на валу, так и скорость вращения вала под нагрузкой, ибо в процессе управления учитываются еще и фазы токов.
Некоторые более точные системы векторного управления оснащены схемами обратной связи по скорости, при этом системы управления без датчиков скорости именуются бездатчиковыми.
Так, в зависимости от области применения того или иного электропривода, его система векторного управления будет иметь свои особенности, свою степень точности регулировки.
Когда требования к точности регулировки скорости допускают отклонение до 1,5%, а диапазон регулировки — не превышает 1 к 100, то бездатчиковая система вполне подойдет. Если же требуется точность регулировки скорости с отклонением не более 0,2%, а диапазон сводится до 1 к 10000, то необходимо наличие обратной связи по датчику скорости на валу. Наличие датчика скорости в системах векторного управления позволяет точно регулировать момент даже при низких частотах до 1 Гц.
@grumb @darkcat09 Ну, так-то он к синхронным относится, но когда начинает наебываеться подшипник — фактически превращается в асинхронный 😆
@johan @darkcat09 в тех вентиляторах, что используются в десктопах или ноутбуках нет подшипников — там магнитный подвес, на многих даже написано что маглев или что-то такое. формально именуют подшипниками скольжения, но без магнитного подвеса такой не смог бы работать так долго, со всеми этими постоянными раскручивания и остановками крыльчатки.
@johan @darkcat09 над «прошивками» микроконтроллеров управляющих двигателям приходится работать серьёзными коллективами. во вполне серьёзных IDE и с использованием языков типа Си и С++.
чтобы научить микроконтроллер управлять всего лишь несколькими моделями двигателей требуется команда из нескольких человек разработчиков-программистов. по совместительству являющихся при этом ещё и инженерами по электротехнике.
@grumb @darkcat09 Чет у меня уже как у GPT, контекст теряться начал 😞
В итоге-то что? Там с безумной точностью рассчитываются «единственно верные параметры» или приблизительно, но с постоянной поправкой?
@johan @darkcat09 если бы в таких контроллерах, используемых в электроприводе, был бы полезен блок FPU, то он непременно был бы обязательной составляющей. для вычисления корней в системах уравнений через IEEE-754. но таких лёгких путей не бывает.
@grumb @darkcat09
Внимание, вопрос: почему, когда подшипник разъебан, никакое «равномерное притяжение» его уже не спасае?
@grumb @darkcat09
Хм. FPU нам в первую очередь зачем? Затем, чтобы точность задавалась разрядностью мантиссы, а, хз, как сказать-то, величина — позицией точки.
Т.е. π у нас 3,14159265358979324
Если мы на высокой тактовой частоте будем выдавать его как целочисленное 3 и периодически на чуть-чуть как 4 — это же двигатель, в принципе тоже устроит? Я вот об этом. ШИМ вон вообще двумя битами обходится, и всем норм.
математическая модель двигателя позволяет рассчитывать скорость вращения ротора и момент на валу в зависимости от текущих токов фаз (от частоты и величин токов в обмотках статора).
Модель — это система уравнений. В которую подаёшь снятые показания в качестве коэффициентов. После чего ищешь решение уравнений.
Ищутся целочисленные решения дифференциальных уравнений высших порядков — производные шестого и восьмого порядка являются обычным явлением, а местами и до двенадцатого.
И не все из этих уравнений имеют алгебраическое решение, в которое можно было бы просто подставить коэффициенты. Некоторые из уравнений решаются сугубо численными методами.
Теперь ясно где там и зачем там нужна точность вычислений до определённого знака? Или упорно полагаешь, что речь идёт лишь о точности значений напряжения, силы тока или сдвига фазы?
@grumb @darkcat09
(откройте форточку) прецизионная (можете закрыть форточку).
обрати внимание, сколько обмоток и какой у них вариант управления — ШИМ сигнал идёт на вентилятор, т.н. ШИМ регулятор используется. т.е. там нет равномерного магнитного поля, а несколько полюсов с зазорами.
4 (вроде бы). Вопрос: нахуя козе баян там ШИМ? Это бесколлекторный мотор, ему не нужна регулировка нарпряжения, ему нужно вращающееся магнитное поле.
крыльчатка при набирании оборотов не может выйти в стабильный режим вращения
Обычно таки даже стартует нормально, но в процессе уже идет вразнос. Либо, наоборот, застревает в каком-то говне. Если «нет контакта» — то в чём застревает вал?
ты реально не догоняешь или тупо троллишь меня?
Sleeve bearing — это подшипник скольжения. Если бы там был полноценный магнитный подвес, думаешь, китайцы бы этим не похвалились большими красными буквами?..
@johan @darkcat09 слушай, гуманитарий, ты хоть 200 нейронок вокруг себя положи, но мозги то самому включать придётся.
«pwm_fan» — это что по-твоему? все разъёмы для вентиляторов на материнских платах, это PWM, т.е. от ШИМ-регуляторов.
и сходи погляди, что такое ШИМ-регулирование электродвигателем, что оно никак не касается вопроса управления напряжением :)
Теперь ясно где там и зачем там нужна точность вычислений до определённого знака? Или упорно полагаешь, что речь идёт лишь о точности значений напряжения, силы тока или сдвига фазы?
Да я глубоко хз 😑 Я ж этим не занимался. А что, нельзя тупо захардкодить всё в многомерный массив и забирать нужное значение исходя из показаний датчиков?..
🤔 🤔 🤔
@johan @darkcat09 размеры таблиц какие получатся?
чтобы ходить по таким таблицам надо иметь большой объём кеша. а делается такая память лишь на SRAM-ячейках. потому кешей таких объёмов нет даже на серверных ЦПУ.
это шеститранзисторная ячейка, конструктивно это далеко не тоже самое, что ячейки в DRAM-памяти.
что можно пихается в максимально быструю память контроллера, а остальное считается на регистрах, за счёт фрейма (регистрового файла).
всё что ты знаешь о быстродействии работы с DRAM-памятью это про то, что у процессора есть префетчер. который загружает в SRAM ячейки кеша целую строку данных размером в 128 байт, каждый раз, когда происходит обращение хотя бы к одному байту.
и компиляторы с программистами пишут свои программы так, чтобы префетчер пореже ошибался. пытаясь предсказать к каким адресам памяти программа в скором времени обратится.
и переменные используемые коде программы размешаются в памяти так, чтобы были на расстоянии меньше размера той самой cache line.
потому что DRAM-память очень медленная, общение с её контроллером жрёт огромное количество времени. и считывать данные с DRAM-памяти можно лишь такими вот строками.
P.S. есть публикация от одного из ментейнеров Red Hat — What every programmer should know about memory, Ulrich Drepper. и её перевод на русский https://rus-linux.net/lib.php?name=/MyLDP/hard/memory/memory.html о том как работает кеш-память в процессорах, как это всё обращается к памяти оперативной и что из себя эти процессы представляют.
@grumb @darkcat09
Там по ходу куча вариантов. И напряжение, и ШИМ, плюс управляющий сигнал с матери да еще тахометр впридачу.
Я видел пропеллер с регулировкой оборотов вообще по 2 проводам (в БП).
Ебанешься.
@grumb @darkcat09 Да, про кэш не так давно читал, еще не всё выветрилось, слава зайцам ;-)
Размеры таблиц зависят от разрешения, но херовое разрешение же мы можем корректировать с высокой частотой? Учитывая, что движок — это такая инерционная дура.
Но если совсем низя — то сорян, я просто типа интересуюсь 😊
Такой пример просто приведу. Вот есть картинка. На нее нагорожено 100500 корректирующих фильтров. Ладно, для картинки при ее изменении фотошоп пошуршит и каждый пиксель пересчитает. А если это видео? Поэтому берут и строят LUT — таблицу, в которой с определенным разрешением записано, какой цвет в итоге преобразуется в какой, для всех возможных 16 миллионов цветов (с шагом, остальное интерполируется). И каждый кадр уже обсчитывается простой выборкой нужного значения, а не вся эта плавающая математика. Собсно, и в видеокарте такая же херь используется, чтобы, например, яркость в игре менять. Замечал когда-нибудь, если игра вылетела — яркость монитора уходит к херам. Но там 3 координаты всего.
@johan @darkcat09 ну посчитай двоичный логарифм от 16 миллионов. сколько бит получил? теперь умножай это на количество значений, что должны реально храниться в таблице — это «мощность множества» или размер палитры. какой размер в байтах у таблицы получил? в байте восемь бит.
движок не является инертным, у движка постоянно меняется крутящий момент на валу. очень быстро меняется, хоть тысячи раз в секунду. никак к инерции не привязан.
далее, это система с переходными процессами. сейчас у тебя изменился крутящий момент на валу, а обороты — угловая скорость вращения вала — изменятся из-за этого через некоторое время. как раз тогда, когда на валу будет уже другая нагрузка и тебе это в тот момент будет нахер не нужно. переходные процессы происходят не моментально и не в силу большой массы (инерции), а потому что идут по затухащей или по нарастающей. реагируя на управляющие воздействия далеко не моментально.
предсказать все возможные варианты смены состояний не реально. это очень большой автомат конечных состояний. и последовательности перехода (смены состояний) может быть огромное количество разных. а управляющие воздействия надо подавать исходя из комбинации нескольких последних состояний перемноженных на показания измеряемых характеристик (показаний датчиков).
считаем размер многомерной таблицы.
если число учитываемых состояний в прошлом порядка семи, всего возможное количество состояний пятьдесят. то получилось что? 50^7 × на показания нескольких датчиков (каждый из которых это отдельная ось).
@grumb @darkcat09
Ну, т.е. если кратко — то одни и те же показания датчиков «в моменте» могут быть при бесконечном количестве реальных состояний, и нужно учитывать предыдущие показания, т.е. это моделирование процесса.
@johan Как сильно тебя удивит, что именно это самое моделирование процессов и выполняет математическая модель, но без хранения многомерных таблиц в дорогой и горячей по тепловыделению SRAM памяти?
Математическая модель, это такая вещь, у которой может быть состояние и скармливая которой текущие показания можно оперировать знанием о протекании процесса :) Т.е. заглядывать в прошлое и предсказывать изменение определённых характеристик в будущем :)
@darkcat09 думали ты сообразишь, что можно отключиться от конкретной ветки — нажав на кнопочку:
@grumb Собсно, это я и имел в виду, так что не удивит.
Осталось вспомнить, о чём шла речь.
никакой CAD/CAE/CAM никогда не использует IEEE 754 для расчётов. никакие системы управления транспортными средствами, электродвигателями или производственными процессами тоже никогда не используют IEEE 754.
Соответственно, делаем вывод: поскольку в математической модели могут вылезти запредельные значения величин, требуется охуительная точность, которая в double не влазит, что наглядно показывает вторая картинка из этого треда. Поэтому нужно использовать типы с большей разрядностью, тогда всё будет чики-поки, что и показывает третья картинка из этого треда.
🙃
@darkcat09 Да, одна из мастодонопроблем: нельзя ни подписаться на тред, ни отписаться. Только упоминания. В Миске с этим гораздо проще.
@grumb
Да ёбушки-воробушки...
Т.е. мы берем QWord или даже DWord и делаем вид, что запятая у нас фиксированная? Т.е. для процессора все операции родные и быстрые. В чём тогда назначение библиотек? Это рассчет нужных формул не как оно предусмотрено в стандартных библиотеках языка (подразумевая FPU), а с фиксированной запятой / с целочисленными типами?
@johan про SIMD инструкции слышать доводилось? Это которые SSE в прошлом, а ныне AVX. Векторная обработка, примерно так же как умножения или деления в столбик — т.е. работа с разрядами числа. А в нашем случае операции над отдельными байтами. Выполняемые одновременно, чтобы быстренько выполнить арифметическую операцию над всем числом, закодированном несколькими байтами.
@grumb Агабля. А мне теперь до полночи гуглить виды управления трех/четырехконтактными вентиляторами, потому что по ходу на форумах никто нихуя не знает, как они работают и что с чем совместимо 😠 А вопрос этот давно интересовал (но не так чтобы слишком).
@johan зато поймёшь зачем на самом деле нужны нейронные сети — как система принятия решений или поиска в тех прикладных областях, по которым не знакома даже терминологическая база.
Т.е. не знаешь терминов и понятий, а потому не можешь даже найти желаемое. Т.к. не знаешь что и как называется. А найдя не поймешь не зная терминологию.
@grumb В этом плане однозначно лучше любого кожаного, это да. Безэмоциональная железка, набитая опытом всего человечества...