В этом курсе мы изучим функции, которые представляют важную объединяющую концепцию в математике. В компьютерной науке функции — это компоненты программ, которые формализуют отношения между входом и выходом для вычислений. Проблема проектирования комбинаторной схемы часто начинается с определения функции, которая описывает поведение схемы для каждого возможного входа.
Когда мы используем функции, чтобы описать поведение схемы, мы можем использовать различные методы для построения комбинаторной схемы с таким же поведением. Поскольку функции — это особые виды множеств или отношений, мы будем изучать их здесь и использовать идеи, которые представлены в других курсах по дискретной математике.
В этом уроке мы расскажем, что такое функции и в чем заключаются их фундаментальные свойства. Также рассмотрим операции над функциями и вытекающие из них свойства. Еще приведем примеры функций с каждым свойством, чтобы помочь понять и различить их.
Что такое функция
Функция — это черный ящик, в который помещают объекты, а выходят другие. Функция определяется двумя фундаментальными свойствами:
-
Если объект введен, то что-то должно выйти
-
Для каждого объекта на входе существует только один возможный выход
Функции важны в математике, потому что они описывают окружающий мир как систему. Все вокруг нас можно воспринимать как систему — то есть некую структуру, которая состоит из входов, обработки и выходов.
Разберем подробнее, что это значит. Возьмем для примера нервную систему человека:
-
Вход: Мы дотронулись до чайника, кожа ощутила жар от него и отправила сигнал в мозг
-
Обработка: Мозг принял сигнал, обработал его и отправил мыщцам команду «Отдернуть руку»
-
Выход: Мыщцы приняли сигнал, мы убрали руку от горячего чайника
Как видите, здесь есть вход, обработка и выход — так работают системы. То, что происходит на этапе обработки, можно назвать функцией. Например, прием сигналов и их обработка — это и есть функция нашего мозга.
Таких систем внутри человека много, поэтому тело — это система систем. Таким же образом устроено все вокруг нас: животные и растения, природные явления, человеческое общество, компании, науки, идеи и концепции. Разделяя окружающий мир на системы, мы пытаемся лучше понять его, выяснить его характеристики, выстроить свою линию поведения.
Разберем работу функций и ее свойства на примерах.
Как представлять задачи как функции
Для начала рассмотрим простой пример. Представьте классную комнату, в которой каждый ученик сидит на стуле. Мы можем узнать, на каком стуле сидит каждый ученик в классе. Для этого можно создать функцию и дать ей какое-то подходящее по смыслу название — например, .
Кроме таких простых задач, можно решать более неочевидные. Функцию можно задавать даже там, где у нас недостаточно информации.
Например, можно создать функцию — она принимает на вход любого человека из издания Британской энциклопедии и выводит его дату рождения. Точная дата известна не всегда, но она точно есть — поэтому такая функция может существовать.
Разберем еще один пример. Cоздадим функцию , которая принимает на вход имя человека и выводит упорядоченную пару родителей .
Обратите внимание, что в обратную сторону это не сработает. Не получится создать функцию , которая выбирает ребенка человека. Дело в том, что у некоторых людей нет детей — значит, в некоторых случаях ни один объект не может быть выведен.
Некоторые люди также имеют более одного ребенка, из которых можно выбирать. В этом случае функция не будет знать, какого ребенка выводить. Однако можно создать функцию , которая присваивает каждому человеку множество его детей. Если у человека нет детей, то результатом функции будет пустое множество .
Как видите, любую задачу можно представить в виде функции. Если у нас есть задача, к ней всегда можно придумать обозначения и представить всю задачу в виде функции.
А теперь посмотрим на примеры из математики.
Пример 1:
Можно создать — это функция, которая принимает на вход любое вещественное число и всегда выдает
Это простая функция, потому что у нее мало переменных.
Пример 2:
Пусть — любое множество. От этого можно создать — функцию, которая принимает на вход любой из и выдает на выходе тот же .
В таком случае она будет называться функцией тождества на .
Пример 3:
Можно создать функцию , которая принимает на вход любое вещественное число и выдает целое число — другими словами, происходит усечение дробной части введенного числа:
Пример 4:
Похожим образом cработает функция , которая принимает на вход любое вещественное число и выводит наименьшее целое число, большее или равное введенному числу:
Эту функцию также называют функцией наибольшего целого числа.
Какими терминами описывать функции
Мы познакомились с простыми задачами, которые можно представить в виде функций, но бывают и более сложные случаи. Тогда нам требуются дополнительные термины, которые помогут лучше описать функцию. Познакомимся с базовой лексикой на примере функции из начала урока:
Область функции — это множество всех вещей, которые можно подать на вход, чтобы получить некоторый результат. Область обычно очевидна из определения функции. Например, область функции — это множество всех студентов в классе.
Область действия функции — это множество всех вещей, которые можно получить на выходе. Область действия — это множество всех занятых стульев в классе. Если известна область действия функции, можно определить ее диапазон, применяя функцию к каждому элементу области.
Кодомен функции — это множество всех значений, которые могут быть потенциальными выходами. Например, кодомен функции — это множество всех стульев в классе. Но также можно сказать, что кодомен — это множество всех занятых стульев.
Почему здесь есть разные варианты? Дело в том, что иногда кодомен нельзя определить только из описания функции. Нужно учитывать остальные обсуждения задачи. При менее формальном подходе кодомен определяется неявно. Например, кодоменом большинства функций неявно является , в других случаях он равен диапазону.
Выводы
В этом уроке мы познакомились с понятием функции и узнали, зачем она применяется. Функцию часто определяют как черный ящик, но официально она считается правилом или видом множества. В этом курсе мы разберем оба определения. Также мы обсудим функцию как правило, ведь этот подход часто упоминается в курсах по программированию.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
- Статья «Как учиться и справляться с негативными мыслями»
- Статья «Ловушки обучения»
- Статья «Сложные простые задачи по программированию»
- Вебинар «Как самостоятельно учиться»
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.