Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Корени
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=229
Страница 1 от 1

Автор:  Цецо [ Вто Дек 14, 2004 3:23 pm ]
Заглавие:  Корени

Някой да е вадил корени с пик18?

Автор:  bateAz [ Вто Дек 14, 2004 3:37 pm ]
Заглавие: 

За квадратен ли ти трябва или за кръгъл ? :lol:

Квадратен съм вадил с 8051, но и на нещо различно от процесор, напр. PIC, пак става. Ползвам метода на последователните приближения. За по-други корени не знам как да стане лесно. Картофите сурови са отровни :wink: .

Автор:  Lupus [ Вто Дек 14, 2004 4:23 pm ]
Заглавие: 

Прегледай някакъв учебник по числени методи, ще ти подскаже решенията.

Автор:  bateAz [ Вто Дек 14, 2004 8:00 pm ]
Заглавие: 

Оправи ли се бе?
Аз съм го правил така: Започвам с числото 3, защото носи щастие. Това ми е резултатът от нулевата итерация. Деля числото на 3 и вземам за резултат от първата итерация средното аритметично на 3 и полученото часно. след това повтарям и т.н. Обикновено за 4 итерации се постига необходимата точност.

Автор:  Цецо [ Сря Дек 15, 2004 4:52 pm ]
Заглавие: 

Сканирам за идеи просто, още не съм опрял до него. Търся си нещо готово, щото ме мързи да мисля. Квадратен корен ми требе, кръглите са много жилави и не мъ кефат с оцет.

Автор:  bateAz [ Сря Дек 15, 2004 4:56 pm ]
Заглавие: 

За квадратен това е най-бързото. Естествено, изисква да имаш и процедурата за делене. Помисли си в какъв интервал очакваш да са ти корените и вземи стойността на нулевата итерация според нея. Освен 3 и други числа носят щастие :D

Автор:  Реконструктор [ Сря Дек 15, 2004 5:57 pm ]
Заглавие: 

таблично не става ли, ако има повечко памет... :D

Автор:  bateAz [ Сря Дек 15, 2004 6:08 pm ]
Заглавие: 

Реконструктор написа:
таблично не става ли, ако има повечко памет... :D


Бе ти не четеш ли, бе?! Той иска да го прави на PIC !

Автор:  Реконструктор [ Сря Дек 15, 2004 8:59 pm ]
Заглавие: 

Ми те не поддържат ли външна памет? :)

Автор:  bateAz [ Сря Дек 15, 2004 10:50 pm ]
Заглавие: 

Реконструктор написа:
Ми те не поддържат ли външна памет? :)


Tой вътрешната си памет едва поддържа, ти за външна питаш. Знаеш ли как представя константите тази чудесия? Разгледай дизасемблиран някой софт и ще се хванеш за главата (горната) . Муа литерали, та се кине. :-$

Автор:  Реконструктор [ Чет Дек 16, 2004 10:11 pm ]
Заглавие: 

Айде, понеже съм добър, ще ви покажа какво открих :)
Функция за корен БЕЗ делене. :D

Код:
#define FLT_MASK   0xBE6F0000
#define DBL_MASK   0xBFCD4600

union FTOS
{
   FTOS( const float X )
      : f( X )
   {
i = ( FLT_MASK - i ) >> 1;   
   }
   float  f;
   size_t i;
};

inline float fast_sqrt( const float X )
{
   float f1, f2;
   FTOS Tmp = X;

   f1 = Tmp.f;
   f2 = X * 0.5f;

   f1 *= 1.5f - f1 * f1 * f2; /* Dup this line to increase precision. */
   f1 *= 1.5f - f1 * f1 * f2;
   
   return f1 * X;
}


Много е бърза, точността може да се контролира чрез копиране на коментирания ред. :)

Автор:  danov [ Пет Дек 17, 2004 10:58 am ]
Заглавие: 

Това решение е машинно зависимо. Пробвал ли си го на компилатор, за който size_t е два байта, а float е 4?

Автор:  Реконструктор [ Пет Дек 17, 2004 11:07 am ]
Заглавие: 

Е, все пак и малко мисъл трябва да се вложи. :) Може да се портне където искаш.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/