Mam trochę kodu, który używa zmodyfikowanych funkcji Bessela zarówno pierwszego, jak i drugiego rzędu (iv i kv). Irytujące wydają się mieć ograniczenia, są to iv (0,713) i kv (0,697), dodają po jednym, a ty dostajesz odpowiednio nieskończoność i 0. Jest to dla mnie problem, ponieważ muszę użyć wartości wyższych niż ta, często do 2000 lub więcej. Kiedy próbuję przez nie podzielić, kończę nurkowanie 0 lub nieskończoność, co oznacza, że albo otrzymuję błędy, albo zero, z których żadne nie chcę.Funkcje Bessela w Pythonie, które działają z dużymi wykładnikami
Używam scipy bessel functions, czy są jakieś lepsze funkcje, które radzą sobie z dużo mniejszymi i znacznie większymi liczbami lub sposób modyfikowania Pythona do pracy z tymi dużymi liczbami. Nie jestem pewien, jaki jest prawdziwy problem, dlaczego Python nie może ich przetworzyć poza 700, czy jest to funkcja, czy to Python?
Nie wiem, czy Python już to robi, ale potrzebuję tylko pierwszych 5-10 cyfr * 10^x na przykład; to znaczy, że nie potrzebowałbym wszystkich 1000 cyfr, być może jest to problem z tym, jak działa Python w porównaniu do tego, jak pracuje Wolfram Alpha?
Nie sądzę Jego problem Pythona tyle jako podwójne pływającym punktem kwestii zakresu. scipy dostarcza wrapper wokół kodu C, który faktycznie implementuje funkcję bessel. Jako taki jest ograniczony do zakresu, który może pomieścić podwójny. – sizzzzlerz
tak, właśnie zrobiłem sys.float_info i zgadnij co? max_10_exp = 308, która jest mniej więcej dokładną odpowiedzią funkcji bessela na granicy. To dla mnie zła wiadomość. W jaki sposób Wolfram Alpha jest w stanie to rozwiązać? – Rapid
Magia? Nie wiem, ale jestem prawie pewien, że Alpha dostaje swoją bazę kodu z Mathematica Wolframa, który jest dość wyrafinowanym narzędziem. Wdrożyli jakiś algorytm, który pozwala im zwrócić zasadniczo nieograniczoną precyzję i zakres dla funkcji transcendentalnych, takich jak bessel. – sizzzzlerz