Oбъектно-ориентированная реализация числовых функций
Цель лекции: Научить создавать классы, для описания функций и реализации операций над функциями.
Пусть и
- произвольные множества. Мы под абстрактной функцией
будем понимать правило, которое элементу
множества
сопоставляет элемент множества
. Записывается это
в виде








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

Заметим, что мы воспользовались типом . Этот тип является
родительским для всех объектов C#, поэтому возможно в классе
хранить ссылку на любой объект (элемент множества
).
Абстрактный класс представляющий функцию, заданную на некотором
отрезке , выглядит следующим образом









Покажем как выглядит класс для описания функции .

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

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




Мы реализовали класс для представления функций, убедились, что
наши классы в состоянии выполнять различные действия с функциями.
Однако в наших вычислениях мы использовали тип для
представления действительных чисел. Этот подход означает, что мы
рассматриваем лишь подмножество рациональных чисел. Но из прошлой
лекции мы знаем, что на компьютере можно реализовать и большее ---
машина Поста (а значит теоретически и любой компьютер) может
оперировать конструктивными действительными числами. Поэтому
естественно рассматривать функции как отображение одного
конструктивного действительного числа в другое конструктивное
действительное число. В конструктивной математике есть
фундаментальное понятие - конструктивная функция. Однако,
как известно, единого определения конструктивной функции в строгих
рамках конструктивной математики не существует.
Мы дадим определение функции Маркова. Но сначала мы должны
ответить на естественный вопрос - а какие конструктивные
действительные числа называются равными? Если исходить из того,
что конструктивно действительное число - это пара алгоритмов, то
из неравенства этих алгоритмов еще не следует неравенство
конструктивных действительных чисел. Поэтому мы будем говорить,
что равно
и писать
, если существует такая вычислимая
функция
, что


Пусть - некоторое множество конструктивных действительных
чисел такое, что если
и
- другое конструктивное
действительное число и
, то
. Конструктивной функцией
или функцией Маркова называется такой алгоритм
, что
- Для любого
определено
и
есть конструктивное действительное число.
- Если
и
суть конструктивные действительные числа,
и
, то
.
Ключевые термины
Абстрактная функция - однозначное отображение одно множества в другое.
Конструктивная функция - алгоритм сопоставляющий одному конструктивному действительному числу другое конструктивное действительное число.
Область определения функции - множество на, котором определена функция.
Краткие итоги: Реализован абстрактный класс на языке C#, реализующий функции. Разработаны классы, реализующие конкретные числовые функции и операции над ними.