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

ЛИЧНЫЙ КАБИНЕТ 

 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

Быстрая помощь студентам

 

Результат поиска


Наименование:


Реферат/Курсовая Программа на объектно-ориентированном языке Delphi7 для математической задачи определения параметров линейной и показательной регрессии

Информация:

Тип работы: Реферат/Курсовая. Добавлен: 10.06.13. Сдан: 2012. Страниц: 11. Уникальность по antiplagiat.ru: < 30%

Описание (план):


    Введение
    Система Delphi7 использует технологию визуального  программирования и предназначена  для разработки приложений «под Windows». Без этой системы программирование «под Windows» достаточно сложно и кропотливо, требует большого умения, изобретательности, творческого потенциала и выдержки. Delphi могут использовать программисты со средним уровнем подготовки, основательно знающие Pascal - язык программирования высокого уровня.
    Среда визуального программирования реализует  новую концепцию создания приложений, позволяя увидеть объекты на экране монитора до выполнения программы, в процессе разработки ее интерфейса. Без применения технологии визуального программирования процесс отображения требует написания и отладки достаточно сложного кода для создания и настройки объектов, а просмотр созданных объектов возможен только при выполнении программы.
    Объектно-ориентированное  визуальное программирование в Delphi выводит  разработку приложений на новую ступень  развития программирования. Она относится  к системам быстрой разработки приложений (RAD - Rapid Application Development). При разработке интерфейса пользователя в Delphi традиционные структурные методы уступают место итерационным подходам, выполненным в интерактивном режиме Delphi. Это быстро развивающаяся система. В процессе ее развития были выпущены версии от Delphi до Delphi7. Каждая следующая версия дополняла предыдущую и повышала требования к ресурсам ПК. Растут размеры выполняемых модулей приложений.
    Все версии Delphi совместимы снизу вверх, т.е. все приложения, разработанные для более ранних версий, работают без изменения в более поздних версиях Delphi. Более поздние версии Delphi дополнены средствами для работы с серверами Access, CORBA, Microsoft Transaction Server(MTS), серверами COM Windows. Библиотеки компонентов более поздних версий дополняются новыми компонентами.
    Данная  работа использует среду Delphi 7 для написания  пользовательской программы с графическим  интерфейсом для решения прикладной задачи построения корреляционных моделей линейной и показательной регрессии.
    Постановка  задачи
    Пусть в результате некоторого эксперимента получена выборка из m пар элементов . Необходимо найти функцию, которая «наилучшим» образом приближала бы исходную функцию . Критерием качества приближения целевой функцией обычно является среднеквадратичная ошибка: сумма квадратов разности значений регрессионной модели и зависимой переменной для всех значений независимой переменной в качестве аргумента. Регрессионная модель есть функция независимой переменной и параметров с добавленной случайной переменной. Параметры модели настраиваются таким образом, что модель наилучшим образом приближает данные.
    Пусть задана регрессионная модель , которая зависит от параметров и свободной переменной x. Требуется найти такие значения параметров , которые доставляли бы минимум сумме квадратов регрессионных остатков
    
,

    где , для .
    Решением  поставленной задачи занимается раздел математики под название регрессионный  анализ. При различных видах регрессионной  модели , можно получить наилучшую функцию, приближающую целевую функцию .
    Описание  численного метода решения задачи
    Линейный  парный регрессионный анализ заключается  в определении параметров эмпирической линейной зависимости , описывающей связь между некоторым числом N пар значений xi и yi, обеспечивая при этом наименьшую среднеквадратичную погрешность. Графически эту задачу можно представить следующим образом – в облаке точек требуется провести прямую так, чтобы величина всех отклонений отвечала условию
    
,

    где – зависимость (рис.1).
    

    Рисунок 1. Линейная регрессия
    Для этого нужно приравнять к нулю частные производные и :
    
     .
    
     .
    Тогда
    
    Решая эту систему методом Крамера, получим следующие выражения для коэффициентов линейной регрессии:
     ,
     .
    Показательная регрессия заключается в определении  параметров эмпирической показательной зависимости , описывающей связь между некоторым числом N пар значений xi и yi.
    Для получение параметров a и b показательной функции необходимо решить системы уравнений
    
 

     схемА алгоритма  решения задачи 


 

     Блок-схемы процедур Linear и Exponent 

            

