Расчет доходов и расходов по общепиту
Постановка задачи и исходные данные. Графическая схема алгоритма решения задачи. Программа на языке Delphi и ее интерфейс. Расчет параметров регрессионных зависимостей с помощью надстройки Пакет анализа. Стандартные компоненты палитры компонент Delphi.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 22.03.2009 |
Размер файла | 1,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Содержание
1. Введение
2. Постановка задачи и исходные данные
3. Графическая схема алгоритма решения задачи
4. Программа на языке Delphi
5. Интерфейс программы
6. Расчет параметров регрессионных зависимостей с помощью надстройки Пакет анализа
7. График
8. Стандартные компоненты палитры компонент Delphi, расположенные на странице Standart
Заключение
Список использованных источников
1. Введение
Регрессионный и корреляционный анализы -- это эффективные методы, которые разрешают анализировать значительные объемы информации с целью исследования вероятной взаимосвязи двух или больше переменных.
Регрессионный анализ используется по двум причинам.
1. описание зависимости между переменными помогает установить наличие возможной причинной связи;
2. получение аналитической зависимости между переменными дает возможность предусматривать будущие значения зависимой переменной по значениям независимых переменных.
В природе и обществе существует два типа связей:
· Функциональные (характеризуются точностью и полнотой охвата).
· Корреляционные.
При функциональных связях, каждому значению величины факторного признака (Х) соответствует только одно строго определенное значение результативного признака (У). Причем размер этого изменения можно точно определить в каждом определенном случае и для каждой единицы совокупности. Чаще всего такие связи рассматриваются точными науками.
Массовые явления общественной жизни характеризуются многообразием факторов, их взаимосвязью, результативный признак может изменяться под влиянием этих факторов. Связь между факторными и результативными признаками будет неполной, и будет проявляться лишь в средней степени. Это определяется корреляционными связями (характеризуется тем, что средняя величина результативного признака изменяется под воздействием изменения многих факторных признаков). Корреляционные связи проявляются в массе общественных явлений. Связи между явлениями подразделяются в зависимости от направления движения, на прямые (направление изменения результативного признака совпадают с направлением изменения факторного) и обратные (если факторный признак растет, то результат понижается). Выявление связей между признаками определяется на основе корреляционного метода, где корреляция («соотношение») характеризует взаимозависимость двух случайных величин Х и У, показывая влияние одного или нескольких факторов на изучаемый процесс. В ходе корреляционного анализа выявляется теснота связи. Показателем, характеризующим форму и тесноту связи, является линейный коэффициент корреляции.
Практически для вычисления параметров функций применяются специальные компьютерные программы, среди которых наибольшие возможности для толкования результатов пользователю предоставляют программы линейного регрессионного анализа. Поэтому большинство аналитиков отдают предпочтение именно нему.
Концепции и методы, которые используются во множественном регрессионном анализе, практически те же самые, но с некоторыми модификациями и дополнениями, связанными с изучением нескольких факторов одновременно.
2. Постановка задачи и исходные данные
Исходные данные:
1. набор значений фактора “Транспортные расходы по общепиту” () и набор значений результата “Валовые доходы по общепиту” (), где n - количество значений;
Райпо |
Затраты на сырье и материалы, млн. р. |
Полная факт.себестоимость, млн р. |
|
Брестское райпо |
50 |
66 |
|
Ганцевичское райпо |
345 |
471 |
|
Жабинковское райпо |
464 |
973 |
|
Кобринское райпо |
464 |
941 |
|
Барановичское райпо |
734 |
1004 |
|
Каменецкое райпо |
771 |
1478 |
|
Малоритское райпо |
818 |
1691 |
|
Ляховичское райпо |
1208 |
2195 |
|
Дрогичинское райпо |
1525 |
2932 |
|
Лунинецкое райпо |
1911 |
2985 |
|
Столинское райпо |
1966 |
2728 |
|
Пинское райпо |
2695 |
4952 |
|
Березовское райпо |
3457 |
5736 |
|
Ивацевичское райпо |
4105 |
7118 |
|
Пружанское райпо |
4798 |
8275 |
|
Ивановское райпо |
5854 |
9658 |
2. две функции и , которые будут использоваться как регрессионные зависимости;
3. формулы, с помощью которых можно рассчитать значения параметров и таких, что зависимость наилучшим образом приближает исходные наборы фактора и результата , а также указываются аналогичные формулы для расчета параметров и .
a. средние значения этих наборов
, ;
b. дисперсии
, ;
c. среднеквадратические отклонения:
, ;
d. коэффициента парной корреляции:
;
e. если , то считают, что между фактором и результатом отсутствует функциональная зависимость, а при считают, что функциональная зависимость существует;
f. вычисление характеристик регрессионных зависимостей и . Для этого надо вычислить:
· значения параметров , , и по формулам, указанным в задании (указанные формулы выведены из условия минимальности суммы квадратов отклонений значений и от в точках );
· вычислить значения результата по регрессионным зависимостям:
, ;
· вычислить остаточные дисперсии:
, ;
· вычислить коэффициенты Фишера, характеризующие качество приближений функций и к заданному результату :
, ;
g. в заключение алгоритм должен сравнить полученные значения и - лучшей регрессионной зависимостью является та, для которой коэффициент Фишера имеет большее значение;
3. Графическая схема алгоритма решения задачи.
4. Программа на языке Delphi
procedure TForm1.Button1Click(Sender: TObject);
begin
{Ввод исходных данных}
Edit1.Text:='16';
StringGrid1.Cells[0,0]:='50';
StringGrid1.Cells[0,1]:='345';
StringGrid1.Cells[0,2]:='464';
StringGrid1.Cells[0,3]:='464';
StringGrid1.Cells[0,4]:='734';
StringGrid1.Cells[0,5]:='771';
StringGrid1.Cells[0,6]:='818';
StringGrid1.Cells[0,7]:='1208';
StringGrid1.Cells[0,8]:='1525';
StringGrid1.Cells[0,9]:='1911';
StringGrid1.Cells[0,10]:='1966';
StringGrid1.Cells[0,11]:='2695';
StringGrid1.Cells[0,12]:='3457';
StringGrid1.Cells[0,13]:='4105';
StringGrid1.Cells[0,14]:='4798';
StringGrid1.Cells[0,15]:='5854';
StringGrid2.Cells[0,0]:='66';
StringGrid2.Cells[0,1]:='471';
StringGrid2.Cells[0,2]:='973';
StringGrid2.Cells[0,3]:='941';
StringGrid2.Cells[0,4]:='1004';
StringGrid2.Cells[0,5]:='1478';
StringGrid2.Cells[0,6]:='1691';
StringGrid2.Cells[0,7]:='2195';
StringGrid2.Cells[0,8]:='2932';
StringGrid2.Cells[0,9]:='2985';
StringGrid2.Cells[0,10]:='2728';
StringGrid2.Cells[0,11]:='4952';
StringGrid2.Cells[0,12]:='5736';
StringGrid2.Cells[0,13]:='7118';
StringGrid2.Cells[0,14]:='8275';
StringGrid2.Cells[0,15]:='9658';
Label2.Visible:=True;
Label3.Visible:=True;
Label4.Visible:=True;
Image2.Visible:=True;
Image3.Visible:=True;
Button2.Visible:=True;
Button3.Visible:=True;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
x,y,x1,y1:array[1..32] of real;
i,n:integer;
vcx,vcy,credx,credy,dix,diy,dx,dy,sko_x,sko_y,Kpr,dix1,diy1,dx1,dy1,kf,kf2:real;
A1,A2,A3,d1,d12,a01,a02,B1,B2,B3,d2,d22,a11,a12:real;
x2,y2,dsx,dsy,a_01,a_02,a_11,a_12,x_1,y_1,odx,ody,fi1,fi2:string;
begin
n:=StrToInt(Edit1.Text);
for i:=1 to n do
begin
x[i]:=StrToFloat(StringGrid1.Cells[0,i-1]);
y[i]:=StrToFloat(StringGrid2.Cells[0,i-1]);
end;
{Среднее x и y}
vcx:=0;
vcy:=0;
for i:=1 to n do
begin
vcx:=vcx+x[i];
vcy:=vcy+y[i];
end;
credx:=vcx/n;
str(credx:5:1,x2);
Edit2.Text:=x2;
credy:=vcy/n;
str(credy:5:1,y2);
Edit3.Text:=y2;
{Вычисление дисперсий}
dix:=0;
diy:=0;
for i:=1 to n do
begin
dix:=dix+sqr(x[i]-credx);
diy:=diy+sqr(y[i]-credy)
end;
dx:=dix/(n-1);
dy:=diy/(n-1);
str(dx:5:1,dsx);
Edit8.Text:=dsx;
str(dy:5:1,dsy);
Edit9.Text:=dsy;
{Вычисление среднеквадратических отклонений}
sko_x:=sqrt(dx);
sko_y:=sqrt(dy);
{Вычисление коэффициента парной корреляции}
Kpr:=0;
for i:=1 to n do
Kpr:=Kpr+(x[i]-credx)*(y[i]-credy);
Kpr:=Kpr/((n-1)*sko_x*sko_y);
if abs(Kpr)>0.5
then
{Нахождение параметров а0 и а1 для 1-ой регрессии}
begin
A1:=0;
A2:=0;
A3:=0;
for i:=1 to n do
begin
d1:=exp(1/x[i]);
A1:=A1+d1;
A2:=A2+sqr(d1);
A3:=A3+d1*y[i];
d12:=n*A2-sqr(A1);
a01:=(vcy*A2-A1*A3)/d12;
str(a01:5:1,a_01);
Edit4.Text:=a_01;
a02:=(n*A3-A1*vcy)/d12;
str(a02:5:1,a_02);
Edit5.Text:=a_02;
end;
{Нахождение параметров а0 и а1 для 2-ой регрессии}
B1:=0;
B2:=0;
B3:=0;
for i:=1 to n do
begin
d2:=(sqrt(x[i]))/ln(x[i]);
B1:=B1+d2;
B2:=B2+sqr(d2);
B3:=B3+d2*y[i];
d22:=n*B2-sqr(B1);
a11:=(vcy*B2-B1*B3)/d22;
str(a11:5:1,a_11);
Edit6.Text:=a_11;
a12:=(n*B3-B1*vcy)/d22;
str(a12:5:1,a_12);
Edit7.Text:=a_12;
end;
{Вычисление значений x1 и y1}
for i:=1 to n do
begin
x1[i]:=a01+a02*(exp(1/x[i]));
y1[i]:=a11+a12*(sqrt(x[i])/ln(x[i]));
Str(x1[i]:3:1,x_1);
Str(y1[i]:3:1,y_1);
StringGrid3.Cells[0,i-1]:=(x_1);
StringGrid4.Cells[0,i-1]:=(y_1);
end;
{Вычисление остаточных дисперсий}
dix1:=0;
diy1:=0;
for i:=1 to n do
begin
dix1:=dix1+(sqr(y[i]-x1[i]));
diy1:=diy1+(sqr(y[i]-y1[i]));
end;
dx1:=dix1/(n-1);
str(dx1:5:1,odx);
Edit10.Text:=odx;
dy1:=diy1/(n-1);
str(dy1:5:1,ody);
Edit11.Text:=ody;
{Вычисление коэффициентов Фишера}
kf:=dy/dx1;
str(kf:5:1,fi1);
Edit12.Text:=fi1;
kf2:=dy/dy1;
str(kf2:5:1,fi2);
Edit13.Text:=fi2;
if kf>kf2
then
begin
Label23.Visible:=True;
end
else
begin
Label24.Visible:=True;
end
end
else
begin
Label25.Caption:='Связь между х и у слабая';
label25.Visible:=True;
end;
{Показ невидимых частей}
Label7.Visible:=True;
Label8.Visible:=True;
Label9.Visible:=True;
Label10.Visible:=True;
Label11.Visible:=True;
Label12.Visible:=True;
Label13.Visible:=True;
Label14.Visible:=True;
Label15.Visible:=True;
Label16.Visible:=True;
Label17.Visible:=True;
Label18.Visible:=True;
Label19.Visible:=True;
Label20.Visible:=True;
Label21.Visible:=True;
Label22.Visible:=True;
Edit2.Visible:=True;
Edit3.Visible:=True;
Edit4.Visible:=True;
Edit5.Visible:=True;
Edit6.Visible:=True;
Edit7.Visible:=True;
Edit8.Visible:=True;
Edit9.Visible:=True;
Edit10.Visible:=True;
Edit11.Visible:=True;
Edit12.Visible:=True;
Edit13.Visible:=True;
StringGrid1.Visible:=False;
StringGrid2.Visible:=False;
StringGrid3.Visible:=True;
StringGrid4.Visible:=True;
Button5.Visible:=True;
Button6.Visible:=True;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
{Переход на Form2}
Form1.Hide;
Form2.Show;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
{переход на Form3}
Form1.Hide;
Form3.Show;
Button4.Visible:=True;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
{Переход на Form3}
Form1.Hide;
Form3.Show;
end;
procedure TForm1.Button6Click(Sender: TObject);
{очистка полей Edit и StringGrid}
var
i:integer;
begin
for i:=1 to StringGrid1.RowCount do
StringGrid1.Cells[0,i-1]:='';
for i:=1 to StringGrid2.RowCount do
StringGrid2.Cells[0,i-1]:='';
for i:=1 to StringGrid3.RowCount do
StringGrid3.Cells[0,i-1]:='';
for i:=1 to StringGrid4.RowCount do
StringGrid4.Cells[0,i-1]:='';
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
Edit4.Text:='';
Edit5.Text:='';
Edit6.Text:='';
Edit7.Text:='';
Edit8.Text:='';
Edit9.Text:='';
Edit10.Text:='';
Edit11.Text:='';
Edit12.Text:='';
Edit13.Text:='';
Label7.Show;
Label8.Show;
Label9.Show;
Label11.Show;
Label12.Show;
Label13.Show;
Label14.Show;
Label15.Show;
Label16.Show;
Label17.Show;
Label18.Show;
Label19.Show;
Label20.Show;
Label21.Show;
Label22.Show;
Label23.Hide;
Label24.Hide;
label25.Hide;
StringGrid3.Hide;
StringGrid4.Hide;
StringGrid1.Show;
StringGrid2.Show;
Edit2.Show;
Edit3.Show;
Edit4.Show;
Edit5.Show;
Edit6.Show;
Edit7.Show;
Edit8.Show;
Edit9.Show;
Edit10.Show;
Edit11.Show;
Edit12.Show;
Edit13.Show;
Button5.Visible:=False;
end;
procedure TForm1.Edit1Change(Sender: TObject);
var
i:integer;
begin
{Очистка при изменении данных в Edit1}
for i:=1 to StringGrid1.RowCount do
StringGrid1.Cells[0,i-1]:='';
for i:=1 to StringGrid2.RowCount do
StringGrid2.Cells[0,i-1]:='';
for i:=1 to StringGrid3.RowCount do
StringGrid3.Cells[0,i-1]:='';
for i:=1 to StringGrid4.RowCount do
StringGrid4.Cells[0,i-1]:='';
Edit2.Text:='';
Edit3.Text:='';
Edit4.Text:='';
Edit5.Text:='';
Edit6.Text:='';
Edit7.Text:='';
Edit8.Text:='';
Edit9.Text:='';
Edit10.Text:='';
Edit11.Text:='';
Edit12.Text:='';
Edit13.Text:='';
Label7.Hide;
Label8.Hide;
Label9.Hide;
Label11.Hide;
Label12.Hide;
Label13.Hide;
Label14.Hide;
Label15.Hide;
Label16.Hide;
Label17.Hide;
Label18.Hide;
Label19.Hide;
Label20.Hide;
Label21.Hide;
Label22.Hide;
Label23.Hide;
Label24.Hide;
label25.Hide;
StringGrid3.Hide;
StringGrid4.Hide;
StringGrid1.Show;
StringGrid2.Show;
Edit2.Hide;
Edit3.Hide;
Edit4.Hide;
Edit5.Hide;
Edit6.Hide;
Edit7.Hide;
Edit8.Hide;
Edit9.Hide;
Edit10.Hide;
Edit11.Hide;
Edit12.Hide;
Edit13.Hide;
end;
end.
5. Интерфейс программы
Рис. 1 - Интерфейс программы в СП Delphi. Главная форма.
Рис. 2 - Форма №3. График.
6. Расчет параметров регрессионных зависимостей с помощью надстройки Пакет анализа
Рис. 3 - Проверка исходных данных в MS Excel с помощью надстройки Пакет анализа.
Рис. 4 - Вывод итогов для регрессии.
7. График
-
Рис. 5 - График зависимости фактической себестоимости от полной фактической себестоимости.
8. Стандартные компоненты палитры компонент Delphi, расположенные на странице Standart.
На первой странице Палитры Компонент размещены 14 объектов определенно важных для использования.
Курсор - не компонент, просто пиктограмма для быстрой отмены выбора какого-либо объекта.
1. TMainMenu позволяет Вам поместить главное меню в программу. При помещении TMainMenu на форму это выглядит, как просто иконка. Иконки данного типа называют "невидимыми компонентом", поскольку они невидимы во время выполнения программы. Создание меню включает три шага: (1) помещение TMainMenu на форму, (2) вызов Дизайнера Меню через свойство Items в Инспекторе Объектов, (3) определение пунктов меню в Дизайнере
Меню.
2. TPopupMenu позволяет создавать всплывающие меню. Этот тип меню появляется по щелчку правой кнопки мыши на объекте, к которому привязано данное меню. У всех видимых объектов имеется свойство PopupMenu, где и указывается нужное меню. Создается PopupMenu аналогично главному меню.
3. TLabel служит для отображения текста на экране. Вы можете изменить шрифт и цвет метки, если дважды щелкнете на свойство Font в Инспекторе Объектов.
Вы увидите, что это легко сделать и во время выполнения программы, написав всего одну строчку кода.
4. TEdit - стандартный управляющий элемент Windows для ввода. Он может быть использован для отображения короткого фрагмента текста и позволяет пользователю вводить текст во время выполнения программы.
5. TMemo - иная форма TEdit. Подразумевает работу с большими текстами. TMemo может переносить слова, сохранять в ClipBoard фрагменты текста и восстанавливать их, и другие основные функции редактора. TMemo имеет ограничения на объем текста в 32Кб, это составляет 10-20 страниц. (Есть VBX и "родные" компоненты Delphi, где этот предел снят).
6. TButton позволяет выполнить какие-либо действия при нажатии кнопки во время выполнения программы. В Delphi все делается очень просто. Поместив TButton на форму, Вы по двойному щелчку можете создать заготовку обработчика события нажатия кнопки.
7. TCheckBox отображает строку текста с маленьким окошком рядом. В окошке можно поставить отметку, которая означает, что что-то выбрано. Например, если посмотреть окно диалога настроек компилятора (пункт меню Options " Project, страница Compiler), то можно увидеть, что оно состоит преимущественно из CheckBox`ов.
8. TRadioButton позволяет выбрать только одну опцию из нескольких. Если Вы опять откроете диалог Options " Project и выберете страницу Linker Options, то Вы можете видеть, что секции Map file и Link buffer file состоят из наборов RadioButton.
9. TListBox нужен для показа прокручиваемого списка. Классический пример ListBox`а в среде Windows - выбор файла из списка в пункте меню File " Open многих приложений. Названия файлов или директорий и находятся в ListBox`е.
10. TComboBox во многом напоминает ListBox, за исключением того, что позволяет водить информацию в маленьком поле ввода сверху ListBox. Есть несколько типов ComboBox, но наиболее популярен спадающий вниз (drop-down combo box), который можно видеть внизу окна диалога выбора файла.
11. TScrollbar - полоса прокрутки, появляется автоматически в объектах редактирования, ListBox`ах при необходимости прокрутки текста для просмотра.
12. TGroupBox используется для визуальных целей и для указания Windows, каков порядок перемещения по компонентам на форме (при нажатии клавиши TAB).
13. TRadioGroup используется аналогично TGroupBox, для группировки объектов TRadioButton.
14.TPanel - управляющий элемент, похожий на TGroupBox, используется в декоративных целях. Чтобы использовать TPanel, просто поместите его на форму и затем положите другие компоненты на него. Теперь при перемещении TPanel будут передвигаться и эти компоненты. TPanel используется также для создания линейки инструментов и окна статуса.
Заключение
Тестовые данные, полученные в MS Excel, совпадают с результатами выполнения проекта в СП Delphi.
После вычисления дисперсии для заданных значений, остаточной дисперсии для каждой регрессии и соответствующих коэффициентов Фишера можно сделать вывод, что, так как коэффициент Фишера больше для второй регрессии, то она лучше приближает исходные данные.
Список использованных источников
1. Учебник по Delphi (электронный вариант).
2. Пособие по АиПр Авторы: Мовшович С.М., Кравченко О.А.(электронный вариант).
Подобные документы
Графическая схема алгоритма решения. Расчет параметров регрессионных зависимостей с помощью надстройки анализа MS Excel. График с исходными данными и регрессионными зависимостями. Среда программирования Dev-C. Функциональность системы программирования.
курсовая работа [1,0 M], добавлен 19.11.2013Описание алгоритма решения транспортной задачи по планированию перевозки зерна. Ход решения задачи вручную, в программе TORA методом наименьшего элемента, с помощью MS Excel. Разработка программы для решения задачи в общем виде средствами Delphi.
курсовая работа [2,5 M], добавлен 22.11.2012Принципы и порядок работы с файлами на языке Delphi, получение навыков программирования с использованием файлов. Создание каталога продуктов. Страница палитры компонентов, настраиваемые компоненты и их значения. Текст программы и ее тестирование.
лабораторная работа [243,9 K], добавлен 09.01.2009Написание программы для работы с клиентами средствами языка Delphi, которая предусматривает ввод, редактирование и удаление информации. Разработка алгоритма решения задачи, описание переменных, вспомогательных процедур, входных и выходных данных.
курсовая работа [355,7 K], добавлен 21.09.2010Написание программы, состоящей из двух модулей и реализующей простейший калькулятор. Разработка алгоритма решения задачи, реализация его в среде программирования Delphi. Список использованных переменных. Блок-схема программы, руководство пользователя.
курсовая работа [106,6 K], добавлен 16.06.2014Разработка программы тестирования студентов по MS PowerPoint с кодом на языке Delphi. Создание алгоритма для решения функциональных требований задачи. Описание переменных, вспомогательных процедур, входных и выходных данных для реализации программы.
курсовая работа [1,5 M], добавлен 21.09.2010Программа для выбираемой единицы измерения (градусы Фаренгейта или Цельсия) и для задаваемого значения температуры в этой единице измерения. Среда Delphi. Системные требования. Блок схема программы. Интерфейс. Тестирование и сопровождение программы.
курсовая работа [447,6 K], добавлен 04.02.2009Математическая формулировка задачи, принципиальная схема гидравлического демпфера. Структурная схема программы связи модулей, реализованной на языке высокого уровня Borland Delphi 7.0. Ее описание, руководство пользователя, особенности тестирования.
курсовая работа [140,0 K], добавлен 29.05.2013Постановка, анализ задачи. Экспериментальные данные о разнообразии форм распределения погрешностей измерений. Оптимальное число интервалов группирования экспериментальных данных. Специфика проектирования, кодирование программы. Описание модулей в Delphi.
курсовая работа [526,5 K], добавлен 12.06.2010Формирование текстового документа с именем goto.cpp., содержимое которого взято из русифицируемой справки MSDN по оператору безусловного перехода. Выбор оптимального алгоритма решения задачи, разработка интерфейса, отладка и тестирование программы.
курсовая работа [499,8 K], добавлен 10.11.2009