ďťż
Lemur zaprasza
Strona: [ > ] z 1 Autor Temat: arcsin i arccos marcin_an Forumowicz Typ: neutral Postów: 1265 Zarejestrowany: Mar 2004 arcsin i arccos Czy ktoś wie, jak w VB uzyskać funkcje arcsin i arccos? W MSDN podają jak, ale to zupełnie nie działa (czyżby MS znowu gdzieś się pomylił ). Podaję tutaj przykład z MSDN: arcsin(x) = Atn(x / Sqr(-x * x + 1)) arccos(x) = Atn(-x / Sqr(-x * x + 1)) + 2 * Atn(1) Może to nie problem VB, ale jednocześnie spytam, czy ktoś zna jakiś algorytm wyciągania pierwiastków przy pomocy czterech podstawowych funkcji arytmetycznych (+,-,*,/) i modulo. _____________________________________________ Popieram losmaca: 1) Ludzie, dbajcie o polszczyznę!!! 2) Ludzie, zadawajcie kompletne pytania, a nie - rzucacie ochłapy i trzeba się domyślać o co chodzi!!! ___ NOWE FORUM 28-06-2004 10:14 bisiek Typ: neutral Postów: 487 Zarejestrowany: Jul 2003 Żeby to zadziałało, należy najpierw zamienić x na zakres liczb 0 - 1, tak jak zwraca sin/cos. 'W pewnych wypadkach występuje pierwiastkowanie liczby ujemnej, a warunki If za funkcjami Arcsin i Arccos usuwają ten błąd. On Error Resume Next 'Obliczanie promienia r = Sqr(X1 ^ 2 + Y1 ^ 2) X1 = X1 / r Y1 = Y1 / r 'Do funkcji dodałem kilka warunków _ i nie ma już wyjątków w jej działaniu (chyba) a = Atn(X1 / Sqr(-X1 * X1 + 1)) If Y1 < 0 Then a = pi - a If X1 = 1 Then a = pi / 2 If X1 = -1 Then a = pi / 2 * 3 b = Atn(-Y2 / Sqr(-Y2 * Y2 + 1)) + 2 * Atn(1) If X2 < 0 Then b = pi - b - pi If X2 = 0 And Y2 = -1 Then b = b - pi Wynik podawany jest w radianach _____________________________________________ www.mob.abc.pl - moja strona o VB 28-06-2004 11:25 3380672 marcin_an Forumowicz Typ: neutral Postów: 1265 Zarejestrowany: Mar 2004 Właściwie dałeś mi ten sam wzór MSDN . Ale już wiem, gdzie leżał błąd. Częściowo leżał on po mojej stronie. Nie skojarzyłem, że arcsin ma sens tylko dla sinusów kątów od -pi/2 do pi/2. A ja mu dawałem np. kąt 2... Druga rzecz to niedokładność funkcji sin. Właściwie to nie jej wina, ale gdy da się jej np. kąt pi, to zwraca około 1.12e-16. Blisko zera, ale ponieważ pi nie było równe pi, to i wynik nie będzie równy 0. Jeśli obydwie sprawy się zsumuje, to nie ma wątpliwości, dlaczego arcsin(sin(2)) wychodził mi ~1.41 . Dzięki za pomoc. _____________________________________________ Popieram losmaca: 1) Ludzie, dbajcie o polszczyznę!!! 2) Ludzie, zadawajcie kompletne pytania, a nie - rzucacie ochłapy i trzeba się domyślać o co chodzi!!! ___ NOWE FORUM 28-06-2004 12:01 Wszystkich odpowiedzi: 2 :: Maxymalnie na stronę: 20 Strona: [ > ] z 1 |