RSS    

   Расчет площади сложной фигуры с помощью метода имитационного моделирования - (реферат)

Расчет площади сложной фигуры с помощью метода имитационного моделирования - (реферат)

Дата добавления: март 2006г.

Расчет площади сложной фигуры с помощью метода имитационного моделирования

Задание: Разработать программу, позволяющую с помощью метода имитационного моделирования рассчитать площадь сложной фигуры, ограниченной сверху кривой U=Y1(x) , снизу V=Y2(x).

    1. Для решения данной задачи применим следующий метод.

Ограничим заданную фигуру прямоугольником, стороны которого проходят: через точки максимального и минимального значения функций и параллельны осям абсцисс;

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

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

    2. Технические характеристики объекта исследования:
    2. 1. Диапазон значений параметров задачи.

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

    Коэффициенты полинома ограничим диапазоном [-100, 100] .
    Область определения ограничим диапазоном [-100, 100].

Эти ограничения введены для более наглядного решения задачи, и изменить их не с технической точки зрения не сложно.

    3. Решение задачи.

Данная задача решена в среде Turbo C. Для решения потребовалось общую задачу разбить на несколько небольших задач (процедур).

    А именно отдельно( в виде процедур) были решены задачи
    Файл WINDOW. C
    -ввод параметров;
    процедура get_poly
    -сообщение об ошибке при вводе;
    процедура talkerror
    -рисование рамки окна;
    процедура border
    Файл MATIM. C
    -вычисление минимального и
    максимального значении функций ;
    процедура f_max
    -вычисление значения полинома в
    заданной точке;
    процедура fun
    -вычисление корней кубичного
    уравнения;
    процедура f_root
    Файл F_INTEGER. C
    -вычисление интеграла численным
    методом;
    процедура i_num
    -вычисление интеграла с помощью
    имитационного моделирования;
    процедура i_rand
    Файл DRAFT. C
    -инициализация графического режима
    процедура init
    -обводка непрерывного контура
    процедура 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) // область определения [x1, x2]

    4. 4. 3 Процедура вырисовки осей координат.

void osi ( float x1, float x2, // область определения функций float b) // маштабный коэфициент расчитывается по формуле

    // b= j - Fmin*(i-j) / (Fmax - Fmin)
    // где i, j - задают положение графика на экране

// Fmin, Fmax - минимальное и максимальное значения //функций на данном интервале

    4. 5 Файл DRAFT_F.
    4. 5. 1 Процедура вырисовки графиков функций.

void draft_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 k, int i, int l, int j) // координаты, задающие положение //графика на экране

    4. 6 Файл DRAFT_N.

4. 6. 1Процедура вырисовки графиков значений полщадей расчитанных числвым методом и методом имитационного моделирования в зависимости от количества обращений к генератору случайных чисел.

void draft_e (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, // минимальное и максимальное значения //функций на данном интервале float Sn, // площадь рассчитанная числовым методом

int k, int i, int l, int j) // координаты, задающие положение //графика на экране

    4. 7 Файл SQ. C

Все файлы объединены в главной программе SQ. C, которая является основной и координирует работу процедур.

    5 Использование программы.

Для использования данной программы необходима операционная среда MS DOS, файл egavega. bgi, и собственно сама скомпилированная программа sq. exe.

    6 Исходный текст программы дан в приложении №1.
    7 Тесовый пример показан в приложении №2.
    8 Список использованной литературы.

1. Язык программирования Си для персонального компьютера. С. О. Бочков, Д. М. Субботин. 2. С++ . Описание языка программирования. Бьярн Страустрап. 3. TURBO C. User's Guide. Borland International, Inc. 1988... 4. TURBO C. Reference Guide. Borland International, Inc. 1988.

    9 Заключение.

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

    9. 2 Рекомендации по улучшению программы.

Страницы: 1, 2, 3


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.