Программа для вычисления интегралов

Разработка программного обеспечения решения задач численного вычисления определенных интегралов. Анализ задачи, методы, инструменты: требования к аппаратным ресурсам и программным средствам. Руководство пользователя, тестирование приложения, применение.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 27.08.2012
Размер файла 1,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Содержание

1. Анализ задачи

1.1 Исследование предметной области

2. Инструменты разработки

2.1 Требования к аппаратным ресурсам

2.2 Требования к программным средствам разработки

3. Руководство пользователя

4. Тестовые примеры

5. Тестирование приложения

6. Применение программы

Список использованных источников

Приложение А

1. Анализ задачи

1.1 Исследование предметной области

Для решения задач численного вычисления определенных интегралов используются различные методы:

- Метод левых прямоугольников;

- Метод правых прямоугольников;

- Метод средних прямоугольников;

- Метод трапеций;

- Метод Симпсона.

Рассмотрим подробнее данные методы.

1.1.1 Метод левых прямоугольников

На рисунке 1 представлена геометрическая интерпретация метода левых прямоугольников. Формула левых прямоугольников имеет вид:

Рисунок 1 - Геометрическая интерпретация метода левых прямоугольников

1.1.2 Метод правых прямоугольников

На рисунке 2 представлена геометрическая интерпретация метода правых прямоугольников. Формула правых прямоугольников имеет вид:

Рисунок 2 - Геометрическая интерпретация метода правых прямоугольников

1.1.3 Метод правых прямоугольников

На рисунке 3 представлена геометрическая интерпретация метода средних прямоугольников. Формула средних прямоугольников имеет вид:

Рисунок 3 - Геометрическая интерпретация метода средних прямоугольников

1.1.4 Метод трапеций

На рисунке 4 представлена геометрическая интерпретация метода трапеций. Формула трапеций имеет вид:

Рисунок 4 - Геометрическая интерпретация метода трапеций

2. Инструменты разработки

2.1 Требования к аппаратным ресурсам

Данное программное обеспечение было разработано на компьютере на базе процессора Intel в операционной системе Windows 7. Предполагается, что приложение сможет запуститься на любом компьютере с более-менее современной комплектацией. Тестирование приложение проходило также в ОС Windows XP, сбоев в работе обнаружено не было.

2.2 Требования к программным средствам разработки

Для просмотра либо редактирования файлов проекта необходимо иметь установленное в системе программное обеспечение RAD Studio 2012 либо Delphi 2007. Среда Delphi была выбрана в силу того, что она является известной широкому кругу программистов и идеально подходит для обучения визуальному программированию.

3. Руководство пользователя

Для начала работы разработанного мной программного обеспечения необходимо запустить файл Project1.exe. После запуска программы на дисплее появляется главная форма приложения (Рисунок 5).

Рисунок 5 - Главная форма приложения

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

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

4. Тестовые примеры

Для тестирования приложения был выбран интеграл:

Данный интеграл является «не берущимся», поэтому вычислить его значение традиционными методами невозможно. Необходимо прибегать к одному из способов, описанных ранее.

5. Тестирование приложения

Переходим к тестированию приложения. Логика программы построена так, что при запуске приложения на графике уже представлено начальное решение интеграла методом трапеций со значениями пределов по умолчанию (Рисунок 6).

Рисунок 6 - Вычисленное значение интеграла при запуске приложения

Изменим значения пределов интегрирования и размер шага; вычислим значение интеграла для новых значений различными методами (Рисунок 7, 8, 9, 10, 11).

Рисунок 7 - Метод трапеций для новых пределов и шага

Рисунок 8 - Вычисление методом левых прямоугольников

Рисунок 9 - Вычисление методом средних прямоугольников

Рисунок 9 - Вычисление методом правых прямоугольников

Рисунок 10 - Вычисление методом Симпсона

Каждый метод вычисления имеет некоторую погрешность. Наиболее точным методом является метод Симпсона. В этом можно убедиться, поставив очень маленькое значение для шага вычисления. Тогда все методы вычисления будут давать результат, близкий по значению к результату, к которому привел метод Симпсона.

программный задача численный интеграл

6. Применение программы

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

Приложение

// Модуль UnitMath.pas

unit UnitMath;

interface

uses Chart;

type

CountType = (Trap, LeftRect, MiddleRect, RightRect, Simpson);

MyFunc = function(x: real): real;

function GetResult(x: real):real;

function CountIntegral( Low, High, Step: Real;

Chart: TChart; Func: MyFunc;

CountIntegralType: CountType ): real;

function IntegerToCountType(param: integer): CountType;

implementation

function GetResult(x: real):real;

begin

Result := cos(Pi/6)*x/sqrt(x);

end;

function CountIntegral( Low, High, Step: Real;

Chart: TChart; Func: MyFunc;

CountIntegralType: CountType): real;

var x, buf: real;

begin

result := 0;

x := Low - 0.2;

while x <= High + 0.2 do

begin

Chart.Series[1].AddXY(x, Func(x));

x := x + 0.001;

end;

x:= Low;

case CountIntegralType of

Trap: begin

buf := x;

Chart.Series[0].AddXY(buf, Func(buf));

x := x + Step;

while x <= High do

begin

Chart.Series[0].AddXY(x, Func(x));

result := result + Step*(Func(buf)+Func(x))/2;

buf := x;

x := x + Step;

end;

if (x - Step) < High then

begin

x := High;

Chart.Series[0].AddXY(x, Func(x));

result := result + (x - buf)*(Func(buf)+Func(x))/2;

end;

end;

RightRect: begin

buf := x;

x := x + Step;

while x <= High do

begin

Chart.Series[0].AddXY(buf, Func(x));

Chart.Series[0].AddXY(x, Func(x));

result := result + Step*Func(x);

x := x + Step;

buf := buf + Step;

end;

if (x - Step) < High then

begin

x := High;

Chart.Series[0].AddXY(buf, Func(x));

Chart.Series[0].AddXY(x, Func(x));

result := result + (x - buf)*Func(x);

end;

end;

MiddleRect: begin

buf := x;

x := x + Step;

while x <= High do

begin

Chart.Series[0].AddXY(buf, Func(Buf + Step/2));

Chart.Series[0].AddXY(x, Func(Buf + Step/2));

result := result + Step*Func(buf + Step/2);

x := x + Step;

buf := buf + Step;

end;

if (x - Step) < High then

begin

x := High;

Chart.Series[0].AddXY(buf, Func(buf+(x - buf)/2));

Chart.Series[0].AddXY(x, Func(buf+(x - buf)/2));

result := result + (x - buf)*Func(buf + (x - buf)/2);

end;

end;

LeftRect: begin

buf := x;

x := x + Step;

while x <= High do

begin

Chart.Series[0].AddXY(buf, Func(buf));

Chart.Series[0].AddXY(x, Func(buf));

result := result + Step*Func(buf);

buf := x;

x := x + Step;

end;

if (x - Step) < High then

begin

x := High;

Chart.Series[0].AddXY(buf, Func(buf));

Chart.Series[0].AddXY(x, Func(buf));

result := result + (x - buf)*Func(x);

end;

end;

Simpson:begin

buf := x;

Chart.Series[0].AddXY(buf, Func(buf));

x := x + Step;

while x <= High do

begin

Chart.Series[0].AddXY(x, Func(x));

result := result + (Step/6)*(Func(buf)+4*Func(buf + Step/2)+Func(x));

buf := x;

x := x + Step;

end;

if (x - Step) < High then

begin

x := High;

Step := x - buf;

Chart.Series[0].AddXY(x, Func(x));

result := result + (Step/6)*(Func(buf)+4*Func(buf + Step/2)+Func(x));

end;

end;

end;

end;

function IntegerToCountType(param: integer): CountType;

begin

case param of

0: result := Trap;

1: result := LeftRect;

2: result := MiddleRect;

3: result := RightRect;

4: result := Simpson;

end;

end;

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.