Какие функции принято называть элементарными и почему? И при чём тут Ватсон? Разберёмся со всем по порядку. Обещаю, будет понятно и интересно, хоть и не совсем элементарно.

Когда я был школьником, какое-то время моим хобби была охота за функциями, для того чтобы рисовать на миллиметровке их графики, собирая своеобразную коллекцию. Тогда я был вооружён мощным оружием: калькулятором МК-52. До компьютера с графическим, а не текстовым дисплеем (ZX-Spectrum + домашний телевизор), нам всем ещё надо было дорасти, и мне, и доступным мне компьютерам.

Красавец со стековым программированием, непонятными для школьника значками и смешным морганием дисплея.
Красавец со стековым программированием, непонятными для школьника значками и смешным морганием дисплея.

Чтобы поддержать этот интерес, папа мне подсунул справочник по математике Марка Яковлевича Выгодского, в котором можно было выуживать интересные примеры функций с необычными графиками в различных координатах: декартовых, параметрических и полярных. Название справочника мне тогда казалось несколько ироничным:

Содержание явно не выглядело элементарным. Но вот что было интересно: всë, что я находил в справочнике, можно было составить из функций, доступных на калькуляторе. Присмотревшись к клавиатуре, мы найдём там, кроме «бухгалтерской» арифметики — сложения, вычитания, умножения и деления, ряд функций, вот они, жёлтенькие:

Точно такой же набор входит и в число элементарных функций, перечисленных в справочнике. А кто это решил, что эти функции в чём-то элементарнее других? Чаще встречаются? А почему? И отчего в этот клуб не берут другие функции? Это исторически сложившаяся терминология, или какая-то теория тут всё же, есть? Давайте разбираться.

* * *

Мы начнём с самых простых функций и постепенно будем добавлять к ним новые, глядя на то, что получается.

Самыми простыми операциями можно считать арифметические операции, определённые на поле вещественных чисел, а самой простой функцией — вещественную константу. Из этих функций и операций мы можем получить систему арифметических функций. Я буду записывать системы функций несколько нетрадиционным способом в форме пары множеств:

  \mathbf{Arith} = S\left( \{\mathrm{const}\},\ \{+,\ -,\ \times, \ \div \} \right).

Первый элемент в паре задаёт множество функций системы. В случае \mathbf{Arith} это единственная функция, которая возвращает указанную константу для любых аргументов: \mathrm{const}\, a = x \mapsto a. На калькуляторе она соответствует кнопкам с цифрами. Второе множество определяет набор операторов, позволяющих комбинировать функции, создавая из них новые функции. Например, сложение функций можно определить так: f + g = x \mapsto f(x) + g(x). Прочие арифметические операторы над функциями определяются подобным образом.

Этот набор операций и функций функционально полон и замкнут. Это значит, что с его помощью можно получить любую константу, и любая комбинация этих операций и функций тоже будет константой, если не пытаться делить на ноль. С этой системой мы знакомимся класса, так, до третьего. И графики она порождает скучные — это горизонтальные прямые.

Теперь добавим к константе в системе арифметических функций простейшую зависимость, которой у нас ещё не было — тождественное преобразование: \mathrm{id} = x \mapsto x. Эта функция ничего не делает и кажется абсолютно бесполезной. Но обратите внимание, на выделенном мною блоке клавиатуры калькулятора, над клавишей с нулём синим цветом написано НОП. По существу, это и есть тождественное преобразование, для которого создатели калькулятора выделили целую команду.

Из функций \mathrm{id} и \mathrm{const} уже можно собрать произвольную линейную функцию:

\mathrm{const}\, a \times \mathrm{id} + \mathrm{const}\, b  = x \mapsto ax + b.

Сумма, разность и композиция любых линейных функций оставляют их линейными, образуя полную и замкнутую систему линейных функций:

\mathbf{Lin} = S(\{\mathrm{id}, \mathrm{const}\},\ \{+,\ -,\ \circ \})^*.

Здесь появились два новых символа — кружочек и звёздочка. Кружочек обозначает композицию функций, или подстановку: f \circ g = x \mapsto f(g(x)), а звёздочка символизирует операцию замыкания системы. Дело в том, что хотя \mathrm{id} и \mathrm{const} сами являются линейными, это далеко не все мыслимые линейные функции. Однако все возможные арифметические комбинации этих базовых функций порождают всё множество линейных функций. Замыкание и обозначает множество всех комбинаций базовых функций с помощью перечисленных операций.

Таким же образом, с формальной точки зрения, любой язык порождается конечным набором слов и конечным набором правил — грамматикой языка. Хотя грамматический подход очень близок к обсуждаемой нами теме, мы сейчас туда не полезем, чтобы не отвлекаться от функций.

К линейным функциям от x относятся, например, такие:

2x,\ 1.45x+67,\ 2-x

Графики линейных функций тоже не особо радуют разнообразием, но по крайней мере, они уже могут быть наклонными.

Умножение двух нетривиальных линейных функций это уже функция квадратичная. Последующие перемножения и композиции могут повышать степень получающегося многочлена неограниченно. Таким образом, добавляя к линейным функциям умножение, мы получаем полную и замкнутую систему полиномиальных функций или многочленов:

\mathbf{Poly} = S(\{\mathrm{id}, \mathrm{const}\},\{ +,\ -,\ \times,\ \circ \})^*.

Графики полиномов — всевозможные параболы, уже могут быть достаточно интересными. Они могут аппроксимировать функции, как степенные ряды, или как полиномы Чебышёва, красиво интерполировать точки. А в параметрических координатах они могут использоваться как кривые Безье и ими уже можно нарисовать хоть зайца из «Ну погоди», хоть собственный портрет. Впрочем, правильную окружность одними полиномами не нарисовать.

Наконец, добавив к полиномиальным функциям деление, мы получим систему рациональных функций, отношений двух многочленов:

\mathbf{Rat} = S(\{\mathrm{id}, \mathrm{const}\},\ \{+,\ -,\ \times,\ \div,\ \circ \})^*.

Рисовать их графики поначалу интересно из-за разрывов и асимптот, но быстро становится ясно, что ничего принципиально нового по сравнению в полиномами они не предлагают. (В комментариях подсказывают, что рациональные функции, если правильно их использовать, способны принести много пользы, и даже нарисовать окружность). Вот несколько примеров рациональных функций от x:

 8,\ 2x,\ x^8 - 6x+1,\ \frac{1}{x},\ \frac{1+x}{1-x^2},\ \frac{1+x-2x^6}{1-x^2}

Классе в пятом, при решении уравнений, мы встречаемся с корнями: квадратными кубическими и т.д. Как нужно расширить систему рациональных функций, чтобы можно было ими пользоваться: ввести новую операцию для возведения в степень, или новую функцию? Для того, что чтобы получить и корни и многое другое, достаточно добавить к нашему набору пару взаимно обратных функций: экспоненту и натуральный логарифм. Эта добавка взрывообразно расширяет систему рациональных функций. Она позволяет выражать любые показательные и логарифмические функции, которые можно получить, пользуясь хорошо известными тождествами:

\begin{align*}   &x^a = e^{a\ln x},\quad a^x = e^{x\ln a},\\   &\log_xa = \frac{\ln a}{\ln x},\quad \log_ax = \frac{\ln x}{\ln a} \end{align*}

Это значит, что квадратный корень, или 10^x, вместе с десятичным логарифмом мы уже имеем. Кроме того, в вещественных числах нам становятся доступны гиперболические функции:

  \cosh x = \frac{e^x + e^{-x}}{2},\quad   \sinh  x= \frac{e^x - e^{-x}}{2},\quad   \tanh x = \frac{e^x + e^{-x}}{e^x - e^{-x}}.

Обратные гиперболические функции можно выразить через логарифмы:

\begin{eqnarray*}   &\mathrm{arch}\, x = \ln\left(a + \sqrt{x^2-1}\right),\quad   \mathrm{arsh}\, x = \ln\left(a + \sqrt{x^2+1}\right),\\   &\mathrm{arth}\, x = \frac12\ln\left(\frac{1+x}{1-x}\right). \end{eqnarray*}

Наконец, перейдя к комплексным числам, мы получаем все тригонометрические и обратные тригонометрические функции, в соответствии со знаменитой формулой Эйлера. Всё это богатство и составляет систему элементарных функций, которая определяется через четыре базовые функции, арифметику и композицию:

\mathbf{Elem} = S(\{\mathrm{id}, \mathrm{const},\exp,\ln\},\{+,-,\times,\div, \circ \})^*.

и включает в себя и тригонометрию, и радикалы, и модуль, и многое-многое другое. Таким образом, мы, наконец, получаем доступ ко всему, что изображено жёлтым цветом на выделенной части клавиатуры калькулятора и ко всему разнообразию графиков, доступных с помощью справочника Выгодского.

Естественным образом, все указанные нами системы образуют иерархию, которой мы, в общих чертах, следуем, изучая школьную программу математики, переходя из первого класса к одиннадцатому:

  \mathbf{Arith} \subset \mathbf{Lin} \subset   \mathbf{Poly} \subset   \mathbf{Rat} \subset \mathbf{Elem}.

