Кускова інтерполяція функцій кубічними многочленами Бесселя

Автор работы: Пользователь скрыл имя, 16 Марта 2011 в 21:09, курсовая работа

Краткое описание

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

Програма виконує такі основні функції:

•Розпізнавання формули, яку введено у відповідному вікні;
•Пошук мінімального та максимального значення функції у певному діапазоні зміни аргументу, який вводиться у вікні програми;
•Побудова графіку функції у відповідному діапазоні;
•Розрахунок аргументів функцій та значень функцій у рівновіддалених точках, кількість яких вводиться у вікні програми та занесення розрахованих величин у відповідну таблицю;
•Проведення кускової інтерполяції кубічними многочленами Бесселя та побудова відповідної кривої.

Содержание работы

ЗАВДАННЯ НА ДИПЛОМНУ РОБОТУ СТУДЕНТУ 3

АНОТАЦІЇ 5

ЗМІСТ 7

ТЕОРЕТИЧНА ЧАСТИНА 9

1. ТЕХНІЧНЕ ЗАВДАННЯ 10

1.Підстави для розробки 10
2.Призначення розробки 10
3.Аналіз вимог до програмного забезпечення 10
1.Функціональні вимоги 10
2.Вимоги до складу та параметрів технічних засобів 11
3.Вимоги до інтерфейсу 11
4.Вимоги до інформаційної та програмної сумісності 12
5.Вимоги до тестування програмного забезпечення 12
1.4.Вимоги до програмної документації 12

1.4.1. Склад супроводжувальної документації 12

1.4.2. Вимоги до супроводжувальної документації 13

1.5. Стадії та етапи розробки 13

1.6. Порядок контролю і приймання 14

ПРАКТИЧНА ЧАСТИНА 15

2. АРХІТЕКТУРА, ФУНКЦІОНАЛЬНІ ТА ТЕХНІЧНІ ПОКАЗНИКИ 16

2.1. Призначення та область застосування 16

2.2. Опис та обґрунтування обраної архітектури 16

2.3. Функціональна специфікація 18

1.Опис функціональних можливостей 18
2.Опис інтерфейсу користувача 18
2.4.Технічна специфікація 23

2.4.1. Опис діаграми модулів 23

2.4.2. Опис і обґрунтування вхідних та вихідних даних 24

2.5. Математичне забезпечення 25



3. КОНСТРУЮВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ 29

3.1. Опис і обґрунтування обраних програмних засобів 29

3.2. Опис програми 29

3.2.1. Функціональні можливості 29

3.2.2. Опис логічної структури 30

3.2.3. Виклик і завантаження 32

3.2.4. Використані технічні засоби 32

4. ПРОГРАМА ТА МЕТОДИКА ВИПРОБУВАНЬ 33

4.1. Об‘єкт випробувань 33

4.2. Використані технічні засоби 33

4.3. Порядок та методика випробувань 33

4.4. Результати випробувань 35

5. ВИСНОВКИ 36

6. ВИКОРИСТАНА ЛІТЕРАТУРА 37

7. ДОДАТКИ 38

Додаток А. Код програми 38

Содержимое работы - 2 файла

Головна_Курсова_Фугело.doc

— 697.00 Кб (Скачать файл)

4. ПРОГРАМА ТА МЕТОДИКА  ВИПРОБУВАНЬ 

4.1. Об’єкт випробувань

     Об’єктом  випробувань є створене в процесі  виконання курсової роботи програмне  забезпечення. Для перевірки коректності роботи програми було проведено ряд тестів. Для тестування використовувалися файли з директорії  “Samples”, що постачається разом з програмним продуктом. 

     4.2. Використані технічні  засоби

     В процесі тестування було використано наступне програмне забезпечення:

                                                                Таблиця 4.1

Апаратна  конфігурація першої тестової платформи

Процесор Intel Core 2 Duo 2.8 GHz
ОЗП 800 МГц, 4096 мб.
Відеоадаптер GeForce GTS 250, 1024 Мб
Жорсткий  диск 240 Гб
 

                                                                Таблиця 4.2

Апаратна  конфігурація другої тестової платформи

Процесор Intel Celeron 1.7 GHz
ОЗП 400 МГц, 1024 мб.
Відеоадаптер ATI Radeon x1550, 256 Мб
Жорсткий  диск 240 Гб
 

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

     4.3. Порядок та методика  випробувань

     Для проведення комплексного тестування розробленого програмного забезпечення на коректність роботи необхідним є виконання набору тестів:

  • Побудова графіку функції SIN(X) у діапазоні від -3,14 до +3,14;
  • Побудова графіку інтерполяційного полінома для 15 інтерполяційних точок;
  • Завантаження інформації з файлів;
  • Збереження інформації у файли;
  • Налаштування параметрів відображення графіків;

  • Занесення координат точок інтерполяції у таблицю;
  • Відображення координат миші у системі координат графіку для перевірки правильності заповнення таблиці;
  • Проведення іншого контрольного тесту.

     Контрольний тест, за допомогою якого користувач зможе перевірити дане програмне  забезпечення:

  1. Завантажити з файлу “x^4-4x^3.GRF” функцію з діапазоном зміни аргументу від -2 до 4,5;
  2. Встановити кількість інтерполяційних точок рівною 15;
  3. Натиснути кнопку “Намалювати”;

  1. Якщо  після процесу малювання графіку функції на екран виведеться зображення, представлене на рис. 4.1 – програма працює вірно.

    Рис. 4.1. Вікно програми після виконання  контрольного тесту. 

     При проведенні тестування обов’язковим є дотримання послідовності проведення тестів.

       

     4.4. Результати випробувань

     Результат проведення комплексного тестування, створеного у процесі написання програмного забезпечення, згідно наведеного набору тестів є успішним. 

 

5. ВИСНОВКИ

     В процесі виконання курсової роботи створено програмне забезпечення, що реалізує алгоритм кускової інтерполяції кубічними многочленами Бесселя.

     Розроблений програмний продукт забезпечує надійну побудову графіків функцій та зручне управління цим процесом.

     Проведено тестування та корекцію роботи розробленого програмного продукту.

     Складено  необхідну технічну документацію, що повинна постачатись разом з розробленим програмним забезпеченням.

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

 

    6. ВИКОРИСТАНА ЛІТЕРАТУРА

    1. Богачев К.Ю. Практикум на ЭВМ. Методы приближения функций. – М., 1998. – 129 с.;
    2. Окулов С. М. Программирование в алгоритмах / С. М. Окулов. — М.: БИНОМ. Лаборатория знаний, 2002. — 341 с: ил.
    3. Попов В.Б. Паскаль и Делфи. Самоучитель – СПб.: Питер, 2004. – 544 с.
    4. Культин Н.Б. Delphi 6. программирование на Object Pascal – 526 с.
    5. Шейкер, Т.Д. Разработка приложений в системе Delphi: учеб. пособие/Т.Д. Шейкер. – Владивосток: Изд-во ДВГТУ, 2006 – 172 с.
    6. Практикум по Delphi для решения прикладных задач. Учебное пособие для студентов специальности «Прикладная информатика» Н.Новгород: ННГУ, 2005. 144 с.
    7.  
  • ДОДАТКИ
     

     Додаток А. Код програми

unit Unit1;

interface

uses

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

  ExtCtrls, StdCtrls, Gauges, MyMath, Unit2, Grids, DBGrids;

type

  TForm1 = class(TForm)

    StartBtn: TButton;

    Image1: TImage;

    ClearBtn: TButton;

    GroupBox1: TGroupBox;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    Gauge1: TGauge;

    FormEd: TEdit;

    XStart: TEdit;

    XEnd: TEdit;

    StepEd: TEdit;

    LinesCh: TCheckBox;

    MashCh: TCheckBox;

    GroupBox2: TGroupBox;

    Label5: TLabel;

    Label6: TLabel;

    XEd: TEdit;

    YEd: TEdit;

    StartBtn2: TButton;

    OpenDialog: TOpenDialog;

    SaveDialog: TSaveDialog;

    OpenBtn: TButton;

    SaveBtn: TButton;

    AbBtn: TButton;

    StringGrid1: TStringGrid;

    Button1: TButton;

    Label7: TLabel;

    Label8: TLabel;

    procedure StartBtnClick(Sender: TObject);

    procedure ClearBtnClick(Sender: TObject);

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);

    procedure FormCreate(Sender: TObject);

    procedure StartBtn2Click(Sender: TObject);

    procedure OpenBtnClick(Sender: TObject);

    procedure SaveBtnClick(Sender: TObject);

    procedure AbBtnClick(Sender: TObject);

    procedure Generate(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

implementation

{$R *.DFM}

var x,y:array of extended;

   xmnoj,ymnoj,ymin,ymax,xe,xs,step:extended;

   graph:boolean=false;

   ram:boolean=false;

   f:file of extended;

   fn:string;

   MC:cardinal;

procedure Bessel_func;

var n:cardinal;

    i_1,i,i1,i2,imh,imw:word;

    ind_mem,h,fxx,di,di1,p,c1,c2,c3,c4:real;

begin

   MC:=strtoInt(Form1.steped.text);

   xe:=strtofloat(Form1.xend.text);

   xs:=strtofloat(Form1.xstart.text);

   imh:=form1.image1.height;

   imw:=form1.image1.width;

   form1.image1.canvas.pen.color:=clred;

h:=(xe-xs)/(MC-1);

      for n:=0 to high(x)-1 do

      begin

      i:=trunc(abs(((MC-1)*(x[n]-xs)/(xe-xs))));i1:=i+1;i2:=i+2;i_1:=i-1;ind_mem:=i;

      i:=round(high(x)*i/(MC-1));i1:=round(high(x)*i1/(MC-1));

      i_1:=round(high(x)*i_1/(MC-1));i2:=round(high(x)*i2/(MC-1));

fxx:=(y[i1]-y[i])/h;

if ind_mem<=0 then di:=0 else di:=(y[i1]-y[i_1])/(2*h);

if ind_mem>=MC-2 then di1:=0 else di1:=(y[i2]-y[i])/(2*h);

c1:=y[i];c2:=di;c3:=(3*fxx-2*di-di1)/h;c4:=(di+di1-2*fxx)/(h*h);

p:=c1+c2*(x[n]-x[i])+c3*(x[n]-x[i])*(x[n]-x[i])+c4*(x[n]-x[i])*(x[n]-x[i])*(x[n]-x[i]);

if n=0 then form1.image1.canvas.Moveto(trunc((x[n]-xs)*xmnoj),imh-trunc((p-ymin)*ymnoj));

      form1.image1.canvas.lineto(trunc((x[n]-xs)*xmnoj),imh-trunc((p-ymin)*ymnoj));

      end;

end;

procedure TForm1.Generate(Sender: TObject);

var

  NCol, NRow: Integer;

  MaxCol,n:cardinal;

  str:string;

begin

MaxCol:=strtoInt(steped.text);

if MaxCol<=1 then

   begin

   showmessage('Невірна  кількість точок');

   exit;

   end;

with form1.StringGrid1 do begin

ColCount:=MaxCol+1;

Cells [0,0] := 'i:';

Cells [0,1] := 'Xi:';

Cells [0,2] := 'Yi:';

for n:=0 to MaxCol-1 do begin

  Cells [n+1,0] := IntToStr(n+1);

  Cells [n+1,1] :=FloatToStr(x[round(high(x)*n/(MaxCol-1))]);

  Cells [n+1,2] :=FloatToStr(y[round(high(y)*n/(MaxCol-1))]);

                        end;

                         end;

end;

procedure XYMinMax;

var n:cardinal;

   imh,imw:word;

begin

form1.caption:='Graphics - Пошук мінімальних і максимальних  значень для маштабування';

form1.gauge1.maxvalue:=high(y);

if form1.mashch.checked=true then

   begin

   imh:=form1.image1.height;

   imw:=form1.image1.width;

   ymax:=y[1];

   ymin:=y[1];

   for n:=0 to high(y) do

      begin

      if ymax<y[n] then ymax:=y[n];

      if ymin>y[n] then ymin:=y[n];

      form1.gauge1.progress:=n;

      end;

   if ymax-ymin=0 then ymnoj:=1

      else ymnoj:=imh/abs(ymax-ymin);

   if xe-xs=0 then xmnoj:=1

      else xmnoj:=imw/abs(xe-xs);

   end else

   begin

   ymnoj:=1;

   xmnoj:=1;

   end;

form1.caption:='Graphics - Пошук завершено';

end;

procedure ris;

var n:cardinal;

   imh,imw:word;

   xc,yc:integer;

begin

form1.caption:='Graphics - Побудова графіка';

form1.image1.canvas.pen.color:=clblack;

imh:=form1.image1.height;

imw:=form1.image1.width;

form1.gauge1.maxvalue:=high(x);

with form1.image1.canvas do

   begin

   pen.style:=psdot;

   moveto(0,imh-trunc((-ymin)*ymnoj));

   lineto(imw,imh-trunc((-ymin)*ymnoj));

   moveto(trunc((-xs)*xmnoj),0);

   lineto(trunc((-xs)*xmnoj),imh);

   pen.style:=pssolid;

   end;

if form1.linesch.checked=true then

   begin

   for n:=0 to high(x)-1 do

      begin

      with form1.image1.canvas do

         begin

         moveto(trunc((x[n]-xs)*xmnoj),imh-trunc((y[n]-ymin)*ymnoj));

ТИТУЛЬНА_Курсова_Фугело.doc

— 80.50 Кб (Открыть файл, Скачать файл)

Информация о работе Кускова інтерполяція функцій кубічними многочленами Бесселя