| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Математическа формула вместо алгоритъм http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=19274 |
Страница 1 от 1 |
| Автор: | slav4o.com [ Сря Сеп 18, 2024 4:52 pm ] |
| Заглавие: | Математическа формула вместо алгоритъм |
Днес правихме едни измервания с колегата, нанесохме едни данни във Excel. Направихме и графика - линейна зависимост. Накрая накара Excel-а да генерира някакъв полином да проверял дали зависимостта е линейна... Стана ми много любопитно това. Той каза, че може да се опише произволна крива със полином (разбира се доста сложен). Сега разпитвам, chat-GPTто новото o1-preview и то казва същото. Даже можело да се опише някакъв алгоритъм със математическа формула. Това изглежда невероятно, формулата изглежда някак си статична, докато един алгоритъм има някаква последователност на действията. |
|
| Автор: | ToHu [ Сря Сеп 18, 2024 9:02 pm ] |
| Заглавие: | Re: Математическа формула вместо алгоритъм |
Ами в общи линии е точно така. Въпросът е какво от това |
|
| Автор: | Bai Ui [ Чет Сеп 19, 2024 8:30 am ] |
| Заглавие: | Re: Математическа формула вместо алгоритъм |
По принцип най-ефективният метод е референтна таблица - не съм сигурен за термина, на английски е LUT - look-up table. На компютъра си използваш формулата да си генерираш една база данни от стойности, които по-късно процесора ползва за да конвертира измерената величина. Пример - за да се линеаризира измерената температура посредством термистор (платина 100) се използва полинома на Callendar–Van Dusen, който е доста сложен и отнема много процесорно време за изчисление. Вместо това стойностите могат да се извлекат на компютър и да се запишат на флаш/ром памет за директно преобразуване като за адрес на паметта се използва измереното съпротвление a на съответната клетка от паметта е записана съответстващата на измереното съпротивлението температура. |
|
| Автор: | VPavlov [ Чет Сеп 19, 2024 11:01 am ] |
| Заглавие: | Re: Математическа формула вместо алгоритъм |
Мисля си че формулата също е алгоритъм, тъй като и тя се изпълнява в поредица от инструкции. Така че в крайна сметка нещата опират до това кой метод е най-бърз. |
|
| Автор: | ToHu [ Чет Сеп 19, 2024 3:03 pm ] | |||||||||
| Заглавие: | Re: Математическа формула вместо алгоритъм | |||||||||
Ами той въпроса май имаше малко по друг характер, иначе то всичко което изпълня яш като код е някакъв алгоритъм. Сметките винаги отнемат време, в някои случаи може и да смяташ, ако имаш достатъчно ресурс |
||||||||||
| Автор: | miro_atc [ Чет Сеп 19, 2024 4:52 pm ] |
| Заглавие: | Re: Математическа формула вместо алгоритъм |
Алгоритъмът представлява набор от инструкции как да извършваш изчисления. Малко история - механични "компютри" има на хиляди години, но терминът навлиза в началото на миналия век, когато се наемат предимно жени-компютри, които да смятат разни неща по зададени инструкции. Цялата наука информатика се базира именно на тоя тип "компютри". За по-научному, всъщност жените се заместват с абстрактни машини (машините на Тюринг), но концепцията е същата. Примерен алгоритъм - да се намерят първите 100 прости числа. Предполагам всеки може да измисли такъв, тръгваш от числото 1 проверяваш дали е просто, ако не пробваш следващото... и т.н. докато станат 100. Още един пример - да се намери най-голямото просто число... Очевадно първия пример е елементарен и очевадно вторият е капан. Проблемът, който е тровел колегите програмисти от миналия век е, че реалните задачи пред тях не са били толкова очевидни. Демек може женичките да тръгнат да смятат и да смятат и никога да не стигнат до резултат. Днес на това му викаме да ти зацикли програмата. Но едно време на "компютрите" са работили бавно и е било малко кофти няколко месеца да нямаш резултат. Та затова са се замислили над темата дали може да се провери даден алгоритъм дали зацикля или не. Идеалното решение би било алгоритъм по който да се проверява друг алгоритъм. Уви, другарят Тюринг доказва че тая работа няма как да стане. И даже и днес няма как да проверим дали една програма ще зацикли или не. Та така... алгоритмите се разделят на два вида - такива които приключват и дават резултат и такива, които изпадат в безкраен замисъл. От там пък имаме два вида задачи - такива, които могат да се решат с алгоритъм, който не зацикля. И такива, които не могат. Първите се наричат "изчислими", а другите не. Сега на въпроса дали може да се опише алгоритъм с някаква формула... В буквалния смисъл не може, защото алгоритъмът е последователност от изчисления. В математиката, последователността не само не се описва, в много случаи тя е без значение. Примерно 5*a + 7*b няма значение кое умножение ще извършим първо. Освен това при алгоритмите "изчисление" е доста широко понятие, по-скоро "операция" някаква. В по-широк смисъл, обаче, една формула може да описва резултат от алгоритъм. Особено ако алгоритъмът е за пресмятане на същата формула Нещо повече, формулата може да описва безброй изчисления и това е малко по-полезно, отколкото алгоритъм с безкраен цикъл. Що се отнася до интерполация... Ми за Ν на брой точки винаги може да се напише полином от Ν-та степен, поне по мои спомени. Затова според мен няма нищо удивително. Но някой по-добър в математиката може и да се удиви (на спомените ми |
|
| Автор: | Реконструктор [ Чет Сеп 19, 2024 5:05 pm ] | |||||||||
| Заглавие: | Re: Математическа формула вместо алгоритъм | |||||||||
Всичко опира до ресурсите с които разполагаш. Ако ти трябва много голяма точност, таблицата съответно също става голяма и заема много памет. Ако нямаш памет, но имаш проц (в днешно време е напълно възможно, с тия 100+ MHz микроконтролерчета) може да е по-добре да си го смяташ. |
||||||||||
| Автор: | Bai Ui [ Чет Сеп 19, 2024 5:55 pm ] | |||||||||
| Заглавие: | Re: Математическа формула вместо алгоритъм | |||||||||
За по-висока резолюция интерполираш между стойностите, което отнема много по-малко изчислителна мощ от смятане на полиноми от 3-та, 4-та степен. Ако процесора прави само това - да, по-добре е да смята, ако върши други неща ще се бави много. Напоследък работя основно с FPGA, там изчисленията хабят много ценен ресурс, има такива с DSP слоеве които са ОК за умножения и деления но не и за по-сложни изчисление, особенно с плаваща запетая, имах случай навремето, трябваше да правя прецизно позициониране на BLDC двигател, има един алгоритъм за това - Cordic, сорса дори беше публикуван в списанието на Xilinx - Xcell (вече не съществува), но когато програмирах FPGA-то (Spartan-6) ми се запълниха 60% от ресурсите. Направих го с референтна таблица за което се наложи да добавя малък ЕЕPROM за някакви стотинки. |
||||||||||
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|