Форум » Программирование микроконтроллеров. » Теорема Пифагора » Ответить

Теорема Пифагора

Алексей: Столкнулся с вычислением гипотенузы прямоугольного треугольника... Т.е. с теоремой Пифагора. Вобщем ситуация такая: надо вычислить гипотенузу по всем известной формуле: квадратный корень из суммы квадратов катетов... Реализация в лоб получается очень не эффективной. Уверен есть более эффективные алгоритмы вычисления. Большой точности не требуется, все равно округляю до целых... Дело осложняется еще и тем, что оба катета двухбайтные... Основное время конечно уходит на вычисление корня. Вот я и подумал, если найти угол через арктангенс, а по нему вычислить гипотенузу, должно получится гораздо эффективнее... Но в этом случае имеется одна операция деления, которая не реализована аппаратно в 18 пиках(арктангенс естественно будет вычислен заранее, а по результату деления и вычислить), а следовательно ее нужно каким то образом заменить на умножение. Для этого нужно найти число, обратное делителю, но это опять деление... Кто чего может сказать по этому поводу? Или в инете есть какая инфа по этому поводу? Третий день ищу, ничего внятного по этому поводу найти не могу... На крайняк найти эффективный алгоритм вычисления корня. Есть алгоритм Ньютона, но тоже информации никакой, только исходники на С, и то не для контроллеров вообще... Нашел еще инфу об очень эффективном алгоритме вычисления корня с использованием магической константы, но найти что то кроме упоминания не получилось. Так что он пока для меня темный лес. Вобщем пока думаю, может у кого будут еще идеи?

Ответов - 8

Kimm: Алексей! Берёшь калькулятор и многоножковый ПИК! С нужных кнопок калькулятора выводишь проводки на ножки ПИКа(конечно с учётом напряжения калькулятора). Далее тебе нужно всего лишь внутри ПИКа сосчитать квадраты катетов, потом вывести результат в калькулятор, а из получившийся суммы , в калькуляторе, извлечь корень квадратный! По теории так :)!

Алексей: Прикольно... Преобразование Фурье считать на кулькуляторе, а кнопки тыкает пик...

Kimm: Алексей пишет: Преобразование Фурье считать на кулькуляторе, а кнопки тыкает пик... Но ты же просил: Алексей пишет: Столкнулся с вычислением гипотенузы прямоугольного треугольника... Т.е. с теоремой Пифагора. Что просил,то и получил :)!


MAZ: А что просил? Как рассчитать оптимальней СхС=АхА+ВхВ. Причем здесь калькулятор? Без деления, мне кажется, не обойтись.

Kimm: Я думал Алексею надо было быстро вычислять гипотенузу по теореме Пифагора! Вот и подумал, что калькулятор под управлением Пика справиться с этой задачей!

ОКТОГЕН: так на этом форуме есть схема калькулятора на PIC16F873 автор её Батов И. А. оттуда можно и вытащить ту часть программы по извлечению корня ;************************************************************************************* ; Вычисление квадратного корня ;-------------------------------------------------------------------------------------

magistr000: Алексей пишет: все равно округляю до целых... http://www.microchip.ru/phorum/read.php?f=2&i=40475&t=40130#reply_40475

Алексей: ОКТОГЕН пишет: так на этом форуме есть схема калькулятора на PIC16F873 автор её Батов И. А. Повторяю, извлекать корень это оооооччччччень долго, фурье быстрее делается, нужен быстрый алгоритм...



полная версия страницы