Автор работы: Пользователь скрыл имя, 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) //точное значение определенного интеграла
Информация о работе Разработка программы, вычисляющей интеграл