Функции одной переменной


1. Введение

Функции — важнейшая деталь всего того внушительнейшего аппарата математической абстракции, который позволил современной высшей математике зайти так далеко. Представить себе математику без этого понятия трудно, если и вовсе возможно. Поэтому изложение в этой статье я постараюсь сделать по возможности плавным и последовательным, чтобы краеугольное понятие математического анализа не ускользнуло ни от одного читателя.

На рубеже XVIII и XIX веков во Франции жил и усердно трудился знаменитый французский математик Пьер-Симон Лаплас. Среди прочего, он считал, что то существо, которое смогло бы узнать положение и скорость всех частиц во Вселенной в какой-то один момент времени, смогло бы на основании этой информации рассчитать всю историю вселенной от начала до скончания времён. Этим он утверждал, что будущее Вселенной полностью предопределено её текущим состоянием, пусть характер связей и будет бесконечно сложным.

Мы не можем узнать состояние Вселенной с точностью до каждой частицы. Но предвидеть будущее, хотя бы в простейших вопросах, всё равно хотим. Мы хотим знать, куда поедет машина, которую мы построили, куда потечёт вода в выстроенном нами водопроводе, да вообще как будет работать любой сконструированный нами механизм. Хотя бы примерно. Хотя бы в большинстве случаев.

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

Далее. Итак, мы хотим узнать положение x{} нашей машины в каждый момент времени t на каком-то временном отрезке [0,T]. От чего оно будет зависеть? Вероятно, от начального положения машины x_0 и начальной скорости v_0. Также, вероятно, от управления u — например, от того, насколько сильно мы собираемся жать педаль газа в каждый момент времени. Но разве это всё? Оно будет зависеть от поверхности, по которой мы едем, от гравитации (она может отличаться от земной: вдруг мы собираем марсоход?) и так далее. Но мы не можем вести расчёт для всех возможных вариантов поверхности и гравитации. Здесь и приходит абстракция: мы полагаем поверхность идеально ровной, а гравитацию, например, земной; для пущей простоты отпускаем педаль газа вообще и исследуем зависимость положения x{} только от времени t. Это и будет значить, что мы определили и ищем функцию одной переменной f, представляющую из себя не что иное, как саму численную зависимость x{} от t. Такую зависимость в математике принято обозначать x=f(t).

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

Зависимости бывают разными. Это могут быть зависимости положения от времени, объёма от температуры и так далее. Положение может измеряться в метрах, время — в секундах, температура — в градусах, допустим, по шкале Кельвина. Физики любят везде явно указывать единицы измерения, но мы будем их опускать, потому что единицы измерения нас не так волнуют и не сильно влияют на решение (ну в самом деле, от того, назовём мы метр метром или ста сантиметрами, решение задачи не изменится). Пусть, например, мы рассматриваем элементарную зависимость площади квадрата от длины его стороны: S=f(a). И площадь S, и длину стороны a мы будем считать просто вещественными числами, подразумевая, что единицы измерения или классические (метры, квадратные метры), или определены где-то далеко-далеко, в условии задачи.

Есть ещё один важный момент. Зависимость площади квадрата от длины стороны мы, конечно, знаем: S=a^2. И, теоретически, мы могли бы подставить в эту формулу на место a совершенно любое вещественное число. Но соответствует ли это логике задачи? Может ли у квадрата быть сторона отрицательной длины? Кажется, нет. Значит, мы пишем формулу S=a^2, подразумевая, что a>0. Это может показаться неважным; но функции ведь могут быть гораздо сложнее. Например, если бы у нас была зависимость вида y=\ln x, то отрицательные x{} подставлять в неё было бы уже попросту нельзя, иначе наш калькулятор или программа просто остановились бы и отказались работать дальше. А если бы мы вытворили такое при решении задачки на бумаге, то в результате могли бы получить очень неожиданные «теоретические» результаты, что-нибудь вроде 1=0. Если усложнить ещё и выражение под логарифмом, например, задать функцию вида y=\ln≤ft((1) ⁄ (2)+\cos x\right), то понять, какие x{} годятся, а какие — нет, становится ещё сложнее; в таких случаях за ответом на этот вопрос зачастую обращаются к задаче, из которой к нам пришла столь хитрая зависимость, и пытаются понять, какие возможны x{}, исходя из, например, физических соображений.

Таким образом мы подходим к одному важному определению: если дана некоторая функция f, определяющая зависимость y=f(x), то множество допустимых x{}, для которых эта зависимость определена и имеет смысл, называется областью определения функции f. Обычно оно обозначается как D(f) или \mathrm{dom} f, от английского слова domain.

Ещё одна важная вещь, которую стоит сразу же упомянуть — область значений. Областью значений функции f, определяющей зависимость y=f(x), называется множество всевозможных значений, принимаемых этой функцией на множестве D(f), то есть множество
R(f)={y | ∃ x∈ D(f):y=f(x)}.

Оно может также обозначаться как \mathrm{cod} f или \mathrm{Im} f.

Вооружившись этими двумя определениями, мы можем понять, почему функции в математике также нередко называют отображениями:
Функция как отображение D(f) в R(f)

Говорят, что функция f отображает множество D(f) во множество R(f).

Если мы теперь вернёмся к нашей образцово-показательной функции S=f(a)=a^2, то можем в наших новых терминах рассказать о ней следующее.
  1. Её областью определения является множество положительных вещественных чисел. Оно обозначется как ℝ_{+} или (0,+∞).
  2. Её областью значений также является множество положительных вещественных чисел. Этот факт, правда, неплохо было бы доказать, ведь раз мы условились, что функция — это «чёрный ящик», то если мы и можем точно знать, что ей можно пускать на вход, то что получится на выходе, да ещё и во всех возможных ситуациях — угадать не так-то просто.

    К счастью, в нашем случае всё тривиально. Достаточно заметить, что, во-первых, наша функция никогда не выдаёт отрицательные числа (и нуль), а во-вторых, что для любого заданного положительного числа S можно найти соответствующее положительное a такое, что S=a^2. Ну, здесь достаточно взять a=√{S}.

Если долго глядеть на нашу функцию, можно найти много других замечательных свойств. Например, она биективна, то есть имеет место однозначное соответствие между переменными a и S: каждому a соответствует ровно одно S и каждому S соответствует ровно одно a. Это, в свою очередь, означает, что она одновременно сюрьективна и инъективна. Но это уже совсем другая история.

Со школьной скамьи все должны иметь представление о такой функции, как синус. В школе мы учили, что синус — это отношение противолежащего катета к гипотенузе, и что это есть некоторая функция угла. Поэтому логично заключить, что областью определения синуса является множество D(\sin)=(0^{\circ},90^{\circ}) возможных углов в прямоугольном треугольнике. И, соответственно, областью значений синуса тогда является множество R(\sin)=(0,1) всевозможных соотношений катета и гипотенузы. Это несложно проверить. Ясно, что мы можем бесконечно «сплющивать» треугольник, чтобы отношение одного из катетов к гипотенузе стало сколь угодно близким к нулю, а другого — к единице. При этом сам ноль и единицу мы получить никогда не сможем.

Двигайте точку A, чтобы закрасить область определения и область значений функции \sin(α).

2. Непрерывность

Перейдём теперь к ещё одному безумно важному понятию высшей математики — непрерывности функции.

Физические процессы всегда (ну почти всегда) протекают непрерывно. Вода не может закипеть мгновенно. Сколь угодно быстро — возможно. Но не мгновенно. Она всегда пройдёт все промежуточные температуры от комнатной до 100^{\circ}. Машина не может «дёргаться» в пространстве — если она попала из пункта А в пункт Б, значит, она проехала и все промежуточные пункты.

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

Умозрительно в понятии непрерывности функции нет ничего сложного. Мы говорим, что функция непрерывна, если её график нигде не рвётся. Мы говорим, что функция непрерывна в какой-то конкретной точке x_0, если её график не рвётся в этой точке. При этом ему всё ещё разрешается «переламываться», как на следующей картинке:

Главное — чтобы мы могли нарисовать график, «не отрывая карандаша от бумаги». Это важно понять: непрерывность — не то же самое, что гладкость.

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

Определение непрерывности функции в точке по Коши звучит так: функция f называется непрерывной в точке x_0, если для любого сколь угодно малого положительного числа ε можно подобрать такое положительное число δ, что для любой точки x, достаточно близкой к x_0, а именно такой, что |x−x_0|<δ, значение функции f в этой точке достаточно слабо отклонятся от её значения в точке x_0, а именно |f(x)−f(x_0)|<ε.

Это определение, как правило, требует некоторого умственного напряжения для понимания, но на самом деле означает ровно то, что мы говорили раньше: график функции не рвётся в точке x_0. Попробуем разобраться, почему так получается.

В определении фигурирует загадочная зависимость δ=δ(ε), индивидуальная для каждой функции в каждой точке. Давайте как-нибудь её упростим (возьмём простой частный случай) и посмотрим, что же это значит.

Ну, например, пусть δ(ε) не зависит от конкретной точки x_0 и имеет простейший вид
δ(ε)=L⋅ε,   L>0,
где L — некоторая достаточно малая константа. Тогда для непрерывной функции получаем свойство
|f(x)−f(x_0)|<ε   при   |x−x_0|<L⋅ε.
А это уже можно изобразить:

То есть геометрически это условие можно интерпретировать так: если взять произвольную точку на графике функции и нарисовать вокруг неё прямоугольник размера 2Lε× 2ε, то соответствующая часть графика должна уместиться в этот прямоугольник, то есть не вылезать за его пределы вверх и вниз (хотя вправо и влево, разумеется, график имеет право продолжаться). И это должно выполняться для любого сколь угодно маленького ε.

Поскольку высота прямоугольника убывает пропорционально ε, то если где-нибудь найдётся разрыв, для него это свойство непременно окажется невыполненным:

Достаточно немножко уменьшить ε, чтобы условие перестало выполняться в точке x_0=0. И взятие константы L побольше никак на это не повлияет.

Если мы вернёмся теперь к исходному определению, охватывающему весь без ограничений набор непрерывных функций (а наше упрощённое условие, конечно же, работает не всегда: например, ломается на бесспорно непрерывной f(x)=x^2), то поймём, что и оно подразумевает то же самое. Если где-то у функции есть разрыв, то есть этакая «ступенька» высотой, скажем, h, то как только мы возьмём в нашем определении ε<h, мы уже не сможем найти подходящего δ, потому что всегда найдутся две достаточно «соседние» точки такие, что |f(x)−f(x_0)|≥ h.

Отдельным классом непрерывных функций являются так называемые липшицевы функции, важные в теории дифференциальных уравнений. Функция называется липшицевой в точке x_0, если существует некоторая достаточно большая положительная константа L такая, что
|f(x)−f(x_0)|≤ L|x−x_0|
для всех x из области определения f. Если одна и та же константа L подходит для всех точек x_0 из области определения f, то f называется просто липшицевой.

Геометрически это выглядит так: нужно подобрать константу L такую, чтобы весь (да-да, совсем весь) график функции умещался в подсвеченной на рисунке области-«бабочке» независимо от выбора её центральной точки x_0:

Видно, что при L<1 для этой функции всё плохо (график где-нибудь да выползает за рамки подсвеченной области), а при L≥ 1 — хорошо. Значит, изображённая функция липшицева с константой Липшица, равной 1. (Из рисунка ясно, что если условие выполнилось для какого-то одного L, то оно выполнится и для всех бо́льших L. Так вот, константа Липшица функции f — это наименьшее L, при котором для неё выполняется условие липшицевости во всех точках.)

Для полноты картины приведём пример непрерывной функции, не являющейся липшицевой. Это функция f(x)=√{|x|}:

Здесь, на самом деле, все точки «хорошие» — кроме нуля. Если долго увеличивать график, то можно увидеть, что при x_0=0 даже при L=100 график корня выходит за допустимые границы. Дело тут в том, что в нуле корень возрастает практически вертикально — угол между двумя симметричными ветвями на этом графике равен 0^{\circ}. Мы ещё вернёмся к этому примеру и изучим подробно этот факт, когда будем изучать производные.

Наконец, функция называется непрерывной, если она непрерывна в каждой точке своей области определения D(f).

Логичным образом можно ввести и определение непрерывности на произвольном множестве: функция f называется непрерывной на множестве X, если она непрерывна в каждой точке этого множества. Множество всех непрерывных на заданном множестве X функций обозначается C(X); соответственно, фразу «функция f непрерывна на множестве X» можно записать как f∈{}C(X). (В дальнейшем мы непременно будем так делать.)

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

Опять-таки, со школы мы знаем закон равноускоренного движения материальной точки. Если в момент времени t=0 неподвижная точка начинает двигаться по прямой с ускорением a (знак которого определяет направление движения), то её положение в произвольный последующий момент времени t>0 описывается формулой
x(t)=(at^2) ⁄ (2) .
Если нарисовать график этой функции, то не возникает никаких сомнений в её непрерывности при любых значениях параметра a:

Но можем ли мы доказать факт непрерывности математически, используя определение, что подарил нам Огюстен Луи? Давайте попробуем.

Зафиксируем произвольное ускорение a. Это значит, что наше дальнейшее доказательство годится для любого a, но на протяжении доказательства a не изменяется (фиксировано!). Зафиксируем также произвольную точку t_0≥
0. Наша задача теперь — для любого сколь угодно маленького положительного ε подобрать δ такое, чтобы при |t−t_0|<δ выполнялось
≤ft|(at^2) ⁄ (2)−(at_0^2) ⁄ (2)\right|<ε .
Выражение |t−t_0|<δ и так проще простого, поэтому давайте подробнее распишем второе, в котором есть ε.
≤ft|(at^2) ⁄ (2)−(at_0^2) ⁄ (2)\right|=(|a|) ⁄ (2)
⋅≤ft|t^2−t_0^2\right|=(|a|) ⁄ (2)⋅|t−t_0|⋅|t+t_0| .
(Все ведь помнят формулу разности квадратов, верно?)

Итак, что же мы имеем? У нас уже есть свойство
|t−t_0|<δ .
Что же касается суммы, то её можно расписать так:
|t+t_0|=|(t−t_0)+(t_0+t_0)|≤|t−t_0|+2|t_0|≤δ+2t_0 .
В первом равенстве мы просто добавили и вычли под модулем одно и то же число. (Убедитесь, что вы понимаете следующее за ним неравенство, это стандартное неравенство для модуля суммы.)

Итого исходное соотношение расписывается в виде
≤ft|(at^2) ⁄ (2)−(at_0^2) ⁄ (2)\right|≤(|a|) ⁄ (2)
⋅δ⋅(δ+2t_0) .
(2.1)
Но нам-то нужно меньше ε! Ну, что ж, на самом деле мы подобрались к ответу довольно близко: если мы теперь научимся выбирать δ=δ(ε) таким, что
(|a|) ⁄ (2)
⋅δ⋅(δ+2t_0)<ε ,
(2.2)
наша цель окажется достигнутой!

Ну а подобрать такое δ уже достаточно просто. Смотрите. Пусть δ всегда будет меньше единицы. (Скорее всего, так и будет. Мы же рассматриваем всё для маленьких ε и δ.) Тогда наше выражение (2.1) упрощается:
(|a|) ⁄ (2)⋅δ⋅(δ+2t_0)≤
(|a|) ⁄ (2)⋅δ⋅(1+2t_0) ,
и теперь достаточно подобрать δ так, чтобы вместо непонятного (2.2) выполнялось
(|a|) ⁄ (2)⋅δ⋅(1+2t_0)<ε .
А это неравенство при учёте того обстоятельства, что a и t_0 у нас фиксированные и не зависят от ε, уже простейшим образом разрешается: достаточно взять δ такое, что
δ<(2ε) ⁄ (|a|(1+2t_0)) .
Например, просто взять в два раза меньше, сократив двойку:
δ(ε)=(ε) ⁄ (|a|(1+2t_0)) .
Ну а для пущей строгости нашего доказательства возьмём
δ(ε)=\mathrm{min} ≤ft{(ε) ⁄ (|a|(1+2t_0)),
1\right} .
Мы берём этот минимум, чтобы удостовериться, что δ по-честному всегда не больше единицы, как мы предполагали ранее.

Ура!

Итак, мы получили искомую функцию δ(ε), которая обеспечивает выполнение определения непрерывности в данной точке t_0. Тут стоит обратить внимание на то, что само t_0 очень даже фигурирует в формуле этой функции в качестве постоянного параметра.

Что ж, кажется, мы убедились, что наше определение более-менее адекватно отражает суровую реальность. Функция непрерывна — значит, можно подобрать δ(ε). Непрерывна — нельзя (смотри пример в начале параграфа). Правда, подобрать δ(ε) оказалось несколько сложновато. Что же мы будем делать, если вместо скромной at^2⁄2 у нас будет функция посложнее? Что ж, тут-то и всплывёт главное достоинство строго математического определения — мы сможем доказать непрерывность многих функций, даже не обращаясь к их конкретному виду. Например, вместо того, чтобы ковыряться в ε-δ-терминологии с функцией вроде
f(x)=365x^6+31x^6+7x^5−2x^4+x ,
мы сможем просто сказать, что это сумма произведений непрерывных функций, а значит, автоматически непрерывная функция.

2.1. Арифметика непрерывных функций

Понятно, что на функциях вещественной переменной можно ввести естественную арифметику: если есть две функции f и g, логично назвать их суммой функцию