Автор работы: Пользователь скрыл имя, 09 Сентября 2011 в 08:48, курсовая работа
Цель  курсовой работы является приобретение и углубление знаний в области  высокоуровневых методов информатики и программирования, получения дополнительных практических навыков в использовании основных приёмов обработки экспериментальных данных, численного решения определенных интегралов. 
     Численное интегральное исчисление – часто используемая тема в математике. При решении ряда актуальных физических и технических задач встречаются определенные интегралы от функций, первообразные которых не выражаются через элементарные функции. Кроме того, в приложениях приходится иметь дело с определенными интегралами, сами подынтегральные функции которых не являются элементарными. Это приводит к необходимости использования приближенных методов вычисления определенных интегралов.
ВВЕДЕНИЕ
Нормативные ссылки
Список используемой литературы
     Рисунок 
4 – Ступенчатая фигура, состоящая из 
элементарных прямоугольников 
Разобьем основание этой трапеции, т.е. отрезок , на n равных частей (отрезков) длины (что равняется шагу разбиения) с помощью точек . Можно записать, что , где .
В середине каждого такого отрезка поставим ординату графика функции . Приняв эту ординату за высоту, построим прямоугольник с площадью .
Тогда сумма площадей всех n прямоугольников дает площадь ступенчатой фигуры, представляющую собой приближенное значение искомого определенного интеграла
| . | (5) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Рисунок 5 – Блок-схема к алгоритму решения определенных интегралов по методу прямоугольников
Формула трапеций выводится аналогично формуле прямоугольников: на каждом частичном отрезке криволинейная трапеция заменяется обычной.
Рисунок 6 – Криволинейная фигура, полученная по методу криволинейных трапеций
Разобьем промежуток на n равных частей длины . Абсциссы точек деления . Пусть соответствующие им ординаты графика функции. Тогда расчетные формулы для этих значений примут вид: , , где .
Заменим кривую ломаной линией, звенья которой соединяют концы ординат и , где . Тогда площадь криволинейной трапеции приближенно равна сумме площадей обычных трапеций с основаниями , и высотой :
| или | (6) | 
| – формула трапеций. | (7) | 
Абсолютная погрешность приближения, полученного по формуле трапеций (7), оценивается с помощью формулы , где – наибольшее значение в промежутке . Так же, как и формула (4), формула трапеций (7) дает точный результат для линейной функции , поскольку .
Если заменить график функции на каждом отрезке разбиения не отрезками прямых, как в методах прямоугольников и трапеций, а дугами парабол, то получим более точную формулу приближенного вычисления определенного интеграла .
Предварительно найдем площадь S криволинейной трапеции, ограниченной сверху графиком параболы , сбоку – прямыми , и снизу – отрезком (см. рисунок 7).
     Рисунок 
7 – Криволинейная фигура, ограниченная 
по сторонам прямыми 
 и 
, а сверху графиком параболы 
 
Пусть парабола проходит через три точки , , , где – ордината параболы в точке ; – ордината параболы в точке ; – ордината параболы в точке .
Площадь криволинейной фигуры, показанной на рисунке 7 равна
| (8) | 
Выразим эту площадь через . Из равенств для ординат находим, что , .
     Подставляя 
эти значения c 
и a в равенство (8), получаем 
| . | (9) | 
Получим теперь формулу парабол для вычисления интеграла .
Для этого отрезок разобьем на 2n равных частей (отрезков) длиной точками , где . В точках деления вычисляем значения подынтегральной функции , где (рисунок 8).
 
Рисунок 8 – Криволинейная фигура, полученная по методу Симпсона (парабол)
Заменяем каждую пару соседних элементарных криволинейных трапеций с основаниями, равным h, одной элементарной параболической трапецией с основанием, равным 2h. На отрезке парабола проходит через три точки , , . Используя формулу (9), находим .
Аналогично находим
,
.
     Сложив 
полученные равенства, имеем  
или
| (10) | 
Формула (10) называется формулой Симпсона (парабол). Абсолютная погрешность вычисления по формуле (10) оценивается соотношением
, где .
     Отметим, 
что формула (9) дает точное значение 
интеграла 
 во всех случаях, когда 
 – многочлен, степень которого меньше 
или равна трем (тогда 
). 
 
 
 
 
 
 
     
 
Рисунок 9 – Блок-схема к алгоритму решения определенных интегралов по методу Симпсона (парабол)
 
Курсовая работа выполнена в интегрированной среде программирования MS Visual Studio 2008.
Решение состоит из 2-х проектов:
Проект включает в себя файл «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( ) имеющего разные реализации в каждом классе-наследнике. Данный метод не вызывается напрямую пользователем класса, вызов происходит в конструкторе каждого класса. Все три класса имеют одинаковый интерфейс для получения результатов вычисления.
Второй проект состоит из файлов:
«MainForm.cs», в котором определен класс главного окна приложения, а также методы и события, отвечающие за взаимодействие разных частей программы;
«SettingsForm.cs» – в файле определен класс окна настроек отображения графики;
«AboutBox.cs» – файл содержит класс окна «О программе».
Обязательным условием успешного построения проекта является соблюдение зависимостей, а именно наличие ссылок на библиотеки DLL: IntegralClassLibrary.dll и ZedGraph.dll. Первая, из которых разрабатывается в рамках первого рассмотренного проекта библиотеки «IntegralClassLibrary». Вторая представляет собой сторонний элемент управления не входящий в комплект поставки MS VS 2008, содержит классы позволяющие выводить графику в пространство указанного компонента, который в свою очередь располагается на главной форме приложения. Файл ZedGraph.dll должен находиться в папке с программой.
 
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) //точное значение определенного интеграла
Информация о работе Разработка программы, вычисляющей интеграл