26

Jesli dobrze rozumiem to wg tego musisz i tak znac przynajmniej tangens kąta. A zagadnienie polega na tym aby wyliczyc przebieg sinusa majac do dyspozycji tylko mnozenie/dzielenie i dodawanie/odejmowanie. (jak mniemam ;)
Swoja droga, jak fox napisal, sinusa najlepiej wziasc z lookupa ;)

27 Ostatnio edytowany przez tebe (2006-07-25 17:53:52)

ok, ale czy mając lookupa można obliczyć sinus dla każdej liczby rzeczywistej, czy tylko tyle ile przewidzisz w lookupie ?

po wielu przekształceniach szeregu Taylora wyszło to co przewidział Laoo, post #8 jest przekształconym szeregiem Taylora, a dokładniej jego wersją "wspak":

 sin(x) = x - x^3/3! + x^5/5! - x^7/7! + x^9/9!
 sin(x) = x^9/9! - x^7/7! + x^5/5! - x^3/3! + x

po wyciągnięciu przed nawias x^2 i zredukowaniu w podobny sposób silnii wychodzi dokładnie schemat obliczeń z postu #8, jest on o tyle korzystny że wystarczy ciągle przemnażać nowe wartości przez ostatnio wyliczoną wartość

ogólnie jeśli chodzi o liczbę mnożeń jest to wersja z ich większą liczbą, gdyby nie redukować silnii otrzymujemy mniejszą liczbę mnożeń, możemy to wykorzystać na podniesienie precyzji obliczeń, tak więc moja nowa wersja oblicza sinusa z takiego szeregu Taylora:

 sin(x) = x^13/13! - x^11/11! + x^9/9! - x^7/7! + x^5/5! - x^3/3! + x =
        = x^13 * f - x^11 * e + x^9 * d - x^7 * c + x^5 * b - x^3 * a + x =
        = x^3 * (x^2 * (x^2 * (x^2 * (x^2 * (x^2 * f - e) + d) - c) + b) - a) + x

a = 1 / 3!
b = 1 / 5!
c = 1 / 7!
d = 1 / 9!
e = 1 / 11!
f = 1 / 13!

przy podobnej liczbie mnożej jak z postu #8 otrzymujemy jeszcze większą precyzje obliczeń

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

28

tebe napisał/a:

ok, ale czy mając lookupa można obliczyć sinus dla każdej liczby rzeczywistej, czy tylko tyle ile przewidzisz w lookupie ?

Tyle co w lookupie, aczkolwiek mozna by sie zastanowic czy odpowiednio skonstruowany lookup (kilka wręcz) i jakies proste przeksztalcenia nie daly by gesciejszych wartosci niz lookup 'per se'. Trzeba by wziasc jakis podrecznik od algebry i pokminic :)

29 Ostatnio edytowany przez laoo/ng (2006-07-25 19:23:58)

A te proste przekształcenia to np. banalna interpolacja liniowa.
Do obliczenia sin(x) Robimy tablice n sinusów 0..pi/2, mniej lub bardziej wyszukanym algorytmem znajdujemy takie k, żeby nasze x było pomiędzy k a k+1 i interpolujemy je w odpowienim stosunku. Dla zwiększenia dokładości można zwiększyć gęstość lokoopa, albo rozmieścić punkty niejednorodnie, ale wtedy algorytm wyszukiwania odpowiedniego k byłby trudniejszy

30

no, dokladnie. chwile po nacisnieciu wyslij mi sie zapalilo swiatelko 'interpolacja'
:)

31

Ciekawe, po co Tebemu sinus każdej liczby rzeczywistej?

Taylor słabo zbiega dla dużych liczb, lepiej potraktować argument modulo 2*PI.

https://www.youtube.com/watch?v=jofNR_WkoCE

32

Moze konczy to slawne demo Konopa :)

33

albo ma to zwiazek z:

http://atariarea.krap.pl/forum/viewtopic.php?id=4291

http://atari.pl/hsc/ad.php?i=1.

34

.... albo potrzebuje solidnych obliczen do pisanego pinballa na xl/xe .... ;]

Dracon napisał/a:

.... albo potrzebuje solidnych obliczen do pisanego pinballa na xl/xe .... ;]

I to mi sie chyba wydaje najlepszym kojarzeniem faktow :). To dobrze, ze prace sie posuwaja naprzod :)

Kaz/Rohar
Prowadzę stronę dla obłąkanych: http://atari.online.pl/

36

E tam, zwykły lookup powinien wystarczyć do pinballa.

https://www.youtube.com/watch?v=jofNR_WkoCE

37

Gdzie nie wystarczy?

Hitler, Stalin, totalniak, SSman, NKWDzista, kaczor dyktator, za długo byłem w ChRL, wypowiadam się afektywnie.

38

Przy symulacjach reakcji jądrowych pewnie nie wystarczy ;)

39

Tebe portuje SETI@Home ? :o ;)

https://www.youtube.com/watch?v=jofNR_WkoCE