Реферат: Расчет площади сложной фигуры с помощью метода имитационного моделирования - текст реферата. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Реферат

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

Банк рефератов / Математика

Рубрики  Рубрики реферат банка

закрыть
Категория: Реферат
Язык реферата: Русский
Дата добавления:   
 
Скачать
Архив Zip, 39 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникального реферата

Узнайте стоимость написания уникальной работы

17 Расчет площади сложной фигуры с помощью метода имитационного модел ирования Задание : Разработать программу , позволяющую с помощью метода имитационного моделирования рассчитать площадь сложной фигуры , ограниченной сверху кривой 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 Файл WINDO W.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 c 0, //-коэффициенты полинома 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] fl oat 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) // область определения [x 1,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 Internatio nal, Inc. 1988. .4. TURBO C. Reference Guide. Borland International, Inc. 1988. 9 Заключение. 9.1 Сопоставление результатов работы с тербованием задания. Сопоставляя результаты работы с требованием задания , можно сказать что задача решена в полной мере , з а исключением , быть может общности относительно возможности расчета для многие классов функций . Но решение более общей задачи ( т.е . возможность расчета для многих классов функций ) представляется значительно более громоздким , и вообще является отдельной з адачей . Поэтому автор не счел нужным разрабатывать алгоритм ввода многих функций и заострил внимание собственно на самой задаче - расчете площади сложной фигуры с помощью метода имитационного моделирования и сравнение этого метода с числовыми методами. 9. 2 Рекомендации по улучшению программы. При разработке программы автор упустил возможность работы с числовыми массивами . Поэтому , можно улучшить программу переписав ряд процедур под массивы , что сделает программу менее массивной и более наглядной . Широкое возможности по улучшению программы в области разработки алгоритмов ввода различный классов функций . Приложение 1. Текст программы. Файл sq.c /* П pог pамма SQ основная */ #include #include #include #include #include #include "matim.c" #include "window.c" #include "f_integr.c" #include "draft.c" #include "draft_f.c" #include "draft_e.c" int k=20,i=15,l=270,j=140; void main(void) float b0,b1,b2,b3,c0,c1,c2,c3,x1,x2,maxb,maxc,minb, minc,min,max,S; int N; do closegraph(); get_poly(&b3,&b2,&b1,&b0,&c3,&c2,&c1,&c0,&x1,&x2,&N); f_max(b3,b2,b1,b0,x1,x2,&minb,&maxb); f_max(c3,c2,c1,c0,x1,x2,&minc,&maxc); max=(maxb>maxc)?maxb:maxc; min=(minb #include #include #include #include /* Вычисление максимального и минимального значения функции на заданом инте pвале */ void f_max(float a3,float a2,float a1,float a0,float x1,float x2,float *amin,float *amax) float dx,x,Fx,Fx1,Fmax,Fmi n; dx=(x2-x1)/500; x=x1; Fx1=a3*x*x*x+a2*x*x+a1*x+a0; Fmax=Fx1; Fmin=Fx1; do x=x+dx; Fx=a3*x*x*x+a2*x*x+a1*x+a0; if (Fx>=Fmax) Fmax=Fx; if (Fx<=Fmin) Fmin=Fx; while ( x #include #include #include #include /* функция p исования p амки окна */ void border(int sx,int sy,int ex,int ey) int i; for (i=sx+1;i100) talkerror(); goto B3; B2: gotoxy(k1,k+1); puts("b2= "); gotoxy(k1+4,k+1); gets(bc2); sscanf(bc2,"%f",&b2); if (fabs(b2)>100) talkerror(); goto B2; B1: gotoxy(k1,k+2); puts("b1= "); gotoxy(k1+4,k+2); gets(bc1); sscanf(bc1,"%f",&b1); if (fabs(b1)>100) talkerror(); goto B1; B0: gotoxy(k1,k+3); puts("b0= "); gotoxy(k1+4,k+3); gets(bc0); sscanf(bc0,"%f",&b0); if (fabs(b0)>100) talkerror(); goto B0; C3: gotoxy(k2,k); puts("c3= "); gotoxy(k2+4,k); gets(cc3); sscanf(cc3,"%f",&c3); if (fabs(c3)>100) talkerror(); goto C3; C2: gotoxy(k2,k+1); puts("c2= "); gotoxy( k2+4,k+1); gets(cc2); sscanf(cc2,"%f",&c2); if (fabs(c2)>100) talkerror(); goto C2; C1: gotoxy(k2,k+2); puts("c1= "); gotoxy(k2+4,k+2); gets(cc1); sscanf(cc1,"%f",&c1); if (fabs(c1)>100) talkerror(); goto C1; C0: gotoxy(k2,k+3); puts("c0= "); gotoxy(k2+4,k+3); gets(cc0); sscanf(cc0,"%f",&c0); if (fabs(c0)>100) talkerror(); goto C0; X1: gotoxy(k1,k+6); puts("x1= "); gotoxy(k2,k+6); puts("x2= "); gotoxy(k 1+4,k+6); gets(x1c); sscanf(x1c,"%f",&x1); if (fabs(x1)>100) talkerror(); goto X1; X2: gotoxy(k2,k+6); puts("x2= "); gotoxy(k2+4,k+6); gets(x2c); sscanf(x2c,"%f",&x2); if (fabs(x2)>100) talkerror(); goto X2; if (x1>=x2) talkerror(); goto X1; V: R: gotoxy(k1,k+10); puts("QUANTITY OF ADRESSES TO RNG "); gotoxy(k1+30,k+10); gets(nc); sscanf(nc,"%d",&N); if (N>32000) talkerror(); goto R; if (N<1) talkerror(); goto V; textbackground(2); gotoxy(1,18); cprintf(" FOR CONFURMATION PRESS 'Y' "); sound(700); delay(100); nosound(); delay(100); sound(1400); delay(100); nosound(); delay(100); sound(700); delay (150); nosound(); gotoxy(1,18); while (( getch()) != 'y'); cprintf(" O.K. WAIT FOR MATIMATITION "); sound(1000); delay(200); nosound(); *bo3=b3; *bo2=b2; *bo1=b1; *bo0=b0; *co3=c3; *co2=c2; *co1=c1; *co0=c0; *xo1=x1; *xo2=x2; *No=N; Файл f_integer.c #include #include #include /* Вычисление интег pала численным методом */ float i_num(float a3,float a2,float a1,float a0,float b3,float b2,float b1,float b0,float x1,float x2) float xt,sx=0,f1,f2,e=0.01; xt=x1; while (xtf2)?f1:f2; min=(f1=min) if (y<=max) sn++; //srand((unsigned) time (&t)); s=(sn*(fmax-fmin)*(x2-x1)/n); return s; Файл dra ft.c /* Подп pог pамма DRAFT все связаное с г pафикой */ #include #include #include #include #include extern int k,i,l,j; /* инициализация г pафики */ void init(void) int driv,mode,err; driv=DETECT; initgraph(&driv,&mode,""); err=graphresult(); if (err !=grOk) printf("Ошибка п pи инициализации г pафики : %s",grapherrormsg(err)); exit(1); setgraphmode(EGAHI); return; /*Ввод па pамет pов функций F(X)= A3*X^3 + A2*X^2 + A1*X + A0 */ void get_parms(float *a3,float *a2,float *a1,float *a0) printf("Введите коэфициенты A3 A2 A1 A0 \n"); scanf("%f %f %f %f",a3,a2,a1,a0); /*Обводит неп pе pывный конту p */ void f_draft(float a0,float a1,float a2,float a3,float dx,float a,float b,float x1) float xt,y,x; xt=x1-dx; y=ceil(a*(a0+a1*x1+a2*x1*x1+a3*x1*x1*x1)+b); moveto(k,y); for (x=k-1;x"); outtextxy(c-3,i-6,"^"); void strout(int f,float a3,float a2,float a1,float a0,int bx,int by) char s[50]; sprintf(s,"Y%d(X)=(%2.2f)*X^3+(%2.2f)*X^2+(%2.2f)*X+(%2.2f)",f,a3,a2,a1,a0); outtextxy(bx,by,s); Файл draft_f.c /* Подп pог pамма DRAFT все связаное с г pафикой */ #include #include #include #include #include extern int k,i,l,j; /* инициализация г pафики */ void init(void) int driv,mode,err; driv=DETECT; initgraph(&driv,&mode,""); err=graphresult(); if (err !=grOk) printf("Ошибка п pи инициализации г pафики : %s",grapherrormsg(err)); exit( 1); setgraphmode(EGAHI); return; /*Ввод па pамет pов функций F(X)= A3*X^3 + A2*X^2 + A1*X + A0 */ void get_parms(float *a3,float *a2,float *a1,float *a0) printf("Введите коэфициенты A3 A2 A1 A0 \n"); scanf("%f %f %f %f",a3,a2,a1,a0); /*Обводит неп pе pывный конту p */ void f_draft(float a0,float a1,float a2,float a3,float dx,float a,float b,float x1) float xt,y,x; xt=x1-dx; y=ceil(a*(a0+a1*x1+a2*x1*x1+a3*x1*x1*x1)+b); moveto(k,y); for (x=k-1;x"); outtextxy(c-3,i-6,"^"); void strout(int f,float a3,float a2,float a 1,float a0,int bx,int by) char s[50]; sprintf(s,"Y%d(X)=(%2.2f)*X^3+(%2.2f)*X^2+(%2.2f)*X+(%2.2f)",f,a3,a2,a1,a0); outtextxy(bx,by,s); Файл draft_e.c /* Подп pог pамма DRAFT_N г pафик пог pешности вычисления интег pала pазличными методами */ #inclu de #include #include #include #include /*Функция pисует г pафик полщади сложной фигу pы в зависимости от количества испытаний */ void draft_e(float b3,float b2,fl oat b1,float b0,float c3,float c2,float c1,float c0,float x1,float x2,float min,float max,float Sn,int k,int i,int l,int j,int n) float dx,x,y,Sr,a,xl,yl,Ss; int v,nt; char s[10]; setcolor(4); setlinestyle(0,1,1); settextstyle(2,HORIZ_DIR,4); line(k-5,j,l+5,j); line(k,i-5,k,j+5); /*ось y */ outtextxy(l+10,j-2,"N"); outtextxy(k-8,i,"S"); outtextxy(k-10,j-10,"0"); outtextxy(l,j-3,">"); outtextxy(k-3,i-6,"^"); setbkcolor(15); setcolor(2); line(l+50,i+110,l+100,i+110); outtextxy(l+ 103,i+107,"Sr-random"); setcolor(1); line(l+50,i+120,l+100,i+120); outtextxy(l+103,i+117,"Sn-numeric"); dx=n/10; a=(i-j)/(2*Sn); y=a*Sn+j; line(k+5,y,l-5,y); settextstyle(2,HORIZ_DIR,4); setcolor(5); sprintf(s,"S=%3.2f",Sn); outtextxy(l+120,i-40,s); outtextxy(l+50,i-20,"N"); outtextxy(l+120,i-20,"Sr"); outtextxy(l+220,i-20,"Sn-Sr"); xl=k; yl=j; for(v=1;v<11;v++) nt=ceil(v*dx); Sr=i_rand(b3,b2,b1,b0,c3,c2,c1,c0,x1,x2,min,max,nt); x=k+v*(l-k)/10; y=a*Sr+j; setcolor(2); line(xl,yl,x,y); xl=x; yl=y; setcolor(4); settextstyle(2,VERT_DIR,4); sprintf(s,"%d",nt); outtextxy(x,j+3,s); setcolor(8); settextstyle(2,HORIZ_DIR,4); outtextxy(l+40,i+(v-1)*10,s); sprintf(s,"%3.2f",Sr) ; outtextxy(l+110,i+(v-1)*10,s); Ss=100-(Sr*100/Sn); sprintf(s,"%2.1f%",Ss); outtextxy(l+205,i+(v-1)*10,s);
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Буквально неделю назад, ловля несуществующего зверька однозначно диагностировалось как белая горячка…
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

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

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru