Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Частичные функции Функции

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

  • Вход — любая строка символов, которую ввели в программу

  • Выход — любая строка символов, которую вывела программа после выполнения

  • Функция — операция, которая превращает строку со входа в строку на выходе

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

В таких случаях вычисляется частичная функция, которую мы и рассмотрим в этом уроке.

Зачем нужны частичные функции

Для начала вспомним, что числа бывают разных видов, в том числе:

  • Вещественные — это любые числа, включая десятичные и дробные (например, и )

  • Натуральные — это только целые числа (например, и )

А теперь возьмем функцию и определим ее для разных видов чисел.

В первом случае все сработает хорошо:

  • Мы заранее ограничим область функции вещественными числами

  • Потом возьмем на вход вещественные числа

  • Применим функцию

На выходе получим тоже вещественные числа:

  • Если , то

  • Если , то

  • Если , то

Здесь функция сработает во всех случаях, так что ее можно считать полностью определенной функцией.

Во втором случае все сработает не так гладко:

  • Мы заранее ограничим область функции натуральными числами

  • Потом возьмем на вход натуральные числа

  • Применим функцию

На выходе мы получим такой результат:

  • Если , то

  • Если , то

  • Если , то

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

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

Другими словами, это частичная функция — то есть функция, которая работает только частично. Она обозначается так:

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

Как обозначаются частичные функции

Теперь разберем другой пример частичной функции.

Предположим, что мы изучаем таблицу с почтовыми расходами. В ней обозначено, сколько стоит пересылка посылок разного веса:

Вес

Стоимость

0-1 кг

$1

1-5 кг

$3

5-10 кг

$5

10-15 кг

$7

В этой таблице обозначены диапазоны. Например, за три доллара можно отправить груз, который весит более 1 кг, но меньше или равно 5 кг.

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

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

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

Формальное определение частичной функции

Теперь посмотрим на частичные функции с точки зрения математики. Ее формальное определение можно сформулировать так:

Частичная функция с областью определения и кодоменом — это подмножество . При этом для каждого существует одно самое большое с .

Такая функция называется «частичной функцией из в » и обозначается так:

Областью частичной функции является множество:

для некоторого

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

Примеры частичных функций

Чтобы закрепить знания о частичных функциях, разберем несколько примеров.

Пример 1

Вычитание на — это частичная функция:

  • Ее область определения —

  • Ее кодомен —

Для не определено на , поэтому область вычитания можно обозначить так:

Диапазон равен . Чтобы показать, что произвольное находится в диапазоне , заметим, что .

Пример 2

Деление на — это частичная функция. Ее область определения — , ее кодомен — , но ее область — это:

Ее диапазон — .

Пример 3

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

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

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

eyJpZCI6IjczMmJiZTYzMWRlOTQzOWQzMDNkYmRiYTI5YzhiMDYyLnBuZyIsInN0b3JhZ2UiOiJjYWNoZSJ9?signature=563f5470173a1a9450e49148882ef53a757342e93e5bcefbedea1ffb01dc4947

Выводы

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


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Об обучении на Хекслете

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»
Изображение Тото

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