Разработка приложения, реализующего визуализацию и обработку экспериментальных данных

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

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

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

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

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

Введение

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

Задачи:

1. Используя метод наименьших квадратов подобрать параметры эмпирической формулы.

2. Сравнить полином, полученный в приложении, с полиномом, построенным в MS Excel по исходным данным.

3. Сравнить график функции, полученный в приложении, графиком функции, построенным в MS Excel по исходным данным.

Средства:

1. Lazarus 0.9.30.4 для создания приложения.

2. Электронная таблица MS Excel.

3. Текстовой редактор MS Word.

1. Описание теории

Аппроксимация, или приближение - научный метод, состоящий в замене одних объектов другими, в том или ином смысле близкими к исходным, но более простыми. Под аппроксимацией в математике обычно подразумевается описание некоторой, чаще не заданной явно, зависимости или совокупности представляющих ее данных с помощью другой, более простой или более единообразной зависимости. Часто данные представляются в виде отдельных точек, координаты которых задаются таблицей данных. Эти точки называются узловыми. В этом случае аппроксимацией является процесс подбора эмпирической формулы, значения которой возможно мало отличались бы от опытных данных. Результат аппроксимации (построенная функция) может не проходить через заданные точки.

Геометрическое представление аппроксимации

2. Блок-схема

Укрупненная блок-схема алгоритма аппроксимации методом наименьших квадратов

3. Программирование. Разработка интерфейса приложения

Для создания приложения средствами Lazarus открываем среду разработки, создаем новый проект.

Интерфейс приложения будет состоять из 4 форм.

Форма 2

Форма 2 предварительное окно, на котором отображена тема курсовой. Кнопка Button1 предоставляет нам переход к главному окну. Форма 2 содержит компоненты:

Button1: TButton;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Форма 1 является основной формой приложения, где пользователь может аппроксимировать экспериментальные данные полиномиальной функции посредством загрузки экспериментальных данных из файла. А также пользователь может сравнить график, полученный в программе, с графиком, построенным в программе в MS Excel.

Форма 1

Форма 1 содержит компоненты:

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button5: TButton;

Button6: TButton;

Button7: TButton;

Chart1: TChart;

grafic1: TLineSeries;

grafic2: TLineSeries;

Edit1: TEdit;

MainMenu1: TMainMenu;

MenuItem1: TMenuItem;

MenuItem2: TMenuItem;

MenuItem3: TMenuItem;

MenuItem4: TMenuItem;

MenuItem5: TMenuItem;

MenuItem7: TMenuItem;

MenuItem8: TMenuItem;

MenuItem9: TMenuItem;

OpenDialog1: TOpenDialog;

StringGrid1: TStringGrid;

Форма 3 позволяет пользователю сравнить полином, полученный в приложении, с полиномом, построенным в MS Excel по исходным данным.

Форма 3

Форма 4 содержит краткую информацию об авторе, т.е. обо мне :)

Форма 4

Компоненты:

Button1: TButton;

Label1: TLabel;

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

Data.txt

Для того чтобы программа работала нужные экспериментальные данные.

Программа будет загружать их из файла. Создадим текстовой файл, назовем его data.txt.

Содержание текстового файла:

0.0 3.2965

0.2 4.999

0.4 5.9161

0.6 6.1762

0.8 5.2279

1.0 4.794

1.2 1.9072

1.4 0.8723

1.6 -0.414

1.8 -2.4468

2.0 -3.197

2.2 -3.9492

2.4 -4.1532

2.6 -3.1484

2.8 -1.5528

4. Результаты работы программы

При запуске программы откроется такое окно

При нажатии кнопки “Далее” будет выполнен переход к окну, где выполняются все вычисления и построения графика.

Выбираем файл с исходными данными и жмем «Открыть».

Программа автоматически заносит данные в таблицу.

Для построения полинома нажмем “График”

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

Полиномиальная функция

5. Листинг программы

Код Unit1

unit Unit1;

{$mode objfpc}{$H+}

interface

uses

Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,

StdCtrls, ExtCtrls, Grids, Menus, TAGraph, TASeries, TAFuncSeries,math;

type

{ TForm1 }

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button5: TButton;

Button6: TButton;

Button7: TButton;

Chart1: TChart;

grafic1: TLineSeries;

grafic2: TLineSeries;

Edit1: TEdit;

MainMenu1: TMainMenu;

MenuItem1: TMenuItem;

MenuItem2: TMenuItem;

MenuItem3: TMenuItem;

MenuItem4: TMenuItem;

MenuItem5: TMenuItem;

MenuItem7: TMenuItem;

MenuItem8: TMenuItem;

MenuItem9: TMenuItem;

OpenDialog1: TOpenDialog;

StringGrid1: TStringGrid;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure Button7Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Image1Click(Sender: TObject);

procedure MenuItem1Click(Sender: TObject);

procedure MenuItem3Click(Sender: TObject);

procedure MenuItem6Click(Sender: TObject);

procedure MenuItem9Click(Sender: TObject);

private

{ private declarations }

public

{ public declarations }

end;

var

Form1: TForm1;