Впервые подобную классификацию (только гораздо формальнее, чем мы) произвёл Жозеф Лиувилль в первой половине XIX века. Позже, уже в XX веке, ещё более формально множество элементарных функций определили Готфри Харди и упомянутый в заголовке Джордж Невил Ватсон.

Но почему же все они остановились на этом минимальном наборе, не включив него, например, крайне полезные функции Бесселя, W-функцию Ламберта, или функцию ошибок \mathrm{erf}(x)?

Дело в том, что мы не рассмотрели ещё одну важную операцию, превращающую одну функцию в другую: взятие производной. Все перечисленные нами системы остаются замкнутыми, если мы добавим в них оператор дифференцирования \partial. В том числе, и система элементарных функций:

\mathbf{Elem} = S(\{\mathrm{id}, \mathrm{const},\exp,\ln\},\{+,-,\times,\div, \circ,\partial \})^*.

Действительно, любая производная любой элементарной функции остаётся элементарной. Интегрирование таким свойством уже не обладает: очень легко найти элементарную функцию, чья первообразная элементарной уже не будет. Однако никакая функция из \mathbf{Elem} не требует для своего определения интегрирования, все они могут быть выражены как конечная композиция элементарных функций и операций.

Именно вопросом элементарности первообразных и занимался Лиувилль, выстраивая цепочку пополнений в системах функций (дифференциальных полях), начиная с констант, через линейные функции к рациональным. Он же доказал теорему, которая известна сейчас как теорема Лиувилля, из которой следует единственность и достаточность логарифмического и экспоненциального дополнения рациональных функций до элементарных.

Таким образом, формально и строго элементарность функции определяется через замкнутость и полноту дифференциального поля, к которому она принадлежит, а также через конечность своего представления в этом поле. Все эти свойства системы элементарных функций не нарушатся, если мы добавим к ним какие-то спецфункции: функции Бесселя, эллиптические, гипергеометрические функции или ту же функцию ошибок. Однако система элементарных функций минимальна и тем только заслуживает особого имени.

Я не случайно начал рассказ с отсылки к калькулятору. Сейчас результаты работ Лиувилля и его последователей используются при разработке систем символьной алгебры, символьного дифференцирования, интегрирования и решения дифференциальных уравнений. И вот тут-то языковая модель функции становится как нельзя кстати!

В завершение я хочу сделать ещё одно замечание. Хорошо известны со школы свойства экспоненты и логарифма:

\begin{eqnarray*}   e^{x+y} = e^xe^y, && \ln(xy) = \ln{x}+\ln{y}\\   e^{-x}=\frac{1}{e^x}, &&  \ln \frac1{x} = -\ln{x}\\   e^0 = 1, && \ln 1 = 0. \end{eqnarray*}

Они превращают эту пару функций в преобразование, которое, сохраняя алгебраическую структуру, меняет сложение и вычитание на умножение и деление и наоборот. В этом состоит глубокий смысл этих функций и их роль в системе элементарных функций, множество операций которой оказывается замкнутым относительно этого автоморфизма.

* * *

Со времени моих экспериментов с микрокалькулятором прошло около сорока лет, и за это время я не только разобрался с названием справочника, но и стал достаточно искушённым в рисовании графиков элементарных функций.

Так что всем, дочитавшим, делаю подарочек, построенный исключительно элементарными методами:

using Plots;

bonne(phi,lam,t) = let
    ϕ₀ = 83/180*π
    ρ  = cot(ϕ₀) - ϕ₀ - ϕ(t)
    E  = λ(t)*cos(ϕ(t))/ρ
    (ρ*sin(E), -cot(ϕ₀) + ρ*cos(E))
end;

ϕ(t) = 0.9*pi/2*cos(50t)*(cos(51t))+0.12;
λ(t) = 0.9*pi*sin(50t)*(cos(51t));

plot(legend=false,size=(550,500),bg="black",lw=0.75,la=0.95);
plot!([bonne(ϕ,λ,t + π/2) for t in 0:0.001:π]);
plot!([bonne(ϕ,λ,t - π/2) for t in 0:0.001:π],lc="orangered");
png("bonne.png");

Здесь используется проекция Боннэ от эпициклоиды на поверхности сферы.

