CURSOV (675654)
Текст из файла
ÌÎÑÊÎÂÑÊÈÉ ÃÎÑÓÄÀÐÑÒÂÅÍÍÛÉ ÈÍÑÒÈÒÓÒ ÝËÅÊÒÐÎÍÍÎÉ ÒÅÕÍÈÊÈ
(ÒÅÕÍÈ×ÅÑÊÈÉ ÓÍÈÂÅÐÑÈÒÅÒ)
Ðàñ÷åò ïëîùàäè ñëîæíîé ôèãóðû ñ ïîìîùüþ ìåòîäà
èìèòàöåîííîãî ìîäåëèðîâàíèÿ .
Ëîãâèíåíêî Â.
Ìîñêâà. 1995 ã.
Çàäàíèå: Ðàçðàáîòàòü ïðîãðàììó, ïîçâîëÿþùóþ ñ ïîìîùüþ ìåòîäà èìèòàöèîííîãî ìîäåëèðîâàíèÿ ðàññ÷èòàòü ïëîùàäü ñëîæíîé ôèãóðû, îãðàíè÷åííîé ñâåðõó êðèâîé 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) // îáëàñòü îïðåäåëåíèÿ [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 Ñïèñîê èñïîëüçîâàííîé ëèòåðàòóðû.
8.1 ßçûê ïðîãðàììèðîâàíèÿ Ñè äëÿ ïåðñîíàëüíîãî êîìïüþòåðà .
Ñ.Î. Áî÷êîâ, Ä.Ì. Ñóááîòèí.
8.2 Ñ++ . Îïèñàíèå ÿçûêà ïðîãðàììèðîâàíèÿ.
Áüÿðí Ñòðàóñòðàï.
8.3 TURBO C. User's Guide. Borland International, Inc. 1988.
8.4 TURBO C. Reference Guide. Borland International, Inc. 1988.
9 Çàêëþ÷åíèå.
9.1 Ñîïîñòàâëåíèå ðåçóëüòàòîâ ðàáîòû ñ òåðáîâàíèåì çàäàíèÿ.
Ñîïîñòàâëÿÿ ðåçóëüòàòû ðàáîòû ñ òðåáîâàíèåì çàäàíèÿ, ìîæíî ñêàçàòü ÷òî çàäà÷à ðåøåíà â ïîëíîé ìåðå, çà èñêëþ÷åíèåì, áûòü ìîæåò îáùíîñòè îòíîñèòåëüíî âîçìîæíîñòè ðàñ÷åòà äëÿ ìíîãèå êëàññîâ ôóíêöèé. Íî ðåøåíèå áîëåå îáùåé çàäà÷è ( ò.å. âîçìîæíîñòü ðàñ÷åòà äëÿ ìíîãèõ êëàññîâ ôóíêöèé ) ïðåäñòàâëÿåòñÿ çíà÷èòåëüíî áîëåå ãðîìîçäêèì, è âîîáùå ÿâëÿåòñÿ îòäåëüíîé çàäà÷åé. Ïîýòîìó àâòîð íå ñ÷åë íóæíûì ðàçðàáàòûâàòü àëãîðèòì ââîäà ìíîãèõ ôóíêöèé è çàîñòðèë âíèìàíèå ñîáñòâåííî íà ñàìîé çàäà÷å - ðàñ÷åòå ïëîùàäè ñëîæíîé ôèãóðû ñ ïîìîùüþ ìåòîäà èìèòàöèîííîãî ìîäåëèðîâàíèÿ è ñðàâíåíèå ýòîãî ìåòîäà ñ ÷èñëîâûìè ìåòîäàìè.
9.2 Ðåêîìåíäàöèè ïî óëó÷øåíèþ ïðîãðàììû.
Ïðè ðàçðàáîòêå ïðîãðàììû àâòîð óïóñòèë âîçìîæíîñòü ðàáîòû ñ ÷èñëîâûìè ìàññèâàìè. Ïîýòîìó, ìîæíî óëó÷øèòü ïðîãðàììó ïåðåïèñàâ ðÿä ïðîöåäóð ïîä ìàññèâû , ÷òî ñäåëàåò ïðîãðàììó ìåíåå ìàññèâíîé è áîëåå íàãëÿäíîé. Øèðîêîå
âîçìîæíîñòè ïî óëó÷øåíèþ ïðîãðàììû â îáëàñòè ðàçðàáîòêè àëãîðèòìîâ ââîäà ðàçëè÷íûé êëàññîâ ôóíêöèé.
Äëÿ ðåøåíèÿ çàäà÷è ìåòîäîì èìèòàöèîííîãî ìîäåëèðîâàíèÿ îãðàíè÷èì äàííóþ
12
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.