x,y:array[0..100] of double;

nn:integer;

c,b:array[1..4] of real;

a,g:array[1..4,1..4] of real;

i,k,n,m:integer;

s:real;

implementation

{ TForm1 }

uses unit2,Unit3,Unit4;

procedure load(s:string);

var

inp:text;

begin

assign(inp,s);

reset(inp);

nn:=-1;

while not eof(inp) do

begin

inc(nn);

readln(inp,x[nn],y[nn]);

end;

close(inp);

end;

procedure TForm1.Button2Click(Sender: TObject);

var

i:integer;

begin

if opendialog1.Execute then

begin

Edit1.Text:=opendialog1.FileName;

load(opendialog1.FileName);

stringgrid1.RowCount:=nn+1;

for i:=1 to nn do

begin

stringgrid1.Cells[0,i]:=floattostr(x[i]);

stringgrid1.Cells[1,i]:=floattostr(y[i]);

end;

end;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

Form4.Show;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

close;

end;

procedure TForm1.Button5Click(Sender: TObject);

var

i,j:integer;

begin

grafic1.clear;

grafic2.clear;

for i:=1 to nn do

grafic1.AddXY(x[i],y[i]);

for m:=1 to 4 do

begin

for n:=1 to 4 do

begin

b[m]:=0;

a[m,n]:=0;

for i:=1 to nn do

begin

b[m]:=b[m]+y[i]*exp((m-1)*ln(x[i])) ;

a[m,n]:=a[m,n]+x[i]*exp((n+m-3)*ln(x[i]));

end;

end;

end;

for k:=1 to 3 do

begin

for m:=k+1 to 4 do

begin

g[m,k]:=a[m,k]/a[k,k];

for n:=1 to 4 do

begin

a[m,n]:=a[m,n]-g[m,k]*a[k,n];

end;

b[m]:=b[m]-g[m,k]*b[k];

end;

end;

for m:=4 downto 1 do

begin

n:=4;

s:=0;

while n>m do

begin

s:=s+a[m,n]*c[n];

n:=n-1;

end;

c[m]:=(b[m]-s)/a[m,m];

end;

for i:=1 to nn do

begin

s:=0;

for m:=1 to 4 do

s:=s+c[m]*exp((m-1)*ln(x[i]));

grafic2.AddXY(x[i],s);

end;

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

form3.Show;

end;

procedure TForm1.Button7Click(Sender: TObject);

begin

form2.Show;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

end;

procedure TForm1.Image1Click(Sender: TObject);

begin

end;

procedure TForm1.MenuItem1Click(Sender: TObject);

begin

end;

procedure TForm1.MenuItem3Click(Sender: TObject);

begin

end;

procedure TForm1.MenuItem6Click(Sender: TObject);

begin

end;

procedure TForm1.MenuItem9Click(Sender: TObject);

begin

close;

end;

initialization

{$I Unit1.lrs}

end.

Код Unit2

unit Unit2;

{$mode objfpc}{$H+}

interface

uses

Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,

StdCtrls, ExtCtrls;

type

{ TForm2 }

TForm2 = class(TForm)

Button1: TButton;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ private declarations }

public

{ public declarations }

end;

var

Form2: TForm2;

implementation

{ TForm2 }

uses unit1;

procedure TForm2.Button1Click(Sender: TObject);

begin

Form2.Hide;

Form1.Show;

end;

procedure TForm2.FormCreate(Sender: TObject);

begin

end;

initialization

{$I unit2.lrs}

end.

Код Unit3

unit Unit3;

{$mode objfpc}{$H+}

interface

uses

Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,

StdCtrls, ExtCtrls;

type

{ TForm3 }

TForm3 = class(TForm)

Button1: TButton;

Image1: TImage;

procedure Button1Click(Sender: TObject);

procedure Label1Click(Sender: TObject);

private

{ private declarations }

public

{ public declarations }

end;

var

Form3: TForm3;

implementation

{ TForm3 }

procedure TForm3.Button1Click(Sender: TObject);

begin

Form3.Hide;

end;

procedure TForm3.Label1Click(Sender: TObject);

begin

end;

initialization

{$I unit3.lrs}

end.

Код Unit4

unit Unit4;

{$mode objfpc}

interface

uses

Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,

StdCtrls;

type

{ TForm4 }

TForm4 = class(TForm)

Button1: TButton;

Label1: TLabel;

procedure Button1Click(Sender: TObject);

procedure Label1Click(Sender: TObject);

private

{ private declarations }

public

{ public declarations }

end;

var

Form4: TForm4;

implementation

{ TForm4 }

procedure TForm4.Label1Click(Sender: TObject);

begin

end;

procedure TForm4.Button1Click(Sender: TObject);

begin

Form4.Hide;

end;

initialization

{$I unit4.lrs}

end.

аппроксимация экспериментальный данные полиномиальный

Выводы

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

Список литературы

1. Основы программирования в среде Lazarus. Мансуров К.Т.

2. Электронный учебник «Lazarus с нуля» 2004г.

3. Карчевская М.П., Рамбургер О.Л. Лекции по информатике

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


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

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