Практикум по курсу "Объектно-ориентированное программирование" на языке C#. Андрианова А.А - 59 стр.

UptoLike

58
Ограничение может быть представлено следующим образом:
функция в левой части тип ограничения правая часть
f (x,y) (=, <, >, ≥, ≤,
) C (const)
Для задания ограничения требуется знать функцию его левой части,
константу, стоящую в правой части и тип неравенства/равенства.
Определим функции 1-ого и 2-ого порядков, которые будут
использоваться в ограничениях:
линейная
byaxyxf ),(
;
эллиптическая –
2
2
0
2
2
0
)()(
),(
b
yy
a
xx
yxf
;
гиперболическая –
2
2
0
2
2
0
)()(
),(
b
yy
a
xx
yxf
;
параболическая –
pxyyyxf 2)(),(
2
0
.
Линейная функция задается с помощью коэффициентов a и b. Для
определения эллиптической и гиперболической функций требуется задать
коэффициенты a и b, а также координаты точки (x0, y0), задающей смещение
графика функции относительно начала координат. Параболическая функция
задается параметром p и смещением графика по оси OY на величину y0.
Для определения функции в левой части ограничения можно объявить
следующий класс Function:
// класс, задающий функцию в левой части ограничения
class Function
{
int typeFunction; // тип кривой: 1 линейная,
// 2 эллиптическая,
// 3 гиперболическая,
// 4 параболическая
// параметры, задающие функции разных типов
double a, b, p, x0, y0;
. . .
}
// перечисление для определения типа ограничения
// le <=, ge >=, e =, l <, g >, n <>
enum TypeInequation { le, ge, e, l, g, n };
     Ограничение может быть представлено следующим образом:

     функция в левой части          тип ограничения                       правая часть
            f (x,y)                 (=, <, >, ≥, ≤,  )                    C (const)

     Для задания ограничения требуется знать функцию его левой части,
константу, стоящую в правой части и тип неравенства/равенства.
     Определим функции 1-ого и 2-ого порядков, которые будут
использоваться в ограничениях:
         линейная – f ( x, y)  ax  by ;
                                       ( x  x0 ) 2 ( y  y 0 ) 2
         эллиптическая – f ( x, y )                            ;
                                            a2           b2
                                           ( x  x0 ) 2 ( y  y 0 ) 2
         гиперболическая – f ( x, y )                              ;
                                               a2           b2
         параболическая – f ( x, y)  ( y  y0 ) 2  2 px .
      Линейная функция задается с помощью коэффициентов a и b. Для
определения эллиптической и гиперболической функций требуется задать
коэффициенты a и b, а также координаты точки (x0, y0), задающей смещение
графика функции относительно начала координат. Параболическая функция
задается параметром p и смещением графика по оси OY на величину y0.
      Для определения функции в левой части ограничения можно объявить
следующий класс Function:


   // класс, задающий функцию в левой части ограничения
   class Function
   {
      int typeFunction; // тип кривой: 1 – линейная,
                         //             2 – эллиптическая,
                        //              3 – гиперболическая,
                        //              4 – параболическая
      // параметры, задающие функции разных типов
      double a, b, p, x0, y0;
      . . .
   }


   // перечисление для определения типа ограничения
   // le – <=, ge – >=, e – =, l – <, g – >, n – <>
   enum TypeInequation { le, ge, e, l, g, n };



                                                                                     58