| Автор |
Съобщение |
|
Vilo
Ранг: Минаващ
Регистриран на: Пон Апр 03, 2006 9:00 am Мнения: 39
|
 Trigonometric functions
Triabva da subera smetka na arc sin v okolo 1kB ROM i 256B RAM.
Preciznost: min. 4 cifri sled zapetaiata v intervala +/- PI/2. Moje i da e skalirano v int.
MCU: 8051
Skorostta ne e ot znachenie.
Vsiakakvi idei i nasoki sa dobre doshli. Blagodaria predvaritelno. Google ne beshe osobeno slovoohotliv otnosno CORDIC  .
|
| Сря Апр 04, 2007 8:57 pm |
|
 |
|
evc
Ранг: Напреднал
Регистриран на: Пет Окт 21, 2005 8:45 am Мнения: 499
|
Каква дискретност ти трябва? За таблично представяне(стойностите на предварително изчислени арксинуси с някаква стъпка в таблица, а аргумента ти се явява офсет от началото на таблицата) мислил ли си? В 1к можеш да натъпчеш 512 стойности, т.е. дискретност от 0.35градуса или около 21минути.
_________________ Простотията е Божи дар, но човек не бива да парадира с подаръците си!
|
| Сря Апр 04, 2007 9:50 pm |
|
 |
|
Vilo
Ранг: Минаващ
Регистриран на: Пон Апр 03, 2006 9:00 am Мнения: 39
|
 discretnostta...
Triabva da e po dobra ot 0.05 gradusa. Tablicata e chastichno reshenie, neshto kato pomosht kum "niakakva" matematika.
|
| Сря Апр 04, 2007 10:03 pm |
|
 |
|
sv_shady
Ранг: Популярен
Регистриран на: Сря Окт 11, 2006 8:19 pm Мнения: 373 Местоположение: София/Edinburgh, UK
|
Охооо не си го и помисляй  Уча в СМГ и в часовете за подготовка на отбора по математика точно с това ни занимаваше господина извстно време. Общо взето, за да пресметнеш математическа стойността на една тригонометрична функция ти трябват доста ресурси (5-6 листа писане  ) и това, ако тръгнеш да го реализараш програмно не ми се мисли!!! То е векторна алгебра, после решаване на уравнение от сравнително висока степен и понеже трябва да го решиш трябва да ползваш формулите на Фераро и Кардан (съкратеният им вариант е един ред А4 на дълго  ) Виж, че ще се ползват формули хубаво само, че понеже участват доста корени и при закръглянето постепенно се натрупва сериозна грешка. Абе не си е работа... Не случайно има "ЧЕТИРИЗНАЧНИ ТАБЛИЦИ" 
|
| Сря Апр 04, 2007 10:31 pm |
|
 |
|
BrainStorm
Ранг: Почетен член
Регистриран на: Пон Юли 04, 2005 11:51 pm Мнения: 651 Местоположение: София
|
Е неми се вярва да е чак пък толкова сложно  щом един обикновен калкулатор ги смята с точност до 6 знак 
_________________ От наше село са види връо, ама от връо се невиди наше село ... що така и я незнам .. ?!?
|
| Сря Апр 04, 2007 10:45 pm |
|
 |
|
sv_shady
Ранг: Популярен
Регистриран на: Сря Окт 11, 2006 8:19 pm Мнения: 373 Местоположение: София/Edinburgh, UK
|
Мислиш ли че ги смята ??? И, ако смята едва ли е "обикновен" калкулатор 
|
| Сря Апр 04, 2007 10:47 pm |
|
 |
|
BrainStorm
Ранг: Почетен член
Регистриран на: Пон Юли 04, 2005 11:51 pm Мнения: 651 Местоположение: София
|
Еми смятаги немисе вярва да ги научква  ... и да обикновен е някъв турски боклук ... малиии езъх че съм приложна математика
http://links.jstor.org/sici?sici=0025-5 ... size=LARGE
_________________ От наше село са види връо, ама от връо се невиди наше село ... що така и я незнам .. ?!?
|
| Сря Апр 04, 2007 10:50 pm |
|
 |
|
sv_shady
Ранг: Популярен
Регистриран на: Сря Окт 11, 2006 8:19 pm Мнения: 373 Местоположение: София/Edinburgh, UK
|
Абе то, че не ги научква не ги  Ама ползва някакви таблици 1000%
|
| Сря Апр 04, 2007 11:14 pm |
|
 |
|
BrainStorm
Ранг: Почетен член
Регистриран на: Пон Юли 04, 2005 11:51 pm Мнения: 651 Местоположение: София
|
Ем сигурно  .. трябва да се разровя имам едни библиотеки за пресмятане на arc xxx за AVR ... да видя как става там ..
_________________ От наше село са види връо, ама от връо се невиди наше село ... що така и я незнам .. ?!?
|
| Сря Апр 04, 2007 11:17 pm |
|
 |
|
kasparov
Ранг: Почетен член
Регистриран на: Сря Апр 05, 2006 9:52 pm Мнения: 877 Местоположение: Разград
|
|
| Сря Апр 04, 2007 11:55 pm |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
По-добрите могат до 10-ия знак след запетаята
Става и без таблици разбира се. Нали затова сьществува т.н. Numerical analysis, MATLAB в таблици ли тьрси. Тази таблица е трябвало да бьде изчислена пьрвоначално.
Ключовата ти дума в гооглето е infinite series.
Сигурен ли си, че се изискват 0.05 градуса, градуса, в цялото ДМ? Това означава в двата края на диапазона резолюция от около 1Е-7. Hа кой му е притрябвало подобно нещо? Освен ако не конструираш калкулатор разбира се
Но както и да е, да кажем, че такова е заданието.
Още на прьв поглед се вижда, че в диапазона +/- pi/6 имаш почти линейна функция. Това което ти препорьчвам като решение е да разделиш ДМ на части и за всяка част да направиш по една апроксимация. Колкото повече области толкова по-добро бьрзодействие и толкова повече необходима програмна памет. Според ресурсите си и поставеното изискване за точност тьрсиш подходящото решение.
Ето пример за развит ред на Маклаурин, иначе казано Тайлор редица с точка на развитие 0.
http://upload.wikimedia.org/math/2/a/8/ ... 818504.png
При тези изисквания за точност и µC с който разполагаш ... може да отнеме малко време
Затова развиваш няколко такива реда в критичните области и дерзаеш. И тьй като не е малко работа, не е лоша идеята на BrainStorm да се огледаш как е решен проблема от умните глави.
|
| Чет Апр 05, 2007 12:00 am |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
avc с offset няма да стане толкова лесно, защото функцията не е линейна. Ако искаш константно отклонение от 0.35 градуса ще се наложи да разположиш точките през динамични интеревали. Иначе казано в двата края на диапазона точките ти ще са разположени най-нагьсто, а около нулата най-нарядко. А това си изисква един search алгоритьм, binary search с малка модификация за междинните стойности мисля, че би бил най-подходящ.
С offset сьщо може да стане, спестяваш си тьрсенето в масива, в такьв случай LUT-а ще сьдьржа решенията за стойности лежащи през константен интервал 3.9Е-1 една от друга, което означава, че около нулата отклонението ще е около 0.22 градуса, а в двата края на диапазона около 5 градуса, малко кофти иначе вярно, по-бьрзо е.
|
| Чет Апр 05, 2007 12:44 am |
|
 |
|
HCL
Ранг: Форумен бог
Регистриран на: Вто Дек 14, 2004 1:31 pm Мнения: 3849
|
И понеже ми стана интересно, хвьрлих едно око как в действителност е реализирано в MATLAB.
и като потьрсиш какви са ги творили от Sun стигаш до
Тук вече всякакви надежди за copy/paste са мьртви  . Но интересното е че в действителноcт използват метода, който споменах в началото. Апрокcимират функцията в отделни области.
И нещо което бяхме пропуснали, не е необходимо изчисляване или LUT за цялото ДМ, а само за едната половината 
|
| Чет Апр 05, 2007 1:22 am |
|
 |
|
ДедоБоре
Ранг: Форумен бог
Регистриран на: Нед Ное 21, 2004 11:31 pm Мнения: 10088
|
трябваше да му оставиш някаква надежда на човека 
|
| Чет Апр 05, 2007 8:41 am |
|
 |
|
evc
Ранг: Напреднал
Регистриран на: Пет Окт 21, 2005 8:45 am Мнения: 499
|
 |  |  |  | HCL написа: avc с offset няма да стане толкова лесно, защото функцията не е линейна. Ако искаш константно отклонение от 0.35 градуса ще се наложи да разположиш точките през динамични интеревали. Иначе казано в двата края на диапазона точките ти ще са разположени най-нагьсто, а около нулата най-нарядко. А това си изисква един search алгоритьм, binary search с малка модификация за междинните стойности мисля, че би бил най-подходящ. С offset сьщо може да стане, спестяваш си тьрсенето в масива, в такьв случай LUT-а ще сьдьржа решенията за стойности лежащи през константен интервал 3.9Е-1 една от друга, което означава, че около нулата отклонението ще е около 0.22 градуса, а в двата края на диапазона около 5 градуса, малко кофти иначе вярно, по-бьрзо е. |  |  |  |  |
XCL, никъде в моя пост не е спомената думичката "лесно"! И няма нужда от сърч алгоритми, ако знаеш какво правиш! И особено е добре да говориш от първо лице, написал съм 512 стойности като съм имал предвид 512 ЧЕТИРИ байтови стойности, което в действителност са 256 за да може да ги събере в 1к, но когато аргумента е с обратен знак се ползва горната част на таблицата!
_________________ Простотията е Божи дар, но човек не бива да парадира с подаръците си!
|
| Чет Апр 05, 2007 8:47 am |
|
|