Главная Рефераты по рекламе Рефераты по физике Рефераты по философии Рефераты по финансам Рефераты по химии Рефераты по хозяйственному праву Рефераты по цифровым устройствам Рефераты по экологическому праву Рефераты по экономико-математическому моделированию Рефераты по экономической географии Рефераты по экономической теории Рефераты по этике Рефераты по юриспруденции Рефераты по языковедению Рефераты по юридическим наукам Рефераты по истории Рефераты по компьютерным наукам Рефераты по медицинским наукам Рефераты по финансовым наукам Рефераты по управленческим наукам Психология и педагогика Промышленность производство Биология и химия Языкознание филология Издательское дело и полиграфия Рефераты по краеведению и этнографии Рефераты по религии и мифологии Рефераты по медицине Рефераты по сексологии Рефераты по информатике программированию Краткое содержание произведений |
Реферат: Разработка программы расчета определенного интеграла по формуле Буля по схеме двойного пересчета с заданной точностьюРеферат: Разработка программы расчета определенного интеграла по формуле Буля по схеме двойного пересчета с заданной точностьюМинистерство образования Республики Беларусь УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ Кафедра "ЭП и АПУ"К курсовой работе по дисциплине “Вычислительная техника и программирование”
Выполнил студент группы ЭП-012 Гончаров А. М. Могилев, 2003Министерство образования Республики Беларусь УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ Курсовая работаРазработка программы расчета определенного интеграла по формуле Буля по схеме двойного пересчета с заданной точностью Пояснительная запискаБУЛ 07.00.00.000 ПЗРуководитель ст. преподаватель ______________ Абрашкин В.П. Студент группы ЭП-02______________ Гончаров А.М. Могилев, 2003 Содержание Введение 1 Постановка задачи 1.1 Общая характеристика задачи 1.2 Анализ литературных источников 1.3 Расчётные формулы метода 2 Разработка алгоритма задачи 2.1 Описание данных , используемых для решения задачи 2.2 Описание схемы программы 3 Кодирование программы 3.1 Описание структуры разрабатываемого пакета 3.2 Описание используемых типов данных 3.3 Проектирование интерфейса программы 4 Тестирование программы 5 Разработка гипертекстового варианта документа Заключение Список используемых источников Приложение А. Твёрдая копия Приложение Б. Результаты тестирования программы Приложение В. Тестирование данных в математическом пакете Приложение Г. Гипертекстовый вариант документа Приложение Д. Акт приёмки программы ВведениеДанный курс «Вычислительной техники и программирования» мы заканчиваем курсовым проектом, в котором нам следует разработать программу согласно полученному заданию. Стремительное развитие науки и техники, в том числе и вычислительной, требует знания её от каждого, считающего себя образованным, человека. Из-за всё возрастающей сложности многих объектов требуется улучшенная организация процесса программного моделирования и высокая степень образованности специалистов, а повышение требований к функционированию этих объектов делают нашу задачу еще более сложной. Для решения этой задачи применяется математическое моделирование, которое осуществляется опять же с помощью вычислительной техники, в частности компьютера. Нельзя не упомянуть о том, что широкое применение в современной науке и технике получили дифференциальные уравнения различной степени и вида сложности. В частности, они применяются в электротехнике, машиностроении, электронике, разработке различного рода аппаратного обеспечивания, математике, физике и других видах деятельности человека. Наша задача: создать способ быстрого, качественного, удобного и недорого решения поставленных перед нами задач. В данной курсовой работе мы применили численные методы нахождения определенного интеграла. Данной курсовой работой мы заканчиваем цикл лекций и лабораторных работ по изучению среды программирования C Builder v5.0, программы выполнения расчетов MathCad, работы в многофункциональном текстовом редакторе Word XP, программы выполнения чертежей AutoCad и использованию функциональных возможностей операционной системы Windows XP. Все эти знания я постарался использовать в своем курсовом проекте.
1 Постановка задачи
1.1 Общая характеристика задачиЧисленное интегрирование используется для приближенного поиска значения определенного интеграла непрерывной функции f(x) на заданном интервале [a,b] согласно выражению , ( 1.1 ) где Q[f] – формула численного интегрирования; E[f] – ошибка усечения. Формула численного интегрирования называется формулой квадратуры. В общем виде она может быть представлена как сумма ( 1.2 ) где X0, ... , XK – узлы квадратуры; w0, ... , wK – веса квадратуры. Степень точности формулы квадратуры равна положительному целому числу n. Величина ошибки отсечения определяется в общем случае согласно выражению E[f]=K×f(n+1)(c), ( 1.3 ) где К – определенный коэффициент, n – степень точности. 1.2 Анализ литературных источниковВ зависимости от вида выражения квадратуры для нахождения значения определенного интеграла используются следующие численные методы: 1) правых, левых и средних прямоугольников; 2) трапеций; 3) формулы Симпсона и Буля; 4) Монте-Карло; 5) формулы Гаусса-Лежандра, 6) рекуррентные формулы.В зависимости от степени производной, учитываемой численным методом, определяется степень точности метода. Шаг интегрирования может быть постоянным на всём расчётном интервале аргумента X или изменяться в зависимости от величины ошибки определения функции. 1.3 Расчётные формулы методаСоставная формула Буля с порядком m=4 имеет вид ( 1 ) 2 Разработка алгоритма решения задачи2.1 Описание данных, используемых для решения задач
В данной задаче использовались следующие данные: 1) исходные(входные)данные: - начало отрезка а; - конец отрезка b; - точность. 2) выходные результаты решения: -значение интеграла. Схема алгоритма составлена в соответствии с математическим описанием курсовой работы и отображает последовательность операций в программе. При ее изображении используются правила и требования ГОСТ 19.701.90. Произведено выделение основных этапов в виде подпрограмм, выполняющих следующие действия:
а) ввод исходных данных с клавиатуры; б) выполнение расчета; в) вывод полученных результатов на экран и в файл. Все подпрограммы выполнены в виде процедур [2]. Основные процедуры и программа выполнены на листе. При этом описание функционального назначения блоков схемы алгоритма приведено в комментариях. 3 Кодирование программы3.1 Описание структуры разрабатываемого пакета
Программа курсовой работы разработана в среде визуального программирования CBuilder 5.0 и состоит из головной программы, блоковUnit1, Unit2, Unit3. Программа выполнена на основе структурного программирования и содержит следующие процедуры и функции: а) f; б) Вооl. 3.2 Описание используемых типов данныхВ данной задаче использовались следующие типы данных: 1) переменная: a,b,e,I ,h,s,N типа float; 2) локальные переменные для перебора элементов массивов: i,j,k типа int; 3.3 Проектирование интерфейса программыОсновные процедуры, используемые при составлении алгоритма: а) f-вызывает расчётную функцию;б) Bool- расчёт определённого интеграла.
4 Тестирование программы4.1 Тестирование программы в математическом пакете. 4.2 Тестирование программы Для тестирования использована функция f(x)=5*x5-x3. Рисунок 1- Основное окно. Рисунок 2 – Ввод данных.
Тестирование проводилось на ЭВМ со следующими характеристиками: - центральный процессор – Intel Pen tium 2.2 GHz; - оперативная память – 1024Mb; - видеоадаптер – GeForce 4 64 Mb; - монитор – Sony Trinitron; - операционная система – Windows XP.
5 Разработка гипертекстового варианта документа
Рисунок 3-Гипертекстовый вариант Для перевода текста программы в формат HTML использовалась команда приложения MicrosoftWord (пакета Office XP) “Сохранить как Web-страницу”. Вид полученного документа, отображаемого InternetExplorer 5.0 представлен на рисунке 3. ЗаключениеВ данной курсовой работе разработана программа расчета определенного интеграла по формуле Буля по схеме двойного пересчета с заданной точностью При работе над программой пройдены все этапы создания программных продуктов. Получены навыки в математическом описании задачи, разработке алгоритма программы, составлении текста программы и проведении тестирования программы. Использована система программирования C Builder v5.0. Список использованных источников1 Крылов В.И. Вычислительные методы высшей математики. Т.1./ Под ред. И.П. Мысовских. — Мн.: Вышэйшая школа, 1972. 2 Мудров А.Е. Численные методы для ПЭВМ на языках Бейсик, Фортран, Паскаль - Томск: МП Таско", 1992 3 Херхагер М., Партолль X. MathCAD 2000; полное руководство: Пер. с нем. - К.: Издательская группа BHV, 2000. - 416с. 4 Гусак А.А., Гусак ГМ. Справочник по высшей математике. - Мн.: Наука и техника, 1991. Приложение А(обязательное) Твёрдая копия Project1.cpp //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop USERES("Project1.res"); USEFORM("Unit1.cpp", Form1); USEFORM("Unit2.cpp", Form2); USEFORM("Unit3.cpp", Form3); //--------------------------------------------------------------------------- WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application->Initialize(); Application->CreateForm(__classid(TForm1), &Form1); Application->CreateForm(__classid(TForm2), &Form2); Application->CreateForm(__classid(TForm3), &Form3); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } return 0; } //--------------------------------------------------------------------------- Unit1.cpp //--------------------------------------------------------------------------- #include <vcl.h> #include<io.h> #include<math.h> #pragma hdrstop #include "Unit1.h" #include "Unit2.h" #include "Unit3.h" #include <fcntl.h> //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; float a=0,b=10,e=0.01,I[2]; float f(float x) { return 5*pow(x,5)-pow(x,3); } //------------------------------------- void Bool() { float h,s,x[5],N=2; int i,l; do { for(l=0;l<=1;l++) { s=0; h=(b-a)/N; x[0]=a; x[1]=a+h/4; x[2]=a+h/2; x[3]=a+3*h/4; x[4]=a+h; for(i=1;i<=N;i++) { s=(7*f(x[0])+32*f(x[1])+12*f(x[2])+32*f(x[3])+7*f(x[4]))+s; x[0]+=h; x[1]+=h; x[2]+=h; x[3]+=h; x[4]+=h; } I[l]=h*s/45/2; N=N*2; } }while(fabs(I[0]-I[1])>e); } //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Exit1Click(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Exit2Click(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Exit1pop(TObject *Sender, TCanvas *ACanvas, TRect &ARect, bool Selected) { SB1->SimpleText="Выход"; } //--------------------------------------------------------------------------- void __fastcall TForm1::N1Click(TObject *Sender) { Form2->Show(); SB1->SimpleText="Ввод данных закончен"; } //--------------------------------------------------------------------------- void __fastcall TForm1::N2Click(TObject *Sender) { Bool(); Form3->Show(); SB1->SimpleText="Произведен расчет"; } //--------------------------------------------------------------------------- Unit2.cpp //--------------------------------------------------------------------------- #include <vcl.h> #include<iostream.h> #pragma hdrstop #include "Unit2.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "ibctrls" #pragma link "ibreg" #pragma link "CSPIN" #pragma resource "*.dfm" TForm2 *Form2; extern float a,b,e; //--------------------------------------------------------------------------- __fastcall TForm2::TForm2(TComponent* Owner) : TForm(Owner) { } //------------------------------------------ //--------------------------------------------------------------------------- void __fastcall TForm2::Button2Click(TObject *Sender) { Form2->Close(); } //--------------------------------------------------------------------------- float __fastcall TForm2::checkf(TObject *Sender,TEdit *e1,float w) { float buf; do{ try { if(e1->Text!="") buf=StrToFloat(e1->Text);else buf=w; } catch(const EConvertError &e) { int j=Application->MessageBox("Неверные данные", NULL, MB_OK); buf=-1; e1->Text=FloatToStr(w); }}while((buf==-1)); return buf; } //---------------------------------------- void __fastcall TForm2::Button1Click(TObject *Sender) { e=checkf(Sender,Edit4,e); a=checkf(Sender,Edit1,a); b=checkf(Sender,Edit2,b); Form2->Close(); } //--------------------------------------------------------------------------- void __fastcall TForm2::FormCreate(TObject *Sender) { Edit1->Text=FloatToStr(a); Edit2->Text=FloatToStr(b); Edit4->Text=FloatToStr(e); } //--------------------------------------------------------------------------- void __fastcall TForm2::GroupBox1Click(TObject *Sender) { } //--------------------------------------------------------------------------- Unit3.cpp //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit3.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "PERFGRAP" #pragma resource "*.dfm" TForm3 *Form3; extern float I[2]; //--------------------------------------------------------------------------- __fastcall TForm3::TForm3(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm3::BitBtn1Click(TObject *Sender) { Form3->Close(); } //--------------------------------------------------------------------------- void __fastcall TForm3::FormCreate(TObject *Sender) { SaveDialog1->InitialDir= GetCurrentDir(); Edit1->Text=FloatToStr(I[1]); } //--------------------------------------------------------------------------- void __fastcall TForm3::Button1Click(TObject *Sender) { TStringList *s; s= new TStringList; SaveDialog1->Execute(); s->Add(" Значение интеграла равно"+FloatToStr(I[1])); s->SaveToFile(SaveDialog1->FileName); delete s; } //--------------------------------------------------------------------------- void __fastcall TForm3::Label1Click(TObject *Sender) {
} //--------------------------------------------------------------------------- Приложение Б Результаты тестирования программы. Рисунок 4 - Результат тестирования
Приложение В. Тестирование данных в математическом пакете. Приложение Г Гипертекстовый вариант документа <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"> <head> <meta http-equiv=Content-Type content="text/html; charset=windows-1251"> <meta name=ProgId content=Word.Document> <meta name=Generator content="Microsoft Word 9"> <meta name=Originator content="Microsoft Word 9"> <link rel=File-List href="./1%20Постановка%20задач1.files/filelist.xml"> <link rel=Edit-Time-Data href="./1%20Постановка%20задач1.files/editdata.mso"> <link rel=OLE-Object-Data href="./1%20Постановка%20задач1.files/oledata.mso"> <!--[if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--> <title>1 Постановка задачи</title> <!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Author>ДМИТРИЙ</o:Author> <o:Template>Normal</o:Template> <o:LastAuthor>ДМИТРИЙ</o:LastAuthor> <o:Revision>1</o:Revision> <o:TotalTime>0</o:TotalTime> <o:Created>2003-06-07T13:56:00Z</o:Created> <o:LastSaved>2003-06-07T13:57:00Z</o:LastSaved> <o:Pages>1</o:Pages> <o:Company>HOME</o:Company> <o:Lines>1</o:Lines> <o:Paragraphs>1</o:Paragraphs> <o:Version>9.2812</o:Version> </o:DocumentProperties> </xml><![endif]--> <style> <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} h2 {mso-style-next:Обычный; margin-top:0cm; margin-right:0cm; margin-bottom:0cm; margin-left:35.9pt; margin-bottom:.0001pt; mso-pagination:widow-orphan; page-break-after:avoid; mso-outline-level:2; background:white; font-size:14.0pt; mso-bidi-font-size:12.0pt; font-family:"Courier New"; color:black; letter-spacing:-.6pt; mso-bidi-font-weight:normal;} h6 {mso-style-next:Обычный; margin:0cm; margin-bottom:.0001pt; text-align:center; mso-pagination:widow-orphan; page-break-after:avoid; mso-outline-level:6; tab-stops:61.7pt; font-size:14.0pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman";} @page Section1 {size:595.3pt 841.9pt; margin:2.0cm 42.5pt 2.0cm 3.0cm; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style> <!--[if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="1134"/> </xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1"/> </o:shapelayout></xml><![endif]--> </head> <body lang=RU style='tab-interval:35.4pt'> <div class=Section1> <h6 style='tab-stops:35.4pt'><a name="_Toc11439953">1 Постановка задачи</a></h6> <p class=MsoNormal><b><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt'><span style="mso-spacerun: yes"> </span></span></b><span style='font-size:14.0pt; mso-bidi-font-size:12.0pt'><span style="mso-spacerun: yes"> </span><o:p></o:p></span></p> <h2><a name="_Toc11439954"><span style='font-family:"Times New Roman"; font-weight:normal;mso-bidi-font-weight:bold'>1.1 Общая характеристика задачи</span></a><span style='font-family:"Times New Roman";font-weight:normal;mso-bidi-font-weight: bold'><o:p></o:p></span></h2> <p class=MsoNormal style='margin-left:36.0pt'><span style='font-size:14.0pt; mso-bidi-font-size:12.0pt'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p> <p class=MsoNormal style='text-indent:36.0pt'><span style='font-size:14.0pt; mso-bidi-font-size:12.0pt'>Численное интегрирование используется для приближенного поиска значения определенного интеграла непрерывной функции </span><span lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;mso-ansi-language: EN-US'>f</span><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt'>(</span><span lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;mso-ansi-language: EN-US'>x</span><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt'>) на заданном интервале [a,b] согласно выражению<o:p></o:p></span></p> <p class=MsoNormal style='margin-left:72.0pt;text-indent:36.0pt'><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt'><sub><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"/> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"/> <v:f eqn="sum @0 1 0"/> <v:f eqn="sum 0 0 @1"/> <v:f eqn="prod @2 1 2"/> <v:f eqn="prod @3 21600 pixelWidth"/> <v:f eqn="prod @3 21600 pixelHeight"/> <v:f eqn="sum @0 0 1"/> <v:f eqn="prod @6 1 2"/> <v:f eqn="prod @7 21600 pixelWidth"/> <v:f eqn="sum @8 21600 0"/> <v:f eqn="prod @7 21600 pixelHeight"/> <v:f eqn="sum @10 21600 0"/> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/> <o:lock v:ext="edit" aspectratio="t"/> </v:shapetype><v:shape id="_x0000_i1049" type="#_x0000_t75" style='width:180.75pt; height:45.75pt' o:ole="" fillcolor="window"> <v:imagedata src="./1%20Постановка%20задач1.files/image001.wmz" o:title=""/> </v:shape><![endif]--><![if !vml]><img width=241 height=61 src="./1%20Постановка%20задач1.files/image002.gif" v:shapes="_x0000_i1049"><![endif]></sub><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="Equation.3" ShapeID="_x0000_i1049" DrawAspect="Content" ObjectID="_1116513810"> </o:OLEObject> </xml><![endif]-->,<span style='mso-tab-count:3'> </span>( 1.1 )<o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt'><span style='mso-tab-count:1'> </span>где <span style='mso-tab-count:1'> </span></span><i><span lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;mso-ansi-language: EN-US'>Q</span></i><i><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt'>[</span></i><i><span lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;mso-ansi-language: EN-US'>f</span></i><i><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt'>]</span></i><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt'> – формула численного интегрирования;<o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt'><span style='mso-tab-count:2'> </span></span><i><span lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;mso-ansi-language:EN-US'>E</span></i><i><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt'>[</span></i><i><span lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;mso-ansi-language: EN-US'>f</span></i><i><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt'>]</span></i><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt'> – ошибка усечения.<o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt'><span style='mso-tab-count:1'> </span>Формула численного интегрирования называется формулой квадратуры. В общем виде она может быть представлена как сумма<o:p></o:p></span></p> <p class=MsoNormal><span style='font-size:14.0pt;mso-bidi-font-size:12.0pt'><span style='mso-tab-count:1'> </span><sub><!--[if gte vml 1]><v:shape id="_x0000_i1050" type="#_x0000_t75" style='width:347.25pt;height:45.75pt' o:ole="" fillcolor="window"> <v:imagedata src="./1%20Постановка%20задач1.files/image003.wmz" o:title=""/> </v:shape><![endif]--><![if !vml]><img width=463 height=61 src="./1%20Постановка%20задач1.files/image004.gif" v:shapes="_x0000_i1050"><![endif]></sub><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="Equation.3" ShapeID="_x0000_i1050" DrawAspect="Content" ObjectID="_1116513811"> </o:OLEObject> </xml><![endif]--><span style='mso-tab-count:1'> </span>( 1.2 )<o:p></o:p></span></p> <p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p> </div> </body> </html> Приложение Д Акт приёмки программы Разработанная в ходе выполнения курсового проекта программа расчета определенного интеграла по формуле Буля по схеме двойного пересчета с заданной точностью работоспособна и полностью соответствует требованиям задания. Студент гр. ЭП-012 Гончаров А.М. Руководитель работы старший преподаватель кафедры «ЭП и АПУ» Абрашкин В.П. |
|
|