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

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

http: ///

http: ///

СОДЕРЖАНИЕ

  • Введение
  • 1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
    • 1.1 Обзор программных средств
    • 1.2 Математическая модель
    • 1.3 Блок-схема алгоритма решения поставленной задачи
  • 2. ПРАКТИЧЕСКАЯ ЧАСТЬ
    • 2.1 Решение поставленной задачи в Delphi
      • 2.1.1 Описание интерфейса программы в среде Delphi
      • 2.1.2 Перечень использованных в программе идентификаторов
      • 2.1.3 Тексты основных модулей и вид форм приложения
      • 2.1.4 Графическое представление результатов
    • 2.2 Решение поставленной задачи средствами MathCad
      • 2.2.1 Перечень использованных в программе идентификаторов
  • СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
  • ПРИЛОЖЕНИЯ

Введение

В наши дни невозможно представить жизнь без компьютера, особенно если это связано с работой на некотором предприятии. Невозможно представить сейчас производственную, учебную деятельность и в общем жизнь людей без компьютерных систем и технологий. Математические и научно-технические расчеты являются важной сферой применения персональных компьютеров. Часто они выполняются с помощью программ, написанных на языке высокого уровня. С каждым днем повышаются требования к уровню подготовки молодых специалистов в этой сфере деятельности. Для этого изучаются языки программирования и многочисленные, подчас весьма тонкие капризные численные методы математических расчетов [1]. Выполненная курсовая работа является показателем того, чем студент занимался все время учебы.

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

В данном проекте для получения решения поставленных задач используются такие пакеты, как Delphi, Mathcad. Для достижения цели выполнения курсовой работы, необходимо решить следующие задачи:

· произвести формулировку задачи с конкретными данными;

· провести предварительный анализ задачи, описать математический аппарат, который будет использоваться для её решения;

· в соответствии с определенным заданием разработать алгоритм решения задачи;

· разработать программу в среде Delphi, реализующую построенный алгоритм;

· решить задачу с помощью интегрированного пакета MathCAD;

· провести анализ полученных результатов;

· сделать общие выводы.

Предметом исследования являются методы решений определенных интегралов, и дифференциальных уравнений.

Данное исследование имеет научную и практическую значимость. Использование данных программ даёт возможность инженерам, физикам, простым пользователям, значительно быстрее и менее трудоёмко выполнить расчеты. Собранный материал может быть использован в курсе «Информатика» — в этом и заключается практическая значимость данного исследования.

1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

1. 1 Обзор программных средств

В первую очередь Delphi предназначался для профессионалов-разработчиков корпоративных информационных систем. Cреда Delphi включает в себя полный набор визуальных инструментов для скоростной разработки приложений (RAD — rapid application development), поддерживающей разработку пользовательского интерфейса и подключение к корпоративным базам данных. VCL — библиотека визуальных компонент, включает в себя стандартные объекты построения пользовательского интерфейса, объекты управления данными, графические объекты, объекты мультимедиа, диалоги и объекты управления файлами, управление DDE и OLE.

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

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

1.2 Математическая модель

Метод Рунге-Кутта 4-го порядка точности.

Смещение из точки [xk; yk] в точку происходит не сразу, а через промежуточные точки. На практике наибольшее распространение получил метод 4-го порядка точности. Значение функции в i+1-й точке вычисляется следующим образом:

(1. 4)

Метод Рунге-Кутта обладает достаточно высокой точностью, легко программируется, так как для вычисления нужно знать лишь одно значение yi. С помощью этого метода можно начинать решение ДУ. Величина шага изменения аргумента х легко меняется на любом этапе вычисления.

Недостатки:

1)необходимость четыре раза вычислять значение функции на каждом шаге;

2)отсутствие легко определяемой оценки ошибки метода.

Для оценки правильности шага рассчитывают:

,

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

Метод Рунге-Кутта имеет порядок точности, сопоставимый со значением шага, взятым в 4-й степени. Для оценки погрешности метода пользуются формулой Рунге:

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

Метод наименьших квадратов.

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

Для определения коэффициентов (где i=1,2…m) используют аппроксимацию методом наименьших квадратов [3]. Функционал находится по формуле

,

где n — количество пар значений аргумента xi и функции yi. Т.к. S должен быть минимален, то первые частные производные от S по всем коэффициентам полинома должны равняться нулю.

Вычислим их и приравняем к нулю:

(1)