Рисунок 1. Блок схема процедуры Linear      Рисунок 2. Блок схема процедуры Exponent 

 

     Разработка на языке Delphi модуля unit для решения  вычислительной задачи
    Для создания модуля в среде Delphi 7 выполним команду File>New>Unit.
    Математическая  часть задачи определения коэффициентов линейной и показательной регрессии разработана в виде отдельного модуля Method.pas. Реализация модуля приведена в листинге 1:
    Листинг 1 – Текст модуля Method.pas
    unit Method; 

    interface
       Type Mas = array[1..100] of extended;
       Procedure Linear(n:integer; x:Mas; y:Mas; var p,q:extended);
       Procedure Exponent(n:integer; x:Mas; y:Mas; var p,q:extended); 

    var a,b,c,d:extended;
        i:integer; 

    implementation 

    Procedure Linear;
    begin
      a:=0; b:=0;
      c:=0; d:=0;
      for i:=1 to n do
        begin
          a:=a+x[i];
          b:=b+y[i];
          c:=c+x[i]*x[i];
          d:=d+x[i]*y[i];
        end;
      q:=(a*b-n*d)/(a*a-n*c);
      p:=(b-q*a)/n;
    end; 

    Procedure Exponent;
    begin
      a:=0; b:=0;
      c:=0; d:=0;
      for i:=1 to n do
        begin
          a:=a+x[i];
          b:=b+x[i]*x[i];
          c:=c+ln(y[i]);
          d:=d+x[i]*ln(y[i]);
        end;
      p:=exp((c*b-d*a)/(n*b-a*a));
      q:=exp((n*d-a*c)/(n*b-a*a));
    end;
    end.
    В данный модуль вошли две процедуры: процедура Linear сохраняет коэффициенты линейной регрессии в фактических параметрах p и q, процедура Exponent сохраняет коэффициенты показательной регрессии в фактических параметрах p и q. Так же в модуле описан тип данных Mas – одномерный массив из 100 элементов вещественного типа.
    Модуль  Method.pas отлажен в консольном режиме. После отладки данный модуль можно применять при написании программы.
 

     Разработка структуры  интерфейса обмена
    пользователя  с приложением  в среде Delphi 7
    Будем разрабатывать интерфейс приложение согласно рисунку 3.
    

    Рисунок 3 – Вид создаваемого окна приложения
    Для создания приложения в среде Delphi 7 выполним команду File>New>Application.
    На  заготовку формы нанесем компоненты с Палитры в соответствии с рис. 3.
    Каждый  из объектов настроим с помощью Инспекторы объектов.
    Для компонент BitBtn1 – BitBtn2 изменим свойство Kind и Caption, которые отвечает за вид и отображение текста на кнопке, следующим образом:
    Для BitBtn1 значение Kind = bkYes, Caption = ‘Найти коэффициенты’;
    Для BitBtn2 значение Kind = bkClose, Caption = ‘Закрыть’.
    Разместим объекты Label1 – Label6 на форме в соответствии с рисунком 3. Для объектов Label5, Label6 свойство Visible установим значение False.
    Разместим на форме объект Edit1 для ввода количества узлов регрессии и объект UpDown1, для изменения значений объекта Edit1. Для того, чтобы при нажатии на объект UpDown1 автоматически изменялось значение свойства Text объекта Edit1 установим UpDown1.Associate = Edit1.
    Разместим на форме объект StringGrid1, для которого изменим следующие свойства: ColCount := 3, RowCount := 6, Options.goEditing := True.
    Так же на форму поместим объект RadioGroup1 для выбора способа регрессии. Для  объекта RadioGroup1 установим свойства Columns := 2, ItemIndex := 0. В свойства Items добавим два значения: «Линейная», «Показательная».
    Перейдем  к написанию текста модуля формы  Unit1.
    Наберем текст процедуры обработки события щелчка на кнопке «Найти коэффициенты». Из названия кнопки следует, что данное событие вызывает процедуру нахождения коэффициентов регрессии, выбранной в объекте RadioGroup1. Двойным щелчком на кнопке «Найти коэффициенты» создаем заготовку процедуры TForm1.BitBtn1Click. Заполняем тело процедуры текстом, содержащим организацию счета и вывода результатов. Двойным щелчком на кнопке «Close» создаем заготовку процедуры TForm1.BitBtn2Click. В теле данной процедуры записывает одну инструкцию Close(), завершающую работу приложения. Двойным щелчком на свободном месте формы Form1 создаем заготовку процедуры TForm1.FormCreate для заполнения начальными значениями объекта StringGrid1. Двойным щелчком на кнопке объекте UpDown1 создаем заготовку процедуры TForm1.UpDown1Click. В теле данной процедуры записывает инструкции для синхронного изменения количества строк StringGrid1 и числа, заданного в объекте Edit1.
    Покажем полный текст вызывающей программы. Программа содержится в модуле unit Unit1:
    unit Unit1;
    interface
    uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Grids, Buttons, Method, ExtCtrls;
    type
      TForm1 = class(TForm)
        StringGrid1: TStringGrid;
        UpDown1: TUpDown;
        Edit1: TEdit;
        Label1: TLabel;
        Label3: TLabel;
        Label4: TLabel;
        Label5: TLabel;
        Label6: TLabel;
        BitBtn1: TBitBtn;
        BitBtn2: TBitBtn;
        RadioGroup1: TRadioGroup;
        procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
        procedure FormCreate(Sender: TObject);
        procedure BitBtn1Click(Sender: TObject);
        procedure BitBtn2Click(Sender: TObject);
      end;
    var
      Form1: TForm1;
      x,y:Mas;
    implementation
    {$R *.dfm}
    procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
    var i:integer;
    begin
    StringGrid1.RowCount := StrToInt(Edit1.Text)+1;
    for i:=1 to StringGrid1.RowCount do
      StringGrid1.Cells[0,i]:=IntToStr(i);
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    var i:integer;
    begin
    StringGrid1.Cells[0,0]:='N';
    StringGrid1.Cells[1,0]:='Xi';
    StringGrid1.Cells[2,0]:='Yi';
    for i:=1 to StringGrid1.RowCount do
      StringGrid1.Cells[0,i]:=IntToStr(i);
    end;
    procedure TForm1.BitBtn1Click(Sender: TObject);
    var n,i:integer;
        p,q:extended;
    begin
     try
      n:=StrToInt(Edit1.Text);
      for i:=1 to n do
        begin
          x[i]:=StrToFloat(StringGrid1.Cells[1,i]);
          y[i]:=StrToFloat(StringGrid1.Cells[2,i]);
        end;
      if RadioGroup1.ItemIndex = 0 then
        begin
          Linear(n,x,y,p,q);
          Label5.Caption := 'y = ' + FloatToStr(p) + ' + ' + FloatToStr(q) + '*x';
          Label5.Visible := true;
        end else
        begin
          Exponent(n,x,y,p,q);
          Label6.Caption := 'y = ' + FloatToStr(p) + ' * ' + FloatToStr(q) + '^x';
          Label6.Visible := true;
        end;
     except
      ShowMessage('Неверный формат ввода');
      exit;
     end;
    end;
    procedure TForm1.BitBtn2Click(Sender: TObject);
    begin
    Close();
    end;
    end.
    Для подключения модуля к проекту, выполняем следующие действия:
    В меню Project выполняем команду Add To Project… и выбираем файл Method.pas, содержащий модуль.
    В разделе Uses модуля Unit1 добавляем имя подключаемого модуля Method.
    После компиляции программы проверим ее на контрольном примере.
 

     Разработка контрольного примера
    Рассмотрим задачу определения коэффициентов линейной и показательной регрессии на выборке:
xi 2 4 6 8 10
yi 5,5 6,3 7,2 8 8,6
    Результатом программы является:
    Параметры a и b линейной регрессии со значениями , .
    Параметры a и b показательной регрессии со значениями , .
    Результат работы программы представлен на рисунке 5
    

    Рисунок 5. Результат работы программы на контрольном примере
    Полученные  результаты совпадают с результатами, посчитанными при помощи Excel, следовательно, делаем вывод, что программа работает правильно.
 

     Выводы по работе
    В процессе написания курсовой работы были выполнены следующие основные задачи:
    разработана программа на объектно-ориентированном языке Delphi7 для математической задачи определения параметров линейной и показательной регрессии;
    для обмена данными между пользователем и приложением был разработан пользовательский интерфейс;
    в качестве метода решения задачи был выбран метод наименьших квадратов;
    для решения математической части задачи создан отдельный модуль Method.pas, который откомпилирован и проверен в консольном режиме;
    и т.д.................


Перейти к полному тексту работы


Скачать работу с онлайн повышением уникальности до 90% по antiplagiat.ru, etxt.ru или advego.ru


Смотреть полный текст работы бесплатно


Смотреть похожие работы


* Примечание. Уникальность работы указана на дату публикации, текущее значение может отличаться от указанного.