Комментарии (16)


  1. OldFisher
    30.11.2023 07:48
    +2

    А как математика глядит на функции-бедолаги, которые сами элементарными не являются, а вот их производные - таки да?


    1. samsergey Автор
      30.11.2023 07:48
      +3

      С интересом, поскольку они и есть материал для дальнейшего расширения дифференциальных полей.


    1. Naf2000
      30.11.2023 07:48

      Это какие?


      1. OldFisher
        30.11.2023 07:48
        +1

        Безымянные страдальцы, выразимые через дифференциальные уравнения, которые считают численными методами. Кеплеровское орбитальное движение, к примеру.


        1. Naf2000
          30.11.2023 07:48

          Меня интересуют их производные, которые являются элементарными функциями


          1. OldFisher
            30.11.2023 07:48
            +1

            Что-то вроде y'(x) = sin(x) / x? Такого добра много.


            1. Naf2000
              30.11.2023 07:48

              А точно. Что-то я совсем забыл про такие интегралы. Спасибо


  1. AWRDev
    30.11.2023 07:48
    +5

    У меня с этим калькулятором хобби было немного попроще: найти кнопку "="


  1. Refridgerator
    30.11.2023 07:48
    +2

    Впрочем, правильную окружность одними полиномами не нарисовать

    График функции (i-x)/(i+x) на комплексной плоскости от действительного x (от минус бесконечности до плюс бесконечности) будет окружность, я гарантирую это.

    UPD: новый редактор хабра всё ещё не очень хорошо работает с формулами в комментариях, особенно когда дело касается их редактирования.


  1. Refridgerator
    30.11.2023 07:48
    +1

    но быстро становится ясно, что ничего принципиально нового по сравнению в полиномами они не предлагают

    Категорически не согласен.

    1) Рациональными функциями можно строить интерполяционные функции за O(n), в которых координаты узловых точек заданы явным образом. Более того, можно задавать не только значения узловых точек - но и и произвольное количество производных, и даже разрывы.

    2) Рациональными функциями описываются передаточные функции в электрических схемах, причём от их степени будет зависеть количество элементов в этой схеме (и наоборот).

    3) Только рациональными многочленами можно описать функции, значения которых не превышают некоторых заданных при всех значениях аргумента. В обычных многочленах значения всегда стремятся к бесконечности.


  1. Arastas
    30.11.2023 07:48
    +1

    Вроде сначала говорили про систему функций и было хорошо, а потом вдруг бах и дифференциальноe полe...

    элементарность функции определяется через замкнутость и полноту дифференциального поля, к которому она принадлежит, а также через конечность своего представления в этом поле. <...> Однако система элементарных функций минимальна и тем только заслуживает особого имени.

    А разве система линейный функций не будет замкнутой и полной? И туда вроде тоже можно добавить дифференцирование. Что я упустил?

    И ещё вопрос - а операция if считается элементарной? Как можно получить, например, кусочно-постоянные функции?


    1. Refridgerator
      30.11.2023 07:48
      +1

      Кусочно-непрерывные функции можно получить используя корень, например. Не очень практично, зато из элементарных.


  1. omxela
    30.11.2023 07:48

    Все эти свойства системы элементарных функций не нарушатся, если мы добавим к ним какие-то спецфункции: функции Бесселя, эллиптические, гипергеометрические функции или ту же функцию ошибок. Однако система элементарных функций минимальна и тем только заслуживает особого имени.

    А что значит "минимальна"? Это кажется несколько субъективным критерием. Не проще ли признать тот, на мой взгляд, очевидный факт, что дело в истории и договоренностях. В основе этого, пусть не написанного явно, договора лежит то обстоятельство, что "элементарные" функции изучают дети в школе, а Бесселя или мою любимую функцию ошибок - нет. В этом смысле давно ли гиперболические функции попали в элементарные? Полагаю, тогда, когда засветились на клавиатуре калькулятора. Или, скажем, полиномы Чебышёва - элементарны? Это ведь просто полиномы. Вот и получается, что границы понятия "элементарная функция" достаточно размыты. Всё определяется текущими традициями и договорённостями.


  1. belch84
    30.11.2023 07:48

    Функцию Минковского ?(x) тоже же можно считать элементарной? Вычисляется с помощью элементарных операций, график несложно построить, она монотонная, даже производная у неё есть. Вращая график, можно построить элегантную

    вазу Минковского


    1. MasterMentor
      30.11.2023 07:48
      +1

      А вот если бы в те славные юные годы Вам попались эти книги, так Вы бы вообще "прибалдели": алгебра графиков дана там как в Вашей статье (кратко и в той же форме), но нагляднее, чем у Выгодского. :)


    1. MasterMentor
      30.11.2023 07:48

      По определению.

      Всё множество элементарных функций можно получить конечным числом арифметических действий (сложение, умножение, возведение в степень и обратные им функции) и композиций (подстановок) из «основных элементарных функций» (линейная, степенная, показательная и логарифмическая функции; тригонометрические и обратные им функции). Каждую элементарную функцию можно задать формулой.