Отговори на тема  [ 13 мнения ] 
Корени 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение Корени
Някой да е вадил корени с пик18?

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Вто Дек 14, 2004 3:23 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
За квадратен ли ти трябва или за кръгъл ? :lol:

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


Вто Дек 14, 2004 3:37 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Дек 01, 2004 12:44 am
Мнения: 2811
Местоположение: София
Мнение 
Прегледай някакъв учебник по числени методи, ще ти подскаже решенията.


Вто Дек 14, 2004 4:23 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Оправи ли се бе?
Аз съм го правил така: Започвам с числото 3, защото носи щастие. Това ми е резултатът от нулевата итерация. Деля числото на 3 и вземам за резултат от първата итерация средното аритметично на 3 и полученото часно. след това повтарям и т.н. Обикновено за 4 итерации се постига необходимата точност.


Вто Дек 14, 2004 8:00 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Сканирам за идеи просто, още не съм опрял до него. Търся си нещо готово, щото ме мързи да мисля. Квадратен корен ми требе, кръглите са много жилави и не мъ кефат с оцет.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Сря Дек 15, 2004 4:52 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
За квадратен това е най-бързото. Естествено, изисква да имаш и процедурата за делене. Помисли си в какъв интервал очакваш да са ти корените и вземи стойността на нулевата итерация според нея. Освен 3 и други числа носят щастие :D


Сря Дек 15, 2004 4:56 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
таблично не става ли, ако има повечко памет... :D


Сря Дек 15, 2004 5:57 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Реконструктор написа:
таблично не става ли, ако има повечко памет... :D


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


Сря Дек 15, 2004 6:08 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Ми те не поддържат ли външна памет? :)


Сря Дек 15, 2004 8:59 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Реконструктор написа:
Ми те не поддържат ли външна памет? :)


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


Сря Дек 15, 2004 10:50 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Айде, понеже съм добър, ще ви покажа какво открих :)
Функция за корен БЕЗ делене. :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;
}


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


Чет Дек 16, 2004 10:11 pm
Профил
Ранг: Минаващ
Ранг: Минаващ
Аватар

Регистриран на: Вто Ное 16, 2004 4:43 pm
Мнения: 85
Местоположение: София
Мнение 
Това решение е машинно зависимо. Пробвал ли си го на компилатор, за който size_t е два байта, а float е 4?


Пет Дек 17, 2004 10:58 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Е, все пак и малко мисъл трябва да се вложи. :) Може да се портне където искаш.


Пет Дек 17, 2004 11:07 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 13 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни