Разработка программы, вычисляющей интеграл

Государственное образовательное учреждение высшего  профессионального образования 

Кубанский государственный технологический  университет 

(КубГТУ) 

      Кафедра ________________________________________

                    (наименование кафедры) 
 

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

                 к курсовому проекту (работе) 

     по  ____________________________________________________________

                                                     наименование дисциплины)

     на  тему _______________________________________________________

                    (тема курсового  проекта (работы))

     Выполнил (а) студент (ка) группы ________________________________         

_____________________________________________________________

            (ф.и.о.)

     Допущен  к защите______________________________________________ 

     Руководитель  проекта___________________________________________

     Нормоконтролер _______________________________________________ 

     Защищен  _____________________      Оценка _______________________

                                       (дата)

Члены комиссии __________________________________________________ 

                     (подпись, дата, расшифровка  подписи) 
 
 
 
 
 
 
 
 
 
 
 

Краснодар

2010

 

Государственное образовательное учреждение высшего профессионального образования 

Кубанский государственный технологический  университет 

(КубГТУ)

      Кафедра ________________________________________

                    (наименование кафедры)

                                                          УТВЕРЖДАЮ

                            Зав. кафедрой ___________________

                                    _______________________________ 

        З А Д А Н И Е

         на курсовое проектирование

Студенту:_________________________ группы__________________ курса

                  (Ф.И.О.)      (№ группы и курса)

факультета ______________________________________________________

специальности  __________________________________________________ 

________________________________________________________________

                              (шифр  и наименование)

Тема проекта:____________________________________________________ 

Содержание задания:______________________________________________

________________________________________________________________

     Объем  работы:

а) пояснительная  записка к проекту _____________ с.

б) программы.

Рекомендуемая литература:_________________________________________ 

Срок выполнения проекта: с "___" ______по"___"____20__г.

Срок защиты:                                                   "___"____20__г.

Дата выдачи задания:                                      "___"____20__г.

Дата сдачи  проекта на кафедру:                      "___"____20__г.

Руководитель  проекта _________________________________

                                                                          (подпись, ф.и.о., звание, степень)

Задание принял студент _______________________________                                                                                          

(подпись,  дата)

 

     

Государственное образовательное учреждение высшего  профессионального образования 

Кубанский государственный технологический  университет 

(КубГТУ) 
 
 

Реферат 
 

      Пояснительная записка курсового проекта (работы) 33 с., 16 рис., 4 источника. 
 

     ОПРЕДЕЛЕННЫЙ  ИНТЕГРАЛ, МЕТОД ПРЯМОУГОЛЬНИКОВ, МЕТОД  КРИВОЛИНЕЙНЫХ ТРАПЕЦИЙ, МЕТОД СИМПСОНА (ПАРАБОЛ), ПОСТРОЕНИЕ ГРАФИКА. 
 

     Объектом  исследования является численное интегрирование с применением языка C# и применение принципов объектно-ориентированного программирования. 

     Цель  работы состоит в разработке программы  на языке C# демонстрирующей интегрирование различными методами и получении результатов. 

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

 

     

СОДЕРЖАНИЕ 

ВВЕДЕНИЕ

Нормативные ссылки

