Опубликован: 18.05.2011 | Доступ: свободный | Студентов: 968 / 105 | Оценка: 4.40 / 4.20 | Длительность: 12:30:00
Лекция 10:

Объектно-ориентированный подход в моделировании функциональных пространств

< Лекция 9 || Лекция 10: 12 || Лекция 11 >
Аннотация: Рассмотрены вопросы объектно-ориентированного моделирования абстрактных пространств: метрические пространства, нормированные пространства, гильбертовы пространства. Приведены примеры для функциональных пространств.

Цель лекции: Реализовать важный инструмент современной математики - функциональные пространства. Показать их применимость для реализации вычислительных процедур.

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

Метрическим пространством называется пара (\Bbb{X},\varrho), где \Bbb{X} некоторое множество произвольной природы, а \varrho числовая функция

\varrho:\Bbb{X}\times\Bbb{X}\to\Bbb{R},
удовлетворяющая следующим условиям для любых x,y,z\in\Bbb{X}:

  • \varrho(x,y)\ge0
  • \varrho(x,y)=0 тогда и только тогда, когда x=y
  • \varrho(x,z)\le\varrho(x,y)+\varrho(y,z)

В этом случае функция \varrho называется метрикой или расстоянием.

Метрика позволяет ввести фундаментальное понятие сходимости в метрическом пространстве. Пусть задано метрическое пространство (\Bbb{X},\varrho), которое мы будем обозначать \Bbb{X}_\varrho или просто \Bbb{X}, если это не приводит к недоразумению. Последовательность x_n сходиться к элементу x_0, если для любого \varepsilon>0 существует такое N=N(\varepsilon), что

\varrho(x_n,x_0)<\varepsilon,
для всех n>N. В этом случае пишут
x_0=\lim\limits_{n\to\infty}x_n.
Последовательность x_n называется фундаментальной, если для любого \varepsilon >0 существует такое N=N(\varepsilon), что
\varrho(x_p,x_q) <\varepsilon,
для всех p,q>N. Если метрическое пространство такое, что любая фундаментальная последовательность имеет предел, то такое пространство называется полным метрическим пространством.

Приведем некоторые примеры метрических пространств.

Пространство \Bbb{R}^n с евклидовой метрикой

\varrho(x,y)=|x-y|=\sqrt{(x_1-y_1)^2+\cdots+(x_n-y_n)^2}
является полным метрическим пространством.

Пространство непрерывных на [a,b], -\infty<a<b<\infty функций C[a,b] является полным метрическим пространством с метрикой

\varrho(f,g)=\max\limits_{x\in[a,b]}|f(x)-g(x)|.
Это пространство в отличии от \Bbb{R}^n является бесконечномерным функциональным пространством.

Во множестве непрерывных на [a,b] функций можно ввести другую метрику

\varrho(f,g)=\int\limits_a^b|f(x)-g(x)|dx.
Это метрическое пространство мы обозначим через L[a,b]. Пространство L[a,b] не является полным. Например последовательность f_n(x)=x^n является фундаментальной на в C[0,1], но не имеет предела в пространстве L[0,1].

Реализуем теперь абстрактное метрическое пространство на C#.

\begin{verbatim}
    abstract class TMetricSpace
    {
        public abstract double rho(object x, object y);
    }
\end{verbatim}
Это класс-заготовка для произвольного метрического пространства. Реализуем метрическое пространство \Bbb{R}^n. Для этого сначала нам потребуется создать класс, представляющий n -мерный вектор.
\begin{verbatim}
    class TRn
    {
        double[] A;
        int N = 0;

        public TRn(int N)
        {
            this.N = N;
            A = new double[N + 1];
        }
        public double this[int index]
        {
            get { return A[index]; }
            set { A[index] = value; }
        }
        public int GetN()
        {
            return N;
        }
    }
\end{verbatim}
А теперь создадим класс являющийся наследником от TMetricSpace.
\begin{verbatim}
    class TRnMetric : TMetricSpace
    {
        public override double rho(object x, object y)
        {
            TRn X, Y;

            X = (TRn)x;
            Y = (TRn)y;

            double res = 0;

            for (int i = 1; i <= X.GetN(); i++)
            {
                res += (X[i] - Y[i]) * (X[i] - Y[i]);
            }

            return Math.Sqrt(res);
        }
    }
\end{verbatim}

Проверим "в бою" наши классы. Попробуем вычислить длину диагонали единичного куба.

\begin{verbatim}
    TRn A = new TRn(3);
    TRn B = new TRn(3);

    A[1] = 0;
    A[2] = 0;
    A[3] = 0;
    B[1] = 1;
    B[2] = 1;
    B[3] = 1;

    TRnMetric M = new TRnMetric();

    Console.WriteLine("R = {0}", M.rho(A, B));
\end{verbatim}
Запустим и увидим:
\begin{verbatim}
R = 1.73205080756888
\end{verbatim}
Длина диагонали единичного куба, как раз, и равна R=\sqrt{3}.

Среди метрических пространств есть такие пространства, в которых можно ввести не только расстояние между элементами, но и длину каждого элемента. Эта длина называется нормой. Линейное пространство \Bbb{X} называется нормированным, если в нем можно ввести норму для каждого элемента, обозначаемую \|x\|_\Bbb{X}, удовлетворяющую следующим условиям для всех x,y\in\Bbb{X} и \lambda\in\Bbb{C}

  • \|x\|\ge0
  • \|x\|=0 тогда и только тогда, когда x=0
  • \|\lambda x\|=|\lambda|\|x\|
  • \|x+y\|\le\|x\|+\|y\|

Сразу заметим, что любая норма порождает в нормированном пространстве метрику по формуле

\varrho(x,y)=\|x-y\|.
Нормированное пространство, являющаяся полным, называется банаховым пространством. Рассмотренные ранее примеры метрических пространств являются также и нормированными пространствам:
\|x\|_{\Bbb{R}^n}=\sqrt{x_1^2+\cdots+x_n^2},
\|f\|_{C[a,b]}=\max\limits_{x\in[a,b]}|f(x)|,
\|f\|_{L[a,b]}=\left(\int\limits_a^b|f(x)|^2dx\right)^{1/2}.
Соответственно пространства \Bbb{R}^n и C[a,b] являются банаховыми пространствами, а пространство L[a,b] только нормированным.

< Лекция 9 || Лекция 10: 12 || Лекция 11 >