Русская Википедия:Алгоритм Риша
Алгори́тм Ри́ша — алгоритм для аналитического вычисления неопределённых интегралов, использующий методы дифференциальной алгебры. Он базируется на типе интегрируемой функции и на методах интегрирования рациональных функций, корней, логарифмов, и экспоненциальных функций.
Назван в честь Шаблон:Нп5. Сам Риш, который разработал алгоритм в 1968 году, называл его «разрешающей процедурой», поскольку метод решает, является ли первообразная от функции элементарной функцией. Наиболее подробное исследование алгоритма представлено на 100 страницах книги «Алгоритмы компьютерной алгебры» Кейта Геддеса, Стефана Цапора и Джорджа Лабана.
Описание
Алгоритм Риша интегрирует элементарные функции. Лаплас решил эту проблему для рациональных функций, показав, что неопределённый интеграл рациональной функции сам является рациональной функцией с конечным количеством констант, умноженных на логарифмы рациональных функций. Программно он был реализован в начале 1960-х годов.
Лиувилль сформулировал проблему, решенную в алгоритме Риша. Он доказал аналитически, что если есть элементарное решение g для уравнения <math>g' = f</math>, то для констант <math>\alpha_i</math> и элементарных функций <math>u_i</math> и <math>v</math> решение существует в форме
- <math> g = v + \sum_{i<n} \alpha_i \ln (u_i).</math>
Риш создал метод, который позволяет рассматривать только конечное множество элементарных функций в форме Лиувилля.
Алгоритм Риша был вдохновлён поведением экспоненциальных и логарифмических функций во время дифференцирования.
Для функции f eg, где f и g дифференцируемые, имеем
- <math> (f \cdot e^g)' = (f' + f \cdot g') \cdot e^g,</math>
так что если функция eg содержится в результате неопределённого интегрирования, она должна входить и в состав исходного подынтегрального выражения. Аналогично, поскольку
- <math> \big(f \cdot (\ln g)^n\big)' = f'(\ln g)^n + n f \frac{g'}{g} (\ln g)^{n-1},</math>
если (ln g)n содержится в результате интегрирования, то в исходном подынтегральном выражении должно присутствовать несколько степеней логарифма.
Примеры решаемых задач
Нахождение элементарной первообразной очень чувствительно к незначительным изменениям. Например, следующая функция имеет элементарную первообразную:
- <math> f(x) = \frac{x}{\sqrt{x^4 + 10 x^2 - 96 x - 71}},</math>
а именно:
- <math> \begin{align} F(x) = - \frac{1}{8}\ln &\,\Big( (x^6+15 x^4-80 x^3+27 x^2-528 x+781) \sqrt{ x^4+10 x^2-96 x-71} \Big. \\ & {} - \Big .(x^8 + 20 x^6 - 128 x^5 + 54 x^4 - 1408 x^3 + 3124 x^2 + 10001) \Big) + C. \end{align}</math>
Но если в выражении f(x) сменить 71 на 72, то будет невозможно найти элементарную первообразную. (Некоторые системы компьютерной алгебры могут в данном случае вернуть ответ как неэлементарную функцию — эллиптический интеграл, который, однако, не охватывается алгоритмом Риша.)
Следующие функции являются более сложными примерами:
- <math>f(x) = \frac{x^2+2x+1+ (3x+1)\sqrt{x+\ln x}}{x\,\sqrt{x+\ln x}(x+\sqrt{x+\ln x})}.</math>
Первообразная этой функции имеет короткую форму
- <math>F(x) = 2 \left[\sqrt{x + \ln x} + \ln\left(x + \sqrt{x + \ln x}\right)\right] + C.</math>
Реализация
Эффективная программная реализация теоретически построенного алгоритма оказалась сложной задачей. В случае чистых трансцендентных функций (не содержащих корней и полиномов) это относительно легко было реализовано в большинстве систем компьютерной алгебры.[1]
Случай же чистых алгебраических функций был решён и реализован в системе Reduce Джеймсом Дэвенпортом[2][3]. Общий случай был решён и реализован Мануэлем Бронштейном в Scratchpad (предшественнице системы Axiom)[4].
Разрешимость
Алгоритм Риша в приложении к общему случаю элементарных функций не является алгоритмом в строгом смысле, потому как в процессе работы ему требуется определять, тождественны ли некоторые выражения нулю (Шаблон:Нп5). Для выражений, функции в которых элементарны, неизвестно, существует ли алгоритм, делающий такую проверку (современные системы используют эвристику). Более того, если в список элементарных функций добавить абсолютную величину, такого алгоритма не существует (Шаблон:Нп5). Данная проблема имеется и в делении многочленов столбиком: оно не будет разрешимо, если нельзя определить равенство коэффициентов нулю.
Почти каждый нетривиальный алгоритм, использующий многочлены, использует алгоритм их деления, как и алгоритм Риша. Если поле констант вычислимо, то проблема равенства нулю решаема, тогда алгоритм Риша полон. Примерами вычислимых полей констант являются <math>\mathbb{Q}</math> и <math>\mathbb{Q}(y)</math>.
Такая же проблема имеется и в методе Гаусса, который тоже является необходимым для многих частей алгоритма Риша. Метод Гаусса будет давать некорректный результат, если невозможно правильно определить, будет ли базис идентичен нулю.
Примечания
Ссылки
- ↑ Шаблон:Citation
- ↑ Не следует путать с его отцом, Харольдом Дэвенпортом
- ↑ Шаблон:Книга
- ↑ Шаблон:Citation