реклама на сайте
подробности

 
 
> вычисление корня, быстрое вычисление приближённого корня
haki
сообщение Jun 30 2013, 19:24
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 19-11-12
Из: Екб
Пользователь №: 74 468



ATMega8515. Не имеет FPU. ИМС во многом минималистична. Но если ей необходимо вычислять периоды шага для шагового двигателя, встаёт вопрос быстрого вычисления корня для формул разгона и торможения. Собственно сам вопрос заключается в том, как быстро вычислять корни используя лишь сложение, вычитание и умножение. При этом желательно оставаться в области целых чисел эмулирующих псевдо натуральные с фиксированной точкой для простоты.
Примерная формуля выглядит следующим образом: N = x*sqrt(y). это сильно упрощённая формула для наглядности.


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Александр77
сообщение Jul 9 2013, 19:01
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 608
Регистрация: 10-07-09
Из: Дубна, Московская область
Пользователь №: 51 111



Если достаточно найти целую часть, то можно воспользоваться методом из википедии
Цитата
Арифметическое извлечение квадратного корня

Для квадратов чисел верны следующие равенства:
1 = 1^2
1 + 3 = 2^2
1 + 3 + 5 = 3^2
\sum^n_{k=1}{(2k-1)}=n^2
и так далее.

То есть, узнать целую часть квадратного корня числа можно, вычитая из него все нечётные числа по порядку, пока остаток не станет меньше следующего вычитаемого числа или равен нулю, и посчитав количество выполненных действий. Например, так:

9-1=8
8-3=5
5-5=0

Выполнено 3 действия, квадратный корень числа 9 равен 3.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th July 2025 - 21:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01372 секунд с 7
ELECTRONIX ©2004-2016