Критерий Фишера

Автор работы: Пользователь скрыл имя, 18 Декабря 2011 в 21:34, курсовая работа

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

Курсовая работа на тему "Критерий Фишера"

Вложенные файлы: 1 файл

записка.doc

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

         Студент, титульник сделай сам, если надо поставь  номера страниц.

      По порядку 1-й пункт это титульник, 2-е  задание, 3 – введение и так далее. 
      3.
      Введение.

    Статистические методы обработки данных – это весьма необходимые и незаменимые способы для анализирования процессов, экспериментов и различных подобных ситуаций. Статистические расчеты почти всегда трудоемки, так как требуют большое количество повторяющихся операций, но эти трудности преодолевается с помощью применения специализированных компьютерных математических систем, таких как: STADIA, SPSS, STATA, JMR, SYSTAT, NCSS, MINITAB 14, STATGRAPHICS PLUS, PRISM и так же система R (http://www.r-project.org/)– это язык программирования и среда для выполнения различного рода статистических расчетов.

    Инструментом выполнения данной курсовой работы является Delphi 7 – среда разработки консольных и графических программ на одноименном языке Delphi.

    Delphi -  среда программирования, в которой используется язык программирования Object Pascal.Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal. Начиная с 2007 года уже язык Delphi (производный от Object Pascal) начал жить своей самостоятельной жизнью и претерпевал различные изменения связанные с современными тенденциями (например, с развитием платформы .net) развития языков программирования: появились class helpers, перегрузки операторов и другое.

    Object Pascal — результат развития языка  Турбо Паскаль, который, в свою  очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком, Турбо Паскаль, начиная с версии 5.5, добавил в Паскаль объектно-ориентированные свойства, а в Object Pascal — динамическую идентификацию типа данных с возможностью доступа к метаданным классов (то есть к описанию классов и их членов) в компилируемом коде, также называемом интроспекцией — данная технология получила обозначение RTTI. Так как все классы наследуют функции базового класса TObject, то любой указатель на объект можно преобразовать к нему, после чего воспользоваться методом ClassType и функцией TypeInfo, которые и обеспечат интроспекцию.

    Также отличительным свойством Object Pascal от С++ является то, что объекты по умолчанию  располагаются в динамической памяти. Однако можно переопределить виртуальные методы NewInstance и FreeInstance класса TObject. Таким образом, абсолютно любой класс может осуществить «желание» «где хочу — там и буду лежать». Соответственно организуется и «многокучность».

    Object Pascal (Delphi) является результатом функционального расширения Turbo Pascal. 

    Delphi оказал огромное влияние на  создание концепции языка C# для  платформы .NET. Многие его элементы  и концептуальные решения вошли  в состав С#.

    Паскаль  — язык программирования общего назначения. Один из наиболее известных языков программирования, широко применялся в промышленном программировании, обучении программированию в высшей школе, является базой для ряда других языков.

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

    Паскаль был создан Никлаусом Виртом в 1968-69 годах после его участия в  работе комитета разработки стандарта  языка Алгол-68. Он был опубликован  в 1970 году Виртом как небольшой и эффективный язык, чтобы способствовать хорошему стилю программирования, использовать структурное программирование и структурированные данные.

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

    В 1978 году в Университете Сан-Диего (Калифорния, США) была разработана система UCSD p-System, включавшая порт виртовского компилятора с языка Паскаль в переносимый p-код, редактор исходных кодов, файловую систему и пр., а также реализовывавшая значительное число расширений языка Паскаль, такие как модули, строки символов переменной длины, директивы трансляции, обработка ошибок ввода-вывода, обращение к файлам по именам и пр. Впоследствии основные реализации языка Паскаль основывались на этом диалекте.

    В 1986 году фирма Apple Computer разработала  объектное расширение языка Паскаль, получив в результате Object Pascal. Он был разработан группой Ларри Теслера, который консультировался с Никлаусом Виртом.

    В 1989 году объектное расширение языка  было добавлено фирмой Borland в Turbo Pascal версии 5.5 (начиная со следующей версии среда была переименована в Borland Pascal). Объектные средства были позаимствованы из Object Pascal от Apple, языковые различия между объектным Turbo Pascal 5.5 и Object Pascal от Apple крайне незначительны. 

    Почти в то же самое время, что и Borland, Microsoft выпустил свою версию объектно-ориентированного языка Паскаль. Эта версия Паскаля не получила широкого распространения.

    Дальнейшее  развитие реализации Паскаля от Borland породило Object Pascal от Borland, впоследствии, в ходе развития среды программирования Delphi, получивший одноимённое название.

    Важным  шагом в развитии языка является появление свободных реализаций языка Паскаль Free Pascal и GNU Pascal, которые  не только вобрали в себя черты  множества других диалектов языка, но и обеспечили чрезвычайно широкую  переносимость написанных на нём программ (например GNU Pascal поддерживает более 20 различных платформ, под более чем 10 различными операционными системами, Free Pascal обеспечивает специальные режимы совместимости с различными распространёнными диалектами языка, такими как Turbo Pascal (полная совместимость), Delphi и другими.

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

    О коммерческих разработках на Free Pascal, GNU Pascal и TMT Pascal на данный момент известно мало.

    Кроме того, в Южном федеральном университете разрабатывается язык и система  программирования PascalABC.NET, ориентированная  на обучение современному программированию. Язык системы — это Object Pascal для платформы Microsoft .NET, который содержит все основные элементы современных языков программирования: модули, классы, перегрузку операций, интерфейсы, исключения, обобщённые классы, сборку мусора, а также некоторые средства параллельного программирования.

    Особенностями языка являются строгая типизация  и наличие средств структурного (процедурного) программирования. Паскаль  был одним из первых таких языков. По мнению Н. Вирта, язык должен способствовать дисциплинированию программирования, поэтому, наряду со строгой типизацией, в Паскале сведены к минимуму возможные синтаксические неоднозначности, а сам синтаксис автор постарался сделать интуитивно понятным даже при первом знакомстве с языком.

    Тем не менее, первоначально язык имел ряд  ограничений: невозможность передачи функциям массивов переменной длины, отсутствие нормальных средств работы с динамической памятью, ограниченная библиотека ввода-вывода, отсутствие средств для подключения функций написанных на других языках, отсутствие средств раздельной компиляции и т. п. Подробный разбор недостатков языка Паскаль того времени был выполнен Брайаном Керниганом в статье «Почему Паскаль не является моим любимым языком программирования» (эта статья вышла в начале 1980-х, когда уже существовал язык Модула-2, потомок Паскаля, избавленный от большинства его пороков, а также более развитые диалекты Паскаля). Некоторые недостатки Паскаля были исправлены в ISO-стандарте 1982 года, в частности, в языке появились открытые массивы, давшие возможность использовать одни и те же процедуры для обработки одномерных массивов различных размеров.

    Необходимо  заметить, что многие недостатки языка  не проявляются или даже становятся достоинствами при обучении программированию. Кроме того, по сравнению с основным языком программирования в академической среде 1970-х (которым был Фортран, обладавший гораздо более существенными недостатками), Паскаль представлял собой значительный шаг вперёд. В начале 1980-х годов в СССР для обучения школьников основам информатики и вычислительной техники академик А. П. Ершов разработал алголо-паскалеподобный «учебный алгоритмический язык».

    Наиболее  известной реализацией Паскаля, обеспечившая широкое распространение  и развитие языка, является Turbo Pascal фирмы Borland, выросшая затем в объектный Паскаль для DOS (начиная с версии 5.5) и Windows и далее в Delphi, в которой были внедрены значительные расширения языка.

    Диалекты  Паскаля, применяемые в Turbo Pascal для DOS и Delphi для Windows, стали популярны из-за отсутствия других успешных коммерческих реализаций.

 

          4. Постановка и анализ задачи.

    4.1 Постановка задачи.

    Необходимо  написать программу на языке Delphi для  получения численного значения критерия Фишера.

    По  возможности функционал программы разделить на подпрограммы.

    В качестве типа данных использовать тип  “Extended”.

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

 

    4.2 Анализ задачи. 

    Теоретические сведения.

     

    Статистика  критерия Фишера имеет вид:

    

    Где S1, S2 – наибольшие и наименьшие дисперсии соответственно.

    Дисперсия вычисляется по следующей формуле:

      

         Где  - среднее арифметическое выборки, n – количество членов в выборке.

    При справедливости нулевой гипотезы статистика F имеет распределение Фишера с f=2m и f=2n степенями свободы.

 

          5. Программная часть. 

    5.1 Листининг программы на языке  Delphi.

    program fisher; 

    {$APPTYPE CONSOLE} 

    uses

      SysUtils,Math;

    type

      Tarr=array of Extended;

    var

    x,y:Tarr;

    n:integer;

    av_x,av_y,val_fisher:Extended; 
 

    function fill_array(var a:TArr;msg:string):TArr;

    var

    i:integer;

    begin

    for i:=Low(a) to high(a) do

      begin

      write(msg,i+1,']=');

      readln(a[i]);

      end;

    fill_array:=a;

    end; 

    function get_average(var a:Tarr):Extended;

    var

    av:Extended;

    i:integer;

    begin

    av:=0; 

    for i:=Low(a) to High(a) do

          begin

          av:=av+a[i];

          end;

    av:=av/length(a);

    get_average:=av;

    end; 

    function get_sum(var a:Tarr;val:Extended):Extended;

    var

    s:Extended;

    i:integer;

    begin

    s:=0;

    for i:=Low(a) to High(a) do

      begin

      s:=s+(a[i]-val)*(a[i]-val);

      end;

    s:=s/(Length(a)-1);

    get_sum:=s;

    end; 

    function get_fisher(var x,y:Tarr;av_x,av_y:Extended):Extended;

    var

    f:double;

    x_s,y_s:Extended;

    begin

    x_s:=get_sum(x,av_x);

    y_s:=get_sum(y,av_y);

    if x_s>y_s then

      begin

      f:=(x_s)/(y_s);

      writeln('Ispolzovat znachebie kriteriya dlya ',Length(x),'/',Length(y));

      end

    else

      begin

        f:=(y_s)/(x_s);

      writeln('Ispolzovat znachebie kriteriya dlya ',Length(y),'/',Length(x));   

      end;

    get_fisher:=f;

    end; 

Информация о работе Критерий Фишера