p align="left">gotoxy(1,2); cprintf(" Метод Гауса"); strcpy(NameM,"Гауса "); if(m1==0){ gotoxy(1,3); cprintf("+-----------------+");gotoxy(1,4); strcpy(s0,gcvt(K,3,&sb)); cprintf("¦ fi ¦ F(%3s,fi) ¦",s0);gotoxy(1,5); cprintf("+-----+-----------¦"); gotoxy(1,6); b0=0.0; for(i=1;i<=12;i++){ b9=Pi*i/6.0; h=(b9-b0)/n; s=0.0; for(j=0;j<=n-1;j++){ for(k=1;k<=m;k++){ x=b0+h*j; s=s+A[k-1]*F(m,x+h/2.0+t[k-1]*h/2.0); } } s=s*h/2.0; f[i-1]=s; cprintf("¦%2dп/6¦ %f ¦",i,s); gotoxy(1,6+i); if(i==1){ gotoxy(20,5+i); ds=zr-s; e=fabs(ds/zr)*100.0; cprintf("табл. знач.=%f абс. пох.=%f вiдн. пох.=%f%%",zr,ds,e); gotoxy(1,6+i); } } cprintf("+-----------------+"); } else{ b0=aS; b9=bS; h=(b9-b0)/n; s=0.0; for(j=0;j<=n-1;j++){ for(k=1;k<=m;k++){ x=b0+h*j; s=s+A[k-1]*F(m,x+h/2.0+t[k-1]*h/2.0); } } s=s*h/2.0; f[i-1]=s; cprintf(" - тест"); gotoxy(1,3); textattr(ct+ (15 << 4)); cprintf("1"); gotoxy(1,4); cprintf("+ ----+",s); gotoxy(1,5); cprintf("¦/2x+1 dx=%f;",s); gotoxy(1,6); cprintf("+",s); gotoxy(1,7); cprintf("0"); gotoxy(20,5); ds=fabs(zrG-s); e=fabs(ds/zrG)*100.0; cprintf("табл. знач.=%f абс. пох.=%f вiдн. пох.=%f%%",zrG,ds,e); } } void list(){ /* функцiя виводу результатiв на екран */ cls1(); textattr(ct+ (ctfp << 4)); gotoxy(1,2); cprintf(" Метод %9s ",NameM); gotoxy(1,3); cprintf("+-----------------+");gotoxy(1,4); strcpy(s0,gcvt(K,3,&sb)); cprintf("¦ fi ¦ F(%3s,fi) ¦",s0);gotoxy(1,5); cprintf("+-----+-----------¦"); gotoxy(1,6); for(i=1;i<=12;i++){ cprintf("¦%2dп/6¦ %f ¦",i,f[i-1]); gotoxy(1,6+i); } cprintf("+-----------------+"); } void druk(){ /* функцiя виводу результатiв на друк */ cls1(); fp2=fopen("lpt1", "w+"); fprintf(fp2," Метод %9s \n",NameM); fprintf(fp2,"+-----------------+\n"); strcpy(s0,gcvt(K,3,&sb)); fprintf(fp2,"¦ fi ¦ F(%3s,fi) ¦\n",s0); fprintf(fp2,"+-----+-----------¦\n"); for(i=1;i<=12;i++){ fprintf(fp2,"¦%2dп/6¦ %f ¦\n",i,f[i-1]); } fprintf(fp2,"+-----------------+\n"); fclose(fp1); } void Vvod(){ /* функцiя введення початкових даних */ cls1(); gotoxy(17,7); textattr(ct+ (ctf << 4)); cprintf("+------------------------+"); gotoxy(17,8); cprintf("¦ Введiть значення K= ¦"); gotoxy(17,9); cprintf("+------------------------+"); gotoxy(17+21,8); scanf("%f",&K); cls1(); gotoxy(17,7); } void main(void){ /* Головна функцiя */ char vibor,tab, c; int short i,a,b,x,y,mi,mi1,mif,mi13,ls; const nm=5,nm1=3,nm13=2; int npm[4]={2,3,3,1}; char *m[5]={"Про програму","Моделювання","Тестування","Виведення результатiв","Вихiд"}; char *pm[4][3]={{"Про автора","Завдання "},{"Сiмпсон","Чебишев","Гаус "}, {"Тест1","Тест2","Тест3"},{"Читати файл"}}; char *m13[2]={"На екран","Друк "}; do{ l3:;textbackground(7); clrscr(); l1:; cls1(); mi=1; gotoxy(1,25); textattr(ct+ (ctf << 4)); cprintf(" Alt-F4 Вихiд F1 Допомога"); do{ gotoxy(1,1); textattr(ct+ (ctf << 4)); cprintf(" "); ls=2; for(i=0;i<=nm;i++){ gotoxy(ls,1); if(mi==i+1) textattr(ct+ (ctfa << 4)); else textattr(ct+ (ctf << 4)); cprintf("%s",m[i]); ls=ls+strlen(m[i])+3; } c=getch(); if(c==75) {if(mi==1) mi=nm; else mi--;} if(c==77) {if(mi==nm) mi=1; else mi++;} if(c==107) exit(0); /* Alt-F4 - Вихiд */ if(c==59) zavdannja(); /* F1 - Допомога */ if(c==13){ if(mi<=4){ mi1=1; l2:; do{ if(c!=13) c=getch(); else c=32; if(c==72) if(mi1==1) mi1=npm[mi-1]; else mi1--; if(c==80) if(mi1==npm[mi-1]) mi1=1; else mi1++; if(c==27) goto l1; if(c==107) exit(0); /* Alt-F4 - Вихiд */ if(c==59) zavdannja(); /* F1 - Допомога */ ls=2; for(i=0;i<mi-1;i++) ls=ls+strlen(m[i])+3; gotoxy(ls,2); textattr(cr+ (ctf << 4)); strcpy(s,"+"); for(i=0;i<strlen(pm[mi-1][0]);i++) strcat(s,"-"); strcat(s,"+"); cprintf(s); for(i=0;i<npm[mi-1];i++){ gotoxy(ls,i+3); textattr(cr+ (ctf << 4)); cprintf("¦"); if(mi1==i+1) textattr(ct+ (ctfa << 4)); else textattr(ct+ (ctf << 4)); cprintf(pm[mi-1][i]); textattr(cr+ (ctf << 4)); cprintf("¦"); } gotoxy(ls,npm[mi-1]+3); textattr(cr+ (ctf << 4)); strcpy(s,"+"); for(i=0;i<strlen(pm[mi-1][0]);i++) strcat(s,"-"); strcat(s,"+"); cprintf(s); } while(c!=13); if(mi==1){ if(mi1==1) about(); else zavdannja(); while(!kbhit()); getch(); goto l3; } if(mi==2){ Vvod(); if(mi1==1) Simpson(0); if(mi1==2) Chebyshev(0); if(mi1==3) Gaus(0); getch(); goto l3; } if(mi==3){ if(mi1==1) Simpson(1); if(mi1==2) Chebyshev(1); if(mi1==3) Gaus(1); getch(); goto l3; } if(mi==4){ mi13=1; ls=2+strlen(pm[3][0])+2; for(i=0;i<mi-1;i++) ls=ls+strlen(m[i])+3; do{ if(c!=13) c=getch(); else c=32; if(c==72) if(mi13==1) mi13=nm13; else mi13--; if(c==80) if(mi13==nm13) mi13=1; else mi13++; if(c==27){ for(i=0;i<nm13+2;i++){ gotoxy(ls/*12*/,i+3); textattr(15 + (0 << 4)); cprintf("__________"); } mi1=3; goto l2; } if(c==107) exit(0); /* Alt-F4 - Вихiд */ if(c==59) zavdannja(); /* F1 - Допомога */ gotoxy(ls,3); textattr(cr+ (ctf << 4)); cprintf("+--------+"); for(i=0;i<nm13;i++){ gotoxy(ls,i+4); textattr(cr+ (ctf << 4)); cprintf("¦"); if(mi13==i+1) textattr(ct+ (ctfa << 4)); else textattr(ct+ (ctf << 4)); cprintf(m13[i]); textattr(cr+ (ctf << 4)); cprintf("¦"); } gotoxy(ls,nm13+4); textattr(cr+ (ctf << 4)); cprintf("+--------+"); } while(c!=13); if(mi13==1) list(); else druk(); getch(); c=32; } } else {exit(0); c=32;} } } while(c!=13); mif=1; } while(1==1); exit(0); } 4 Розробка тестів та аналіз результатів дослідження 4.1 Класифікація експериментів Усі експерименти умовно поділяються на: натурні, які проводяться на експериментальних установках; чисельні, які проводяться за допомогою моделювання на ЕОМ. 4.2 Опис експериментальних досліджень В даній курсовій роботі ми проводимо чисельний експеримент, який полягає у обчисленні значення еліптичного інтеграла за допомогою різних чисельних методів: Сімпсона, Чебишева та Гауса. В результаті досліджень отримуються табличні значення інтегралів. 4.3 Дослідження еліптичного інтегралу першого порядку на ЕОМ В результаті дослідження на ЕОМ отримані табличні значення інтегралу. а) б) в) Рис. 4.1. Табличні значення інтегралу: а) методом Сімпсона, б) методом Чебишева, в) методом Гауса Як видно із рис. 4.1 табличні значення інтегралу, отримані різними методами: Сімпсона, Чебишева, Гауса відрізняються несуттєво, що свідчить про високу точність цих методів. 4.4 Тестова перевірка чисельних методів а) б) в) Рис. 4.2. Тестова перевірка чисельних методів: а) методом Сімпсона, б) методом Чебишева, в) методом Гауса 5 Оцінка похибок отриманих результатів Оцінка похибок результатів дослідження проводилася шляхом порівняння табличних значень інтегралів (рис. 4.2), отриманих за допомогою розробленого програмного комплексу з тестовим прикладом. Результати цієї оцінки наведені в табл. 5.1. Таблиця 5.1 - Оцінка похибок результатів дослідження |
Метод | Абсолютна похибка | Відносна похибка, % | | Сімпсона | 0,000004 | 0,000256 | | Чебишева | 0,000017 | 0,001202 | | Гауса | 0,000000 | 0,000009 | | |
Відносна похибка розрахунків дуже мала, що є цілком прийнятним. Найбільш точний метод Гауса. 6 Оцінка ефективності комплексу програм для дослідження Таблиця 6.1 - Оцінка ефективності комплексу програм для дослідження |
Зміст | Назва | Розмір, байт | Час виконання, с | | Текст основної програми | integral.cpp | 12515 | 1,5 | | |
Час виконання програми є порівняно невеликим, що підтверджує ефективність розробки програми. 7 Розробка пакету документів для супроводження комплексу програм 7.1 Розробка інструкції програмісту Середовище програмування - Turbo C++ версії 3.0 або вище. Апаратне забезпечення. Для розробки даного програмного продукту необхідно використовувати будь-яку модель IBM-сумісного комп'ютерного комплексу. В комплект повинні входити наступні пристрої: процесор 80286 або вище; 24 Кб або більше вільної оперативної пам'яті; клавіатура, сумісна з Microsoft Natural; привід дисководу для накопичувачів на магнітних дисках діаметром 3,5"; відеоадаптер, що підтримує режими монітору 80х25 символів і 16 кольорів в текстовому режимі; CGA-сумісний монітор. Програмний продукт розроблений для використання під керуванням операційної системи MS DOS. 7.2 Розробка інструкції користувачу Дана програма дозволяє чисельно обчислювати значення елiптичного iнтегралу. Строка меню мiстить 5 пiдменю: “Про програму”, “Моделювання”, “Тестування”, “Виведення результатів”, “Вихід”. В пiдменю “Про програму” мiстяться наступнi пункти: - “Про автора” - для виведення інформації про автора програми; - “Завдання” - для виведення інформації про завдання на курсову роботу (F1). В пiдменю “Моделювання” мiстяться наступнi пункти: - “Сімпсон” - для чисельного рішенення визначеного інтегралу методом Сімпсона; - “Чебишев” - для чисельного рішенення визначеного інтегралу методом Чебишева; - “Гаус” - для чисельного рішенення визначеного інтегралу методом Гауса. В пiдменю “Тестування” мiстяться наступнi пункти: - “Тест1” - для тестового рішенення визначеного інтегралу методом Сімпсона; - “Тест2” - для тестового рішенення визначеного інтегралу методом Чебишева; - “Тест3” - для тестового рішенення визначеного інтегралу методом Гауса. В пiдменю “Виведення результатів” мiстяться наступнi пункти: - “Читати файл” - для читання таблиці інтегралів. Цей пункт містить наступнi підпункти: - “На екран” - для виведення таблиці інтегралів на екран; - “Друк” - для виведення таблиці інтегралів на друк. Підменю “Вихiд” призначене для виходу з програми (Alt-F4). Висновки В даній курсовій роботі розроблено комплекс програм для застосування точного рiвняння Ейлера-Бернулi для великих деформацiй бруса, а саме для обчислення значення еліптичного інтеграла за допомогою чисельних методів Сімпсона, Чебишева та Гауса. В розділі 1 описано короткі теоретичні відомості, присвячені вибору чисельного методу для розв'язання поставленої задачі. В розділі 2 розроблено алгоритми моделювання, а саме: планування вхідних та вихідних даних, описано задачі, які вирішує система, наведено описовий алгоритм головної програми, зображено схему алгоритму головної програми, описано основні функції моделювання. В розділі 3 подано лістинг всієї програми.В розділі 4 проведено аналіз результатів досліджень, який показав, що значення інтегралу, отримані різними методами: Сімпсона, Чебишева, Гауса відрізняються несуттєво. В розділі 5 здійснено оцінку похибки отриманих результатів, в результаті якої встановлено, що відносна похибка розрахунків дуже мала, що є цілком прийнятним. Найбільш точний метод Гауса. В розділі 6 проведено оцінку ефективності комплексу програм для дослідження, в результаті якого ми прийшли до висновку, що програма є ефективною. В розділі 7 розроблено пакет документів на супроводження програми: інструкція програмісту, інструкція користувачу. Додаток А Міністерство освіти і науки України Вінницький національний технічний університет Інститут автоматики електроніки та комп'ютерних систем управління Кафедра комп'ютерних систем управління УзгодженоРозроблено Керівник __________С.М. Москвіна Студент_________ А.С. Болоненков ”_____” __________2006р. Технічне завдання на виконання курсової роботи «Дослідження еліптичного інтегралу першого порядку на ЕОМ за допомогою чисельних методів» При розробці даної роботи необхідно виконувати слідуючи етапи: 1.1 Найменування та галузь застосування об'єкта розробки: цей комплекс програм може бути застосований на будь-якому підприємстві для полегшення та покращення результатів роботи інженерів 1.2 Підстава для проведення роботи: дослід штучного інтелекту 1.3 Дата початку роботи:8.01.06. 1.4 Дата закінчення роботи: 10.04.06. 1.5 Мета призначення розробки: створити як найкращий комплекс програм для полегшення та покращення роботи інженера підприємства 1.6 Вимоги до надійності системи: використання структурного програмування, окреме підключення модулів, єдине меню, тощо - усе це забезпечує надійність системи. Програмне забезпечення та супроводжуюча текстова документація повинна задовільнити таким гостам: ГОСТ 19.701-90 (МСО 5807-85) ГОСТ 19.101-77 (СТСЄВ 1626-7а) ГОСТ 19.781-74 ГОСТ 7.1-84 ДСТУ 3008-85 ГОСТ 19.401-78 ГОСТ 19.106-78 1.7 Стадії та етапи розробки: 1 етап: розробка індивідуального та технічного завдання.(до 15.01.06) 2 етап: огляд та аналіз методів дослідження еліптичного інтегралу першого порядку на ЕОМ (до 1.02.6. 3 етап: розробка алгоритмів дослідження еліптичного інтегралу першого порядку на ЕОМ (до 20.02.06). 4 етап: розробка керуючої програми, яка повинна працювати в режимі багато ієрархічного меню (до 10.03.06). 5 етап: об'єднання всіх програмних модулів та тестування керуючої програми (до 15.03.06) 6 етап: розробка тестів, тестування та демонстрація роботи всього комплексу (до 15.03.06). 7 етап: розробка технічної документації та пояснювальної записки (до 20.03.06). 8 етап: вимоги до безпеки: розроблене програмне забезпечення повинно відповідати вимогам Сніп та ДЕСТів до робочого місця оператора ЕОМ. Додаток БСтруктура дискетиДискета складається з двох розділів:1. Текст2. ПрограмаТекстПрограма- Титульний лист.doc- Integral.cpp- Завдання.doc- Integral.exe - Зміст.doc- Вступ.doc- Анотація.doc- Глава №1.doc- Глава №2.doc- Глава №3.doc- Глава №4.doc- Глава №5.doc- Глава №6.doc- Глава №7.doc- Висновки.doc- Література.doc- Додаток А.doc- Додаток Б.docЛітература 1. Керниган Б., Ритчи Б. Язык программирования Си. - М.: Финансы и статистика, 1985. - 205 с. 2. Уинер Р. Язык Турбо Си. - М.: Мир, 1991 - 363 с. 3. Лэнгсам Й., Огенстайн М., Тененбаум А. Структуры данных для персональных ЭВМ. - М.: Мир,1989 - 145 с. 4. Вирт Н. Алгоритмы и структуры данных. - М.: Мир, 1978 - 403 с. 5. Стивенс А. Техника программирования на Турбо Си. - Мир, 1991 - 322 с. 6. Ракитин Т.А., Первушин В.А. “Практическое руководство по численным методам с приложением программ на языке Basic“ 7. Крылов В.И. “Приближенные вычисления интегралов“ - М. : Физмат. 8. Міщенко С.М., Конспект лекцій з обчислювальних методів та застосування ЕОМ, ВНТУ, 2004. 9. Дьяконов В.П. Справочник по алгоритмам и программам на языке бейсик для персональных ЭВМ: Справочник. - М.: Наука. Гл. ред. физ-мат. лит., 1987. - 240 с.
Страницы: 1, 2, 3
|