РАСЧЕТ ПЛОЩАДИ СЛОЖНОЙ ФИГУРЫ МЕТОДОМ ИМИТАЦИОННОГО МОДЕЛИРОВАНИЯ
 
Разработка программы, позволяющей с помощью метода имитационного моделирования рассчитать площадь сложной фигуры, ограниченной сверху кривой U=Y1(x) , снизу V=Y2(x)
  1. Для решения данной задачи применим следующий метод.
    Ограничим заданную фигуру прямоугольником, стороны которого проходят:
                     через точки максимального и минимального значения функций и параллельны осям абсцисс;
                     через левую и правую граничные точки области определения аргумента и параллельны осям ординат
   Используя датчик случайных чисел разыгрываются координаты случайной точки из этого прямоугольника .   Проверяем попадаете точки в заданную фигуру. Зная площадь прямоугольника и отношение попавших точек к их общему числу разыгранных, можно оценить площадь интересующей нас фигуры.     
2.    Технические характеристики объекта исследования:    
      2.1. Диапазон значений параметров задачи.           
      Множество кривых ограничим полиномами третьего порядка, в виду того что полиномы более высокого порядка сильно увеличивают время вычисления. Причем для наглядности решения вполне достаточно порядка "3".           
      Коэффициенты полинома ограничим диапазоном   [-100,100]
      Область определения ограничим диапазоном [-100,100]
Эти ограничения введены для более наглядного решения задачи, и изменить их не с технической точки зрения не сложно.
3. Решение задачи.
Данная задача решена в среде Turbo C. Для решения потребовалось общую задачу разбить на    несколько      небольших      задач (процедур)
А именно отдельно( в виде процедур) были решены задачи        
    -ввод параметров;                                          |
                     процедура     get_poly                                 |
                                                                               |
      -сообщение об ошибке при вводе;                         |            Файл WINDOW.C
                     процедура     talkerror                                 |
                                                                               |
      -рисование рамки окна;                                |
                     процедура      border                                    |
 
         -вычисление минимального и                             |           
        максимального   значении функций ;                    |
                    процедура      f_max                         |
                                                                               |           
      -вычисление значения полинома в                        |
                заданной точке;                                               |            Файл   MATIM.C
                     процедура      fun                              |
                                                                               |           
     -вычисление корней кубичного                               |           
              уравнения;                                                          |
                     процедура     f_root                          |
 
   
      -вычисление интеграла численным                      |
           методом;                                                    |
                      процедура     i_num                                    |
                                                                               |            Файл F_INTEGER.C
       -вычисление интеграла с помощью                      |
        имитационного моделирования;              |
                        процедура     i_rand                                    |
 
      -инициализация графического режима                 |
                      процедура     init                              |
                                                                               |
      -обводка непрерывного контура                |            Файл DRAFT.C
                       процедура     f_draft                                   |           
                                                                               |
      - вырисовка осей координат                                  |
                         процедура    osi                             |
 
     -вырисовки графиков функций и                |            Файл DRAFT_F.C
       штриховка заданной площади                                |
                       процедура     draft_f                                   |
 
      -вырисовка графиков вычисления                       |
       площади разными методами и вывод     |            Файл DRAFT_N.C
       таблицы результатов вычисления                      |
                     процедура    draft_n                                    |           
         Схема алгоритма   имеет вид:
 
 
4. Описание процедур используемый в программе.
4.1 Файл WINDOW.C.
4.1.1 Процедура ввода параметров.
void get_poly( float *b3,float *b2,float *b1,float *b0, //-коэффициенты полинома Y1
                       fliat *c3,float *c2,float *c1,float *c0,   //-коэффициенты полинома Y2
                       float *x1,float *x2,                   // область определения [x1,x2]
                        int *N )                                 // количество обращений к генератору                                                   //случайных чисел
4.1.2 Процедура рисования рамки окна.
void border(int sx, int sy, int en, int ey)   // рисует рамку с координатами левого верхнего                                                    // угла (sx,sy)   и координатами правого нижнего                                                   // угла (ex,ey)
      4.1.3 Процедура сообщения об ошибке при вводе.
void talkerror(void)   -
Процедура подает звуковой сигнал и выводит на экран сообщение об ошибке при вводе
4.2. Файл MATIM.C
4.2.1 Процедура вычисления максимального и минимального значений функций на заданном интервале.
void f_max(float b3,float b2,float b1,float b0, //-коэффициенты полинома   Y1
                       fliat c3,float c2,float c1,float c0,   //-коэффициенты полинома Y2
                        float x1,float x2,                   // область определения [x1,x2]
                       float *amin, float *amax)       // минимальное и максимальное значения                                                       //                                  функций                                                                   
4.2.2 Процедура вычисления значения полинома в данной точке.
float fun(float b3,float b2,float b1,float b0, //-коэффициенты полинома
                       float   x)               
Возвращает значение полинома в точке х
4.2.3 Процедура вычисления корней кубичного уравнения
int f_root(float b3,float b2,float b1,float b0, //-коэффициенты полинома   Y1
                       fliat c3,float c2,float c1,float c0,   //-коэффициенты полинома Y2
                       float x1,float x2,                   // область определения [x1,x2]
                                                       
         float e,                                               // точность вычисления корней
        float *k1,float *k2,float *k3)       // значения   корней                                                                                                //   функций                              
Возвращает количество   действительных корней на данном интервале
4.3. Файл F_INTEGER.C
4.3.1 Процедура вычисления площади сложной фигуры численным методом.
float f_num(float b3,float b2,float b1,float b0, //-коэфициенты полинома   Y1
                       fliat c3,float c2,float c1,float c0,   //-коэфициенты полинома Y2
                       float x1,float x2)                  // область определения [x1,x2]
Вычисляет площадь сложной фигуры
4.3.2   Процедура вычисления площади сложной фигуры c помощью метода имитационного моделрования
float f_(float b3,float b2,float b1,float b0, //-коэфициенты полинома   Y1
                       fliat c3,float c2,float c1,float c0,   //-коэфициенты полинома Y2
                       float x1,float x2,                 // область определения [x1,x2]
                       float fmin,float fmax,           // минимальное и максимальное значения                                                             //функций на данном интервале
                         int n)                                     // количество обращений к генератору                                                   // случайный чисел
     
Вычисляет площадь сложной фигуры с помощью метода имитационного моделирования
4.4 Файл DRAFT.C
4.4.1 Процедура инициализации графического режима.
void init (void)
4.4.2 Процедура обводки непрерывного контура.
void f_draft (float b0,float b1,float b2,float b3, //-коэфициенты полинома  
                                       float x1,float x2)                  // область оп