После преобразования система слегка упростится:

(2)

Если полином первой степени, то 2 уравнения, если шестой степени, то 7 уравнений. Введём следующие обозначения:

С учётом этих обозначений система (2) перепишется следующим образом:

(3)

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

Среднеквадратичное отклонение вычисляется по формуле:

1. 3 Блок-схемы алгоритмов решений поставленных задач

Рисунок 1. 1 — Блок-схема метода Рунге-Кутта

Рисунок 1.2 — Блок-схема аппроксимации

2. ПРАКТИЧЕСКАЯ ЧАСТЬ

2.1 Решение поставленной задачи в Delphi

2.1.1 Описание интерфейса программы в среде Delphi

Интерфейс программы представлен главной формой. Форма имеет три вкладки Page Control. Первая вкладка имеет название «Задание 1» на ней находятся кнопки «Выйти», «Сохранить график», «Вычислить», «Очистить».

Компонент TChart отображает график, результаты расчетов выводятся на поле Memo. Также используя компонент CheckBox выбираем метод. Следующие две вкладки «Задание 2» и «Задание 2(аппроксимация)» имеют похожий набор компонентов. Это компоненты для ввода вывода информации, а также компоненты для сохранения расчетов и графиков в файл. Для визуального улучшения интерфейса программы используeтся XPManifest.

2.1.2 Перечень использованных в программе идентификаторов

Перечень использованных в программе идентификаторов находится в таблице (Таблица 1. 1).

Таблица 1.1 — Перечень использованных в программе идентификаторов

Идентификаторы

p3, p6, p7

массивы для хранения коэффициентов полинома

x, f

массивы для хранения значений x, y

T, C

массивы для хранения коэффициентов T и C

Y

значение функции

DataX, DataY, StrXi, StrYi, Code

переменные используемые при работе с файлом

B, Bik

используются при прямом ходе метода Гаусса

A

массив для хранения вычисленных коэф. полинома

Delta

среднеквадратичное отклонение

i, ii, j, jj, n, k, s

переменные для работы циклов

Xi, Yi

используются для преобразования строк в число

f, x, x0,y, t, m

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

2.1.3 Тексты основных модулей и вид форм приложения

Тексты основных модулей приведены в приложении А.

Вид формы

Рисунок 2.1 — Меню программы

Рисунок 2. 2 — Форма программы

2.1.4 Графическое представление результатов

Рисунок 2. 2 — Графическое представление результатов

2. 2 Решение поставленной задачи средствами MathCad

Рисунок 2. 5 — Решение поставленной задачи средствами MathCad

2.2. 1 Перечень использованных в программе идентификаторов

Перечень использованных в программе идентификаторов (Таблица 2. 1).

Таблица 2. 1 — Перечень использованных в программе идентификаторов

Идентификаторы

x

значения аргумента

f

значения функции

A

значения коэффициентов полинома

Poly

значение функции на основе коэф.

Q

среднеквадратичное отклонение

xx, i, j

переменные цикла

ЗАКЛЮЧЕНИЕ

интеграл колебание интерфейс затухание

При решении задач применено два различных средства программирования — среда DELPHI и MathCad. Это позволяет сравнить их в конкретной ситуации и оценить их достоинства и недостатки.

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

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

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

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Культин Н. Б. Основы программирования в Delphi 7. — СПб.: БХВ.- Петербург, 2003.

2. Delphi для «чайников». Нейл Дж. Рубенкинг. Киев — Москва: Диалектика, 1997.

3. Наранович О. И., Скобля С. Г. Информатика: методические указания и задания к лабораторным работам для студентов 2-го курса дневной формы обучения специальностей 40 01 02, 36 01 03, 36 01 01. Часть 3. -Барановичи: БарГУ, 2005.

4. Наранович О. И., Скобля С. Г. Информатика: задания и методические указания по выполнению, оформлению и защите курсовых работ для студентов дневной и заочной форм обученияспециальностей 1−36 01 01, 1−36 01 03, 1−53 01 01 Часть 4. -Барановичи: БарГУ, 2005.

5. Фаронов В. В. Delphi. Программирование на языке высокого уровня: Учебник для ВУЗов. — СПб.: Питер, 2005.

ПРИЛОЖЕНИЯ

Приложение А

Код программы

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, ComCtrls, StdCtrls,

Buttons;

type

TForm4 = class (TForm)

BitBtn1: TBitBtn;

Memo1: TMemo;

Memo2: TMemo;

Memo3: TMemo;

PageControl1: TPageControl;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

Chart1: TChart;

Series1: TLineSeries;

Series2: TLineSeries;

Series3: TLineSeries;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

BitBtn5: TBitBtn;

procedure BitBtn1Click (Sender: TObject);

procedure BitBtn2Click (Sender: TObject);

procedure BitBtn3Click (Sender: TObject);

procedure BitBtn4Click (Sender: TObject);

procedure BitBtn5Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

x0,xn, y0, k, k1, k2,k3,k4,h: real; x, y: extended;

implementation

uses Unit3;

{$R *. dfm}

function f (x, y: extended):extended;

begin

f: =y*sqrt (abs (ln (x)))+sqrt (abs (sin (y*x)/cos (y*x)))-y*exp ((4/5)*abs (ln (x)))+y*x*x*x/cos (x)+y;

end;

procedure TForm4. BitBtn1Click (Sender: TObject);

begin

x0: =strtofloat (form3. edit1. text);

xn: =strtofloat (form3. edit2. text);

y0: =strtofloat (form3. edit3. text);

k: =strtofloat (form3. edit4. text);

h: =(xn-x0)/k;

//x: =x0;

y: =y0;

memo1. lines. add ('x= '+floattostr (x)+' y= '+floattostr (y));

//

while x< xn-h do begin

k1: =h*f (x, y);

k2: =h*f (x+h/2,y+k½);

k3: =h*f (x+h/2,y+k2/2);

k4: =h*f (x+h, y+k3);

x: =x+h;

y: =y+(k1+2*k2+2*k3+k4)/6;

memo1. lines. add ('x= '+floattostrf (x, fffixed, 7,5)+' y= '+floattostrf (y, fffixed, 7,5));

series1. addxy (y, x);

end;

memo1. lines. add ('Eiee?anoai ?acaeaiee — '+floattostr (k));

//

end;

procedure TForm4. BitBtn2Click (Sender: TObject);

begin

x0: =strtofloat (form3. edit1. text);

xn: =strtofloat (form3. edit2. text);

y0: =strtofloat (form3. edit3. text);

k: =strtofloat (form3. edit5. text);

h: =(xn-x0)/k;

//

x: =x0;

y: =y0;

memo2. lines. add ('x= '+floattostr (x)+' y= '+floattostr (y));

//

while x< xn-h do begin

k1: =h*f (x, y);

k2: =h*f (x+h/2,y+k½);

k3: =h*f (x+h/2,y+k2/2);

k4: =h*f (x+h, y+k3);

x: =x+h;

y: =y+(k1+2*k2+2*k3+k4)/6;

memo2. lines. add ('x= '+floattostrf (x, fffixed, 7,5)+' y= '+floattostrf (y, fffixed, 7,5));

series2. addxy (y, x);

end;

memo2. lines. add ('Eiee?anoai ?acaeaiee — '+floattostr (k));

//

end;

procedure TForm4. BitBtn3Click (Sender: TObject);

begin

x0: =strtofloat (form3. edit1. text);

xn: =strtofloat (form3. edit2. text);

y0: =strtofloat (form3. edit3. text);

k: =strtofloat (form3. edit6. Text);

h: =(xn-x0)/k;

x: =x0;

y: =y0;

memo3. lines. add ('x= '+floattostr (x)+' y= '+floattostr (y));

//

while x< xn-h do begin

k1: =h*f (x, y);

k2: =h*f (x+h/2,y+k½);

k3: =h*f (x+h/2,y+k2/2);

k4: =h*f (x+h, y+k3);

x: =x+h;

y: =y+(k1+2*k2+2*k3+k4)/6;

memo3. lines. add ('x= '+floattostrf (x, fffixed, 7,5)+' y= '+floattostrf (y, fffixed, 7,5));

series3. addxy (y, x);

end;

memo3. lines. add ('Eiee?anoai ?acaeaiee — '+floattostr (k));

//

end;

procedure TForm4. BitBtn4Click (Sender: TObject);

begin

memo1. Clear;

memo2. Clear;

memo3. Clear;

series1. clear;

series2. clear;

series3. clear;

end;

procedure TForm4. BitBtn5Click (Sender: TObject);

begin

form4. hide;

end;

end.

Приложение Б

Рисунок 1.1 — График

ПоказатьСвернуть
Заполнить форму текущей работой