Разработка программы расчета определенного интеграла по формуле Буля по схеме двойного пересчета с заданной точностью

Разработка программы расчета определенного интеграла по формуле Буля по схеме двойного пересчета с заданной точностью

Министерство образования Республики Беларусь

УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ
МОГИЛЕВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра "ЭП и АПУ"

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

К курсовой работе по дисциплине

“Вычислительная техника и программирование”

           

Выполнил студент группы ЭП-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) выходные результаты решения: 

         -значение интеграла.

2.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

#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

#include

#include

#pragma hdrstop

#include "Unit1.h"

#include "Unit2.h"

#include "Unit3.h"

#include

//---------------------------------------------------------------------------

#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

#include

#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

#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 -  Результат тестирования

 

Приложение В.

Тестирование данных в математическом пакете.




Приложение Г

 

Гипертекстовый вариант документа

 

xmlns:o="urn:schemas-microsoft-com:office:office"

xmlns:w="urn:schemas-microsoft-com:office:word"

xmlns="http://www.w3.org/TR/REC-html40">

1 Постановка задачи

1 Постановка задачи

style="mso-spacerun: yes">                                                            

1.1 Общая характеристика задачи

style='font-family:"Times New Roman";font-weight:normal;mso-bidi-font-weight:

bold'>

 

Численное интегрирование используется для

приближенного поиска значения определенного интеграла непрерывной функции

lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;mso-ansi-language:

EN-US'>f(

lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;mso-ansi-language:

EN-US'>x) на

заданном интервале [a,b] согласно выражению

src="./1%20Постановка%20задач1.files/image002.gif" v:shapes="_x0000_i1049">,             (

1.1 )

style='mso-tab-count:1'>     где  

lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;mso-ansi-language:

EN-US'>Q[

lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;mso-ansi-language:

EN-US'>f]

style='font-size:14.0pt;mso-bidi-font-size:12.0pt'> – формула численного

интегрирования;

style='mso-tab-count:2'>         

style='font-size:14.0pt;mso-bidi-font-size:12.0pt;mso-ansi-language:EN-US'>E

style='font-size:14.0pt;mso-bidi-font-size:12.0pt'>[

lang=EN-US style='font-size:14.0pt;mso-bidi-font-size:12.0pt;mso-ansi-language:

EN-US'>f]

style='font-size:14.0pt;mso-bidi-font-size:12.0pt'> – ошибка усечения.

style='mso-tab-count:1'>     Формула численного интегрирования

называется формулой квадратуры. В общем виде она может быть представлена как

сумма

style='mso-tab-count:1'>    

src="./1%20Постановка%20задач1.files/image004.gif" v:shapes="_x0000_i1050"> ( 1.2 )

 


Приложение Д

 

Акт приёмки программы

 

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

                   Студент гр. ЭП-012

                            Гончаров А.М.

                   Руководитель работы

                            старший преподаватель кафедры «ЭП и АПУ»

                            Абрашкин В.П.

Нравится материал? Поддержи автора!

Ещё документы из категории информатика:

X Код для использования на сайте:
Ширина блока px

Скопируйте этот код и вставьте себе на сайт

X

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

После чего кнопка «СКАЧАТЬ» станет доступной!

Кнопочки находятся чуть ниже. Спасибо!

Кнопки:

Скачать документ