Список используемой литературы 

  
ВВЕДЕНИЕ
 

     Цель  курсовой работы является приобретение и углубление знаний в области  высокоуровневых методов информатики и программирования, получения дополнительных практических навыков в использовании основных приёмов обработки экспериментальных данных, численного решения определенных интегралов. 

     Численное интегральное исчисление – часто используемая тема в математике. При решении ряда актуальных физических и технических задач встречаются определенные интегралы от функций, первообразные которых не выражаются через элементарные функции. Кроме того, в приложениях приходится иметь дело с определенными интегралами, сами подынтегральные функции которых не являются элементарными. Это приводит к необходимости использования приближенных методов вычисления определенных интегралов.

 

    1.   Спецификации задачи
 

     Разрабатываемая программа должна обладать следующими качествами: 

    1. Производить интегрирование заданной функции методом  прямоугольников, трапеций, парабол  на основе входных данных и выводить результат;
    2. Иметь графический интерфейс, позволяющий вводить исходные данные, а также визуализировать результаты вычислений, выводя на экран график подынтегральной функции, значения вычисленных интегралов и погрешности их вычислений.
    3. При написании исходных текстов программы необходимым условием является использование основных принципов объектно-ориентированного программирования, обработки исключительных ситуаций, потоков выполнения, наличие подключаемых библиотек.

 

    1. Формулировка  задачи

     Данная  курсовая работа посвящена разработке программы на языке C#, которая вычисляет определенный интеграл от функции, имеющей первообразную, которую можно вычислить с помощью той или иной приближенной формулы. Для решения этой задачи применяются методы прямоугольников, трапеций и парабол (Симпсона).

     Задача курсового проекта – разработать программу на языке C#, такую, чтобы при работе с этой программой пользователь имел возможность:

     a) Найти определенный интеграл выше упомянутыми методами от следующей функции:

     

     б) ввести с клавиатуры пределы интегрирования и количество интервалов разбиения (a, b и n);

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

     При помощи данной программы нетрудно будет  сравнить результаты вычислений одного и того же определенного интеграла найденные разными методами.

     Программа должна отвечать следующим требованиям:

     a) иметь простой интерфейс;

     б) иметь защиту от некорректно введенных  данных.

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

 

    1. Описание  методов вычислительной математики, используемых при решении
    1. Численное интегрирование

     Определенный  интеграл

               (1)

     с пределами интегрирования a и b можно трактовать как площадь фигуры, ограниченной ординатами a и b, осью абсцисс x и графиком подынтегральной функции . Обыкновенный определенный интеграл, у которого известна его первообразная , вычисляется по формуле Ньютона-Лейбница . Поэтому для вычисления простых определенных интегралов достаточно вычислить значение .

     На  практике часто встречаются интегралы, которые не выражаются через элементарные функции или выражаются очень  сложно. Нередко подынтегральная  функция задается таблицей или графиком. В этих случаях интегралы находятся приближенными методами, которые заключаются в интерполяции на отрезке подходящим полиномом, для которого интеграл вычисляется по формулам численного интегрирования. Обычно отрезок разбивается на частей, к каждой из которых применяется соответствующая простая формула. Таким образом, получают составные (или сложные) формулы численного интегрирования. Для данной курсовой работы предусмотрено рассмотреть три способа численного интегрирования с помощью метода прямоугольников, криволинейных трапеций и метода Симпсона (параболических трапеций).

      1. Метод прямоугольников

     Промежуток  интегрирования делится точками на n равных частей; длина каждой

      .

     Для единообразия полагаем , . Через обозначаем середины участков Полагаем 

     

     

     Формулой  прямоугольников называются следующие  приближенные равенства:

 – формула левых прямоугольников. (2)
 – формула правых прямоугольников. (3)
 – формула средних прямоугольников. (4)
 

     Выражения (2), (3), (4) дают площади ступенчатых фигур, изображенных на рисунках 1, 2, 3 соответственно. В большинстве случаев при данном n формула (4) точнее, чем (2) и (3). С увеличением n точность формул (2), (3), (4) неограниченно возрастает.

     Предельная  погрешность формулы (4) составляет: ,

     где – наибольшее значение в промежутке . 

     Рисунок 1 – Ступенчатая фигура, полученная по методу левых прямоугольников

     Рисунок 2 – Ступенчатая фигура, полученная по методу правых прямоугольников 

     Рисунок 3 – Ступенчатая фигура, полученная по методу средних прямоугольников 

     Формула (4) наиболее точная, и погрешность по сравнению с формулами (2) и (3) уменьшается в приблизительно 50 раз. Отметим, что для линейной функции формула (4) дает точный ответ, поскольку в этом случае .

      1. Математический  вывод формулы метода прямоугольников

     Пусть на отрезке  задана непрерывная функция . Требуется вычислить интеграл , численно равный площади соответствующей криволинейной трапеции.

     Рисунок 4 – Ступенчатая фигура, состоящая из элементарных прямоугольников 

     Разобьем  основание этой трапеции, т.е. отрезок , на n равных частей (отрезков) длины (что равняется шагу разбиения) с помощью точек .  Можно записать, что , где .

     В середине каждого такого отрезка поставим ординату графика функции . Приняв эту ординату за высоту, построим прямоугольник с площадью .

     Тогда сумма площадей всех n прямоугольников дает площадь ступенчатой фигуры, представляющую собой приближенное значение искомого определенного интеграла

      .      (5)

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

     Рисунок 5 – Блок-схема к алгоритму решения определенных интегралов по методу прямоугольников

      1. Метод криволинейных трапеций

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

     Рисунок 6 – Криволинейная фигура, полученная по методу криволинейных трапеций

     Разобьем  промежуток на n равных частей длины . Абсциссы точек деления . Пусть соответствующие им ординаты графика функции. Тогда расчетные формулы для этих значений примут вид: , , где .

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

     

     или

(6)
       – формула трапеций. (7)

     Абсолютная  погрешность приближения, полученного по формуле трапеций (7), оценивается с помощью формулы , где – наибольшее значение в промежутке . Так же, как и формула (4), формула трапеций (7) дает точный результат для линейной функции , поскольку .

    1. Метод Симпсона (парабол)

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

     Предварительно  найдем площадь S криволинейной трапеции, ограниченной сверху графиком параболы , сбоку – прямыми , и снизу – отрезком (см. рисунок 7).

     

     Рисунок 7 – Криволинейная фигура, ограниченная по сторонам прямыми и , а сверху графиком параболы  

     Пусть парабола проходит через три точки , , , где – ордината параболы в точке ; – ордината параболы в точке ; – ордината параболы в точке .

     Площадь криволинейной фигуры, показанной на рисунке 7 равна

           (8)

     Выразим эту площадь через  . Из равенств для ординат находим, что , .

     Подставляя  эти значения c и a в равенство (8), получаем 

      . (9)

     Получим теперь формулу парабол для вычисления интеграла  .

     Для этого отрезок  разобьем на 2n равных частей (отрезков) длиной точками , где . В точках деления вычисляем значения подынтегральной функции , где (рисунок 8).

 

     

     Рисунок 8 – Криволинейная фигура, полученная по методу Симпсона (парабол)

     Заменяем  каждую пару соседних элементарных криволинейных  трапеций с основаниями, равным h, одной элементарной параболической трапецией с основанием, равным 2h. На отрезке парабола проходит через три точки , , . Используя формулу (9), находим .

     Аналогично  находим

      ,

      .

     Сложив  полученные равенства, имеем  

     

     или

.
(10)
 

     Формула (10) называется формулой Симпсона (парабол). Абсолютная погрешность вычисления по формуле (10) оценивается соотношением

      , где  .

     Отметим, что формула (9) дает точное значение интеграла  во всех случаях, когда – многочлен, степень которого меньше или равна трем (тогда ). 
 
 
 
 
 
 

       

     Рисунок 9 – Блок-схема к алгоритму решения определенных интегралов по методу Симпсона (парабол)

 

    1. Описание  методов программирования, примененных в  работе
    1. Среда разработки и организация  решения

     Курсовая работа выполнена в интегрированной среде программирования MS Visual Studio 2008.

     Решение состоит из 2-х проектов:

    1. IntegralClassLibrary;
    2. Курсовая работа по ООП.
    1. Проект  библиотеки классов  «IntegralClassLibrary»

     Проект включает в себя файл «Integrals.cs», в котором определены классы, содержащие методы для осуществления вычислений и свойства для получения результатов расчетов и погрешностей. Этот проект представляет собой библиотеку классов, после компиляции, которой образуется файл «IntegralClassLibrary.dll». Данный файл должен находиться в одной папке с запускаемым файлом программы.

     В рамках библиотеки разработана иерархия классов с наследованием.

     Базовым классом определен абстрактный  класс Integral, в котором объявлены и реализованы все поля, свойства и методы общие для всех классов-наследников.

     Рисунок 10 – Схема класса Integral 

Accuracy – Свойство для получения погрешности интегрирования; 

Square – Свойство для получения вычисленного значения интеграла; 

Exact_value( ) – статический метод вычисления точного значения интеграла на основе аналитической формулы; 

F( ) – статический метод для вычисления значения функции;

Integral(double a, double b, int n) – конструктор класса, в котором инициализируются поля и вызывается метод Solve( ); 

Solve( ) – абстрактный метод определяющий общий интерфейс для всех потомков класса, определяется в наследниках содержит алгоритм вычисления уникальный для каждого метода вычисляющего интеграл; 

ToString( ) – возвращает текстовую строку, с результатами. 

     Базовый класс Integral порождает наследников, в которых реализуется абстрактный метод Solve( ), и передаются параметры вычислений конструктору базового класса.

     Рисунок 11 – Схема реализации наследования от класса Integral 

     Каждый  класс-наследник содержит конструктор, совпадающий с именем своего класса, а также реализует уже описанный метод Solve( ).

     Таким образом, весь код логически общий  для всех классов-наследников помещен  в базовый класс Integral при помощи механизма наследования.

     Реализация  вычислений скрыта от пользователей классов Trapezoids, Rectangles, Simpsons, благодаря механизму инкапсуляции.

     Полиморфизм проявляется при вызове метода Solve( ) имеющего разные реализации в каждом классе-наследнике. Данный метод не вызывается напрямую пользователем класса, вызов происходит в конструкторе каждого класса. Все три класса имеют одинаковый интерфейс для получения результатов вычисления.

    1. Проект  «Курсовая работа по ООП»

     Второй  проект состоит из файлов:

     «MainForm.cs», в котором определен класс главного окна приложения, а также методы и события, отвечающие за взаимодействие разных частей программы;

     «SettingsForm.cs» – в файле определен класс окна настроек отображения графики;

     «AboutBox.cs» – файл содержит класс окна «О программе».

     Обязательным  условием успешного построения проекта является соблюдение зависимостей, а именно наличие ссылок на библиотеки DLL: IntegralClassLibrary.dll и ZedGraph.dll. Первая, из которых разрабатывается в рамках первого рассмотренного проекта библиотеки «IntegralClassLibrary». Вторая представляет собой сторонний элемент управления не входящий в комплект поставки MS VS 2008, содержит классы позволяющие выводить графику в пространство указанного компонента, который в свою очередь располагается на главной форме приложения. Файл ZedGraph.dll должен находиться в папке с программой.

 

    1. Листинги программы
    1. Листинг файла «Integrals.cs»

using System; 

namespace Patsev.Integrals

{

    public abstract class Integral                                      //базовый класс

    {

        public Integral(double a, double b, int n)

        {

            this.a = a; this.b = b; this.n = n; 

            //вычисление интеграла

            Solve(); 

            //вычисление погрешности

            accuracy = Math.Abs(Exact_value(a, b) - square);

        }

       

        public static double F(double x)                               //возвращает значение подинтегральной функции

        {

            return 1 / Math.Sqrt(1 + x * x);

        } 

        protected static double Exact_value(double a, double b)       //точное значение определенного интеграла

Разработка программы, вычисляющей интеграл