Разработка приложения, реализующего визуализацию и обработку экспериментальных данных
Реализация приложения, которое выполняет считывание, обработку, визуализацию и аппроксимацию экспериментальных данных полиномиальной функции. Блок схема алгоритма аппроксимации методом наименьших квадратов. Разработка интерфейса и листинга программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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
Подобные документы
Метод наименьших квадратов. Возможные варианты расположения экспериментальных точек. Аппроксимация экспериментальных данных в программах Microsoft Excel, MathCAD и MatLAB. Вычисление средних значений и их сумм. Коэффициенты корреляции и детерминации.
курсовая работа [890,9 K], добавлен 30.10.2012Разработка алгоритма аппроксимации данных методом наименьших квадратов. Средства реализации, среда программирования Delphi. Физическая модель. Алгоритм решения. Графическое представление результатов. Коэффициенты полинома (обратный ход метода Гаусса).
курсовая работа [473,6 K], добавлен 09.02.2015Обработка экспериментальных данных с помощью программных продуктов. Редактирование и оформление электронных табличных расчётов. Метод наименьших квадратов: применение в качестве критерия близости суммы квадратов отклонений заданных и расчетных значений.
курсовая работа [275,5 K], добавлен 07.03.2011Разработка приложения для шифрования данных с помощью алгоритма DES5: процесс шифрования, расшифрования, получение ключей. Спецификация программы, процедуры и функции; описание интерфейса пользователя. Реализация задачи в среде программирования DELPHI.
курсовая работа [812,6 K], добавлен 27.03.2012Разработка и создание игры "Змейка". Использование динамически-активных принципов языка Java. Графические объекты программы. Описание игры, правила, теоретические сведения. Классы приложения. Типы данных. Реализация. Метод. Объект. Блок-схема игры.
курсовая работа [12,4 K], добавлен 18.06.2008Определение зависимости одной физической величины от другой. Применение метода наименьших квадратов с помощью программного обеспечения Mathcad. Суть метода наименьших квадратов. Корреляционный анализ, интерпретация величины корреляционного момента.
курсовая работа [63,8 K], добавлен 30.10.2013Разработка клиент-серверного приложения, позволяющего взаимодействовать друг с другом с использованием доступа к базам данных. Проектирование связи сервера с базой данных с помощью технологии ODBC. Разработка интерфейса программы, ее тестирование.
курсовая работа [352,0 K], добавлен 24.08.2016Описание структуры обучающего блока. Проектирование его алгоритма и лингвистического и информационного обеспечения. Организация его взаимодействия с базой данных. Разработка графического интерфейса. Программная реализация основных функций приложения.
дипломная работа [2,1 M], добавлен 20.12.2015Разработка технологии обработки информации, структуры и формы представления данных. Проектирование программных модулей. Блок-схема алгоритма и исходный код программы анализа арифметического выражения, синтаксического анализа простой программы на языке С.
курсовая работа [2,4 M], добавлен 12.12.2011Основные методы и алгоритмы исследования. Нахождение минимума среднеквадратичного отклонения. Особенности решения нормальных уравнений. Параметры линейной аппроксимирующей функции. Расчет значений аппроксимирующей функции и среднеквадратичного уклонения.
курсовая работа [749,3 K], добавлен 08.06.2019