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

asin(x) Tейлъров ред - що не ще към 1?
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=10814
Страница 1 от 1

Автор:  tgi [ Пон Ное 19, 2012 4:21 pm ]
Заглавие:  asin(x) Tейлъров ред - що не ще към 1?

Тия дни попълвах библиотеките си да имам FP dual precision поддръжка и по скриптове
и т.н.
Направих неща дето не бях правил и си работят добре. Обаче asin(x) не ще като
света. До 60 градуса е ОК, грешката е някъде в най-долните 1-2 бита. Обаче
asin(1) ми казва, че било 1.5247.. (радиана, или към 87 градуса) 8O .

Реда го намерих наготово, ще се озоря ако трябва аз да го мисля (не само беше отдавна
ами и баш тоя урок не ми беше силната част и на времето :D ).
Ей оттук го взех (и го намерих същото поне на още едно място):

http://planetmath.org/TaylorSeriesOfArcusSine.html

Прикачени файлове:
asin.gif
asin.gif [ 5.19 KiB | Прегледано 1668 пъти ]


Нещо не схващам как мога да го изпрограмирам да върви вярно от 0 до 60 а нагоре не (не знам
откъде нагоре, проверявах го на 0, 30, 60 и 90 градуса). Още го гледам и му се чудя де, ако
някой знае нещо повече по въпроса...

Edit: Оправих си typo-то в заглавието

Автор:  БатеВаньо [ Пон Ное 19, 2012 7:20 pm ]
Заглавие:  Re: asin(x) Tейлъров ред - що не ще към 1?

И аз не бих казал, че съм специалист в тази област, но изглежда че този ред е с лоша сходимост. Т.е. трябва да вземеш доста голям брой членове за наистина точен резултат.
Тук http://mathforum.org/library/drmath/view/54137.html се дискутира алтернативна формула за пресмятане. Дано да е по-точна.

Автор:  woody [ Пон Ное 19, 2012 7:26 pm ]
Заглавие:  Re: asin(x) Tейлъров ред - що не ще към 1?

Метни едно око на тази 'C' имплементация за 64-битов FP:

http://sourceware.org/git/?p=glibc.git; ... 1d;hb=HEAD

Автор:  tgi [ Пон Ное 19, 2012 7:33 pm ]
Заглавие:  Re: asin(x) Tейлъров ред - що не ще към 1?

Сега почвам да ги чета.

Броят членове не може да даде повече, карам до максималния смислен (докато се вижда
промяна в 64-бита FP число, ограничението е на 1024 а дори тая трагедия с аркус синуса
свършва на 100 ли 150 някъде ли цикъла беше). Странното е, че сходимостта е съвсем добра
до към пи/3 (дето е синус от толкова де, демек asin(0.866...))и нататък се влошава драматично.

[edit] Сходимостта в предното изречение не е лоша, само бавна - но се стига до нулева
промяна на резултата отнякъде натам. Точността след 60 градуса деградира, за да стигне
до 0.97 вместо 1 при 90 градуса (а на 60 градуса е едно LSB някъде, т.е. поне 51 бита
са верни (12 експонент и един знак + една подразбрана 1-ца)). Оправям го да не подведа
след години някого попаднал на това писание :D [/edit]

Накрая ще смятам само до 45 градуса и ще обръщам след това, едно коренуване вповече
ще има ама като не става инак какво да правя. Все пак първо да прегледам линковете да видя
другите как го правят.

Автор:  tgi [ Пон Ное 19, 2012 8:09 pm ]
Заглавие:  Re: asin(x) Tейлъров ред - що не ще към 1?

Направих го с единия корен вповече. Като е > (sin(pi/4)) смята asin(sqrt(1-x^2)) а резултата
накрая го обръща като го вади от пи/2 . Оставям го така, за сметка в рамките на скрипт и то
на сравнително рядка функция е добре докато някой/нещо не изпищи в тая връзка.
Ако разните логаритми и степенни функции или самите синуси и т.н. не искаха щях да им
се поизпотя повече ама това го оставям така докато не порябва иначе :D .

Автор:  741 [ Вто Ное 20, 2012 9:21 am ]
Заглавие:  Re: asin(x) Tейлъров ред - що не ще към 1?

1 е последната стойност, за която функцията е дефинирана. За произволно малко над това редът вече е разходящ. Нормално е при доближаване към 1 грешката да расте.

Автор:  БатеВаньо [ Вто Ное 20, 2012 6:37 pm ]
Заглавие:  Re: asin(x) Tейлъров ред - що не ще към 1?

Между другото, тук http://rosettacode.org/wiki/Thiele's_in ... on_formula намерих един интересен начин на пресмятане на обратни функции.

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