Algorytm Rischa

W obliczeniach symbolicznych algorytm Rischa jest metodą całkowania na czas nieokreślony, używaną w niektórych systemach algebry komputerowej do znajdowania funkcji pierwotnych . Został nazwany na cześć amerykańskiego matematyka Roberta Henry'ego Rischa , specjalisty od algebry komputerowej, który opracował go w 1968 roku.

Algorytm przekształca problem całkowania w problem algebry . Opiera się na postaci całkowanej funkcji oraz metodach całkowania funkcji wymiernych , pierwiastków , logarytmów i funkcji wykładniczych . Risch nazwał to procedurą decyzyjną , ponieważ jest to metoda rozstrzygania, czy dana funkcja ma funkcję elementarną jako całki nieoznaczonej, a jeśli tak, to do wyznaczenia tej całki nieoznaczonej. Jednak algorytmowi nie zawsze udaje się określić, czy funkcja pierwotna danej funkcji w rzeczywistości może być wyrażona za pomocą funkcji elementarnych. [ potrzebny przykład ]

Pełny opis algorytmu Rischa zajmuje ponad 100 stron. Algorytm Rischa -Normana to prostszy, szybszy, ale mniej wydajny wariant, który został opracowany w 1976 roku przez Arthura Normana .

Poczyniono znaczne postępy w obliczaniu części logarytmicznej mieszanej całki transcendentalno-algebraicznej przez Briana L. Millera.

Opis

Algorytm Rischa służy do całkowania funkcji elementarnych . Są to funkcje uzyskane przez złożenie wykładników, logarytmów, pierwiastków, funkcji trygonometrycznych i czterech operacji arytmetycznych ( + − × ÷ ). Laplace rozwiązał ten problem dla funkcji wymiernych , pokazując, że całka nieoznaczona funkcji wymiernej jest funkcją wymierną i skończoną liczbą stałych wielokrotności logarytmów funkcji wymiernych [ potrzebne źródło ] . Algorytm zaproponowany przez Laplace'a jest zwykle opisywany w podręcznikach do rachunku różniczkowego; jako program komputerowy został ostatecznie wdrożony w latach 60. XX wieku. [ potrzebne źródło ]

Liouville sformułował problem, który rozwiązuje algorytm Rischa. Liouville udowodnił metodami analitycznymi, że jeśli istnieje elementarne rozwiązanie g równania g ′ = f , to istnieją stałe α i oraz funkcje u i i v w polu generowanym przez f takie, że rozwiązanie ma postać

Risch opracował metodę, która pozwala rozważać tylko skończony zbiór funkcji postaci Liouville'a.

Intuicja dla algorytmu Rischa wynika z zachowania funkcji wykładniczej i logarytmicznej podczas różniczkowania. Dla funkcji f np g , gdzie f i g funkcjami różniczkowalnymi , mamy

więc gdyby np. g było wynikiem całkowania nieoznaczonego, należy oczekiwać, że znajdzie się wewnątrz całki. Również jak

to gdyby (ln g ) n było wynikiem całkowania, to należałoby się spodziewać tylko kilku potęg logarytmu.

Przykłady problemów

Znalezienie elementarnej funkcji pierwotnej jest bardzo wrażliwe na szczegóły. Na przykład następująca funkcja algebraiczna (opublikowana w sci.math.symbolic przez Henri Cohena w 1993 r.) ma elementarną funkcję pierwotną, jak pokazuje Wolfram Mathematica od wersji 13 (jednak Mathematica nie używa algorytmu Trager-Risch do obliczenia tej całki ):

mianowicie:

Ale jeśli stały składnik 71 zostanie zmieniony na 72, nie jest możliwe przedstawienie funkcji pierwotnej w kategoriach funkcji elementarnych, jak pokazuje również FriCAS . Niektóre systemy algebry komputerowej mogą tutaj zwracać funkcję pierwotną w kategoriach funkcji nieelementarnych (tj. całek eliptycznych ), które są poza zakresem algorytmu Rischa. Całkę tę rozwiązał Czebyszew (a w jakich przypadkach jest ona elementarna), ale ścisłego dowodu na to ostatecznie dokonał Zołotariew .

Poniżej znajduje się bardziej złożony przykład, który obejmuje zarówno funkcje algebraiczne, jak i przestępne:

W rzeczywistości funkcja pierwotna tej funkcji ma dość krótką postać, którą można znaleźć za pomocą podstawienia ( SymPy może to rozwiązać + podczas gdy FriCAS kończy się niepowodzeniem z powodu błędu „implementacja niekompletna (stałe pozostałości)” w algorytmie Rischa):

Niektóre „twierdzenia” Davenporta [ potrzebna definicja ] są wciąż wyjaśniane. Na przykład w 2020 roku znaleziono kontrprzykład do takiego „twierdzenia”, gdzie okazuje się, że elementarna funkcja pierwotna jednak istnieje.

Realizacja

Przekształcenie teoretycznego algorytmu Rischa w algorytm, który może być skutecznie wykonywany przez komputer, było złożonym zadaniem, które zajęło dużo czasu.

Przypadek funkcji czysto transcendentalnych (które nie obejmują pierwiastków wielomianów) jest stosunkowo łatwy i został wcześnie zaimplementowany w większości systemów algebry komputerowej . Pierwszą implementację wykonał Joel Moses w Macsyma wkrótce po opublikowaniu artykułu Rischa.

Przypadek funkcji czysto algebraicznych został rozwiązany i zaimplementowany w Reduce przez Jamesa H. Davenporta , chociaż dla uproszczenia mógł dotyczyć tylko pierwiastków kwadratowych i powtarzanych pierwiastków kwadratowych, a nie ogólnych pierwiastków lub innych niekwadratowych relacji algebraicznych między zmiennymi.

Ogólny przypadek został rozwiązany i prawie w pełni zaimplementowany w Scratchpadzie, prekursorze Axiomu , przez Manuela Bronsteina, i jest obecnie rozwijany w rozwidleniu Axioma, FriCAS. Wdrożenie nie obejmowało jednak w całości niektórych oddziałów dla przypadków szczególnych. Obecnie nie jest znana pełna implementacja algorytmu Rischa.

rozstrzygalność

Algorytm Rischa zastosowany do ogólnych funkcji elementarnych nie jest algorytmem, ale półalgorytmem , ponieważ w ramach swojego działania musi sprawdzać, czy określone wyrażenia są równoważne zeru ( problem ze stałą ), w szczególności w polu stałym. W przypadku wyrażeń, które obejmują tylko funkcje powszechnie uważane za elementarne , nie wiadomo, czy istnieje algorytm przeprowadzający taką kontrolę (obecne systemy algebry komputerowej wykorzystują heurystykę); ponadto, jeśli dodać funkcję wartości bezwzględnej do listy funkcji elementarnych wiadomo, że taki algorytm nie istnieje; zobacz twierdzenie Richardsona .

Należy zauważyć, że problem ten pojawia się również w algorytmie dzielenia wielomianowego ; ten algorytm zawiedzie, jeśli nie będzie w stanie poprawnie określić, czy współczynniki znikają identycznie. Praktycznie każdy nietrywialny algorytm dotyczący wielomianów wykorzystuje algorytm dzielenia wielomianów, w tym algorytm Rischa. Jeśli pole stałe jest obliczalne , tj. dla elementów nie zależnych od x problem zerowej równoważności jest rozstrzygalny, to algorytm Rischa jest algorytmem kompletnym. Przykładami obliczalnych pól stałych są Q i Q ( y ) , tj. odpowiednio liczby wymierne i funkcje wymierne w y ze współczynnikami liczb wymiernych, gdzie y jest liczbą nieokreśloną, która nie zależy od x .

Jest to również problem w algorytmie macierzy eliminacji Gaussa (lub dowolnym algorytmie, który może obliczyć przestrzeń zerową macierzy), który jest również niezbędny dla wielu części algorytmu Rischa. Eliminacja Gaussa da nieprawidłowe wyniki, jeśli nie będzie w stanie poprawnie określić, czy oś obrotu jest identyczna zerem [ potrzebne źródło ] .

Zobacz też

Notatki

Linki zewnętrzne