Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Разработка программного продукта Delphi для моделирования логнормального распределения

Тип Реферат
Предмет Информатика
Просмотров
582
Размер файла
127 б
Поделиться

Ознакомительный фрагмент работы:

Разработка программного продукта Delphi для моделирования логнормального распределения

Министерство науки и образования Украины

Харьковский Национальный Университет им. В.Н.Каразина

Факультет компьютерных наук

Кафедра моделирования систем и технологий

Разработка программного продукта Delphi для моделирования логнормального распределения

Курсовая работа по дисциплине

«Языки прикладного программирования»

Исполнитель

студент ******

Руководитель

Ст. преп

Харьков 2007


План

1. Введение

2. Проектирование

3. Особенности реализации

4. Отладка и тестирование

5. Описание работы программного продукта

6. Заключение

7. Список используемой литературы


Введение

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

Это обусловлено следующими причинами. Во-первых, нормальное распределение симметрично относительно ее центральной оси и может иметь как положительные, так и отрицательные значения; однако цена актива не может быть отрицательной. Во-вторых, нормальное распределение говорит о равной вероятности для значений переменной отклониться вверх или вниз. В то же время на практике, например, имеет место инфляция, которая оказывает давление на цены в сторону их повышения, а также сама временная сущность денег: стоимость денег сегодня меньше, чем стоимость денег вчера, но больше, чем стоимость денег завтра. Кривая логнормального распределения всегда положительна и имеет правостороннюю скошенность (асимметрично), т.е. она указывает на большую вероятность цены отклониться вверх. Поэтому если, допустим, цена актива составляет 50 долл., то кривая логнормального распределения свидетельствует о том, что опцион пут с ценой исполнения 45 долл. должен стоить меньше опциона колл с ценой исполнения 55 долл., в то время как в соответствии с нормальным распределением они должны были бы иметь одинаковую цену. Хотя нельзя надеяться, что приведенные исходные предположения в точности выполняются во всех реальных рыночных ситуациях, тем не менее принято считать, что логнормальное распределение достаточно хорошо как первое приближение в случае активов, которыми торгуют на конкурентных рынках аукционного типа для длинных рассматриваемых периодов.

Проектирование

Перед началом работы в среде Delphi мною, я разработал макет программного продукта в письменном варианте, где я зарисовал какая должна быть главная форма (внешний вид ее), сколько и какие компоненты должны быть на этой форме для удобной работы пользователя с данным продуктом. Также на этом макете я разработал план создания текста программы.

После того, как была проделана вышеуказанная работа, я перешел непосредственно к созданию программного продукта на компьютере. Сначала я создал главную форму, соответствующую макету (Рис.1). На ней находятся:

· 2 колонки выводов значений: Теоретически, Критерий согласия;

· в Теоретической колонке: sigma, mu, a, b;

· в Критерии согласия: метод Неймана и метод обратных функций;

· поля для вывода мат.ожидания и дисперсии;

· кнопки управления программой и режимом просмотра;

· меню“Help” котороесодержитподменю “About me” и “About the program”;

· поле время выполнения;

· Aтакже кнопки “Вывести графики и вычислить” при нажатии которой программа считает все значения и выводит график на экран, “Выход”, для выхода из программы.

· Aтакже кнопка Stop при нажатии которой программа считает значения, которые обработались до определенного момента.


Рис. 1

Особенности реализации

var

Form1: TForm1;

kk:Int64;

flag:boolean;

implementation

Плотностьраспределения

function TForm1.PL(x:double):double; //--density of distribution

begin

if x<>0 then

result := exp(-(ln(x)-mu)*(ln(x)-mu)/(2*sigma*sigma))/(x*sigma*Sqrt(2*Pi))

else

result := 0;

end;

function TForm1.LogNorm() : double; //--for a method of Neumann

var

y : real;

x : double;

begin

repeat

x := a+random*(b-a);

f := PL(x);

y := fmax*random;

until y<f;

result := x;

end;

procedure TForm1.Clear; //------------clear array---------

const M=50;

var j : integer;

begin

for j:=0 to (M-1) do

begin

gist[j] := 0;

end;

end;

procedure TForm1.Panel1Click(Sender: TObject);

var

x, r, sr, h1, h2, Ob,g1,g2, chi2_N, chi2_12, chi2_if, sum, Z : double;

p, y, Mat, Mat2, Disp : real;

M, j : integer;

N, i, u : longint;

begin

flag:=false;

Gauge1.Progress:=0;

//-------**All fields must be filled!**---------

if (E1.Text='') or (E2.Text='') or (E3.Text='') or (E4.Text='') or

(E5.Text='') then

begin

with Application do

begin

NormalizeTopMosts;

MessageBox('All of fields must be filled!', 'Error', MB_OK);

RestoreTopMosts;

end;

exit;

end;

//----------**initialization**--------------

T := GetTime;

Clear;

Chart1.Series[0].Clear;

Chart1.Series[1].Clear;

Chart1.Series[2].Clear;

sigma := StrToFloat(E1.Text);

mu := StrToFloat(E2.Text);

a := StrToFloat(E3.Text);

b := StrToFloat(E4.Text);

kk:=StrToint64(E5.Text);

if kk>2000000000 then

begin

Showmessage ('Очень большое число, введите меньшее');

exit;

end;

N := StrToInt(E5.Text);

g1:=100/N;

g2:=0;

Randomize;

M := 50;

//---------------**theoretical method**------------------

for i:=1 to 100 do

begin

if (i mod 10) =0 then application.ProcessMessages;

x := a+i*(b-a)/100;

//p := PL(x);

if x<>0 then

p := exp(-(ln(x)-mu)*(ln(x)-mu)/(2*sigma*sigma))/(x*sigma*Sqrt(2*Pi))

else

p := 0;

Chart1.Series[0].AddXY(x, p);

end; //---theoretical

//***********************************************************

МетодНеймана

//---------------**method of Neumann**------------------------

fmax :=Chart1.Series[0].MaxYValue;

{for i:=1 to N do

begin

if (i mod 10) =0 then application.ProcessMessages;

x := a+i*(b-a)/N;

f := PL(x);

if (f>fmax)then

fmax := f;

end;} //max

//------------------------------

Clear;

chi2_N:=0;

Mat:=0;

Mat2:=0;

Disp:=0;

i:=0;

Clear;

chi2_if := 0;

while true do

begin

if (i mod 10) =0 then application.ProcessMessages;

inc(i);

x := LogNorm();

Mat := Mat+x; //expectation

Mat2 := Mat2 +sqr(x);

if (x>b) or (x<a) then

continue;

u := trunc((x-a)/((b-a)/M));

gist[u] := gist[u]+1;

h1 := random;

h2 := random;

Ob := sqrt(-2*ln(h1))*cos(2*Pi*h2);

Ob := mu+Ob*sigma;

x := exp(Ob);

if (x>b) or (x<a) then

continue;

u := trunc((x-a)/((b-a)/M));

gist1[u] := gist1[u]+1;

g2:=g2+g1;

Gauge1.Progress:=trunc(g2)+1;

if i>N then break;

if flag=true then

begin

N:=i;

break;

end;

end;

Mat := Mat/N;

Mat2 := Mat2/N;

Disp := Mat2 - sqr(Mat);

for j:=0 to (M-1) do //------histogram

begin

sum := (Power(N*PL(a+(b-a)/M*(j+0.5))*(b-a)/M-gist[j], 2))/

(N*PL(a+(b-a)/M*(j+0.5))*(b-a)/M);

chi2_N := chi2_N+sum;

Chart1.Series[1].AddXY((a+(j+0.5)*(b-a)/M), gist[j]/N*M/(b-a));

end;

E6.Text := FloatToStrF(chi2_N, fffixed, 4, 4);//--chi-square for a Neumann //****************************************************************

Методобратнойфункции

//--------------**method of inverse function**-----------------

Clear;

chi2_if := 0;

{for i:=1 to N do

begin

h1 := random;

h2 := random;

Ob := sqrt(-2*ln(h1))*cos(2*Pi*h2);

Ob := mu+Ob*sigma;

x := exp(Ob);

if (x>b) or (x<a) then

continue;

u := trunc((x-a)/((b-a)/M));

gist[u] := gist[u]+1;

end;}

for j:=0 to (M-1) do //------histogram

begin

sum := (Power(N*PL(a+(b-a)/M*(j+0.5))*(b-a)/M-gist1[j], 2))/

(N*PL(a+(b-a)/M*(j+0.5))*(b-a)/M);

chi2_if := chi2_if+sum;

Chart1.Series[2].AddXY((a+(j+0.5)*(b-a)/M), gist1[j]/N*M/(b-a));

gist1[j]:=0;

end;

E8.Text := FloatToStrF(chi2_if, fffixed, 4, 4); //chi-sq for a inverse function

E10.Text := FloatToStr(exp(mu+sqr(sigma)/2)); //--expectation (teor)

E11.Text := FloatToStr(Mat); //--expectation (experim)

E12.Text := FloatToStr((exp(sqr(sigma))-1)*exp(2*mu+sqr(sigma)));

E13.Text := FloatToStr(Disp);

D := GetTime;

Z := MilliSecondSpan(D, T);

e5.Text:=IntTostr(N);

Edit1.Text := FloatToStrF(Z, fffixed, 6, 6);

//*****************************************************************

end;

procedure TForm1.Panel7Click(Sender: TObject);

begin

Close;

end;

procedure TForm1.E1KeyPress(Sender: TObject; var Key: Char);

begin

if (key='-')

then begin

if Pos ('-', (Sender as TEdit).Text)=0 then Begin (Sender as TEdit).SelStart:=0; key:='-'; end

else key:=#0;

end;

if Sender is TEdit then

begin

if Not((Key in ['0'..'9'])or (Key=Chr(vk_Back))

or (Key=DecimalSeparator) or (Key='-')) then

Key:=#0

else

begin

if Key = DecimalSeparator then

if Pos(DecimalSeparator,(Sender as TEdit).Text)>0 then

Key:=#0;

end;

end;

end;

procedure TForm1.Aboutme1Click(Sender: TObject);

begin

AboutBox.Show;

end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin

Panel19.Caption := TimeToStr(Time);

end;

procedure TForm1.E1KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if (ssShift in Shift)then

key:=0;

end;

procedure TForm1.Panel20Click(Sender: TObject);

begin

flag:=true;

end;

end.

Отладка и тестирование программы

В процессе отладки я вводил различные значения успешной вероятности и количество успехов и сравнивал форму полученного графика при разных значениях.

Рис. 2

Так, же пробовал вводить другие значения, график при этом не сильно менялся


Рис. 3

Пользователь может увидеть полученные графики в трехмерном и в двухмерном пространстве: для этого надо нажать кнопку 2D3D. Результат 3D графика можно увидеть на рис. 3

Функция для 3D2D записана так

procedure TForm1.Panel12Click(Sender: TObject);

begin

Chart1.View3D:=Not Chart1.View3D;

end;

Рис. 4


Описание работы программного продукта

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

Справа в разделе "Теоретически пользователь может ввести значение sigmaи mu, те значения которые он считает нужными; a и b это интервал в пределах которого меняется график.И значение N – (количество єксперементов) – в зависемости от того сколько раз мы будем проводить єксперемент . В зависимости от выбора данных параметров пользователь может получить различные формы графика плотности вероятности.

В разделе "Критерий согласия" выводятся значения оценки Хи-квадрат для двух указанных методов. Ниже вывод математического ожидания и дисперсии, посчитанных теоретически и экспериментально.

Справа внизу формы выводится системное время и время выполнения расчётов в миллисекундах.

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

При нажатии на кнопку «Стоп» программа прекращаются свою работу и начинает считывать значения которые обработались до определенного момента и записует значения в поля.

При нажатии на кнопку «2D/3D» пользователь может наблюдать изменение графика из 2D в 3D и наоборот.

При нажатии на кнопку «Выход» программа будет завершена.

В закладке «About» пользователь может узнать о создателях данного программного продукта и краткое описание программного продукта.


Заключение

В данной курсовой работе была достигнута поставленная цель: я изучил и создал программный продукт, который представляет моделирование на компьютере логнормального распределения. Научился применять на практике свои знания полученные в процессе изучения Delphi.

В данном программном продукте реализованы работа с графиками, с таблицами, таймерами, файлами, различными математическими функциями.

Этот программный продукт, на мой взгляд, представляет собой законченную рабочую и отлаженную программу.


Список используемой литературы

1. http://en.wikipedia.org

2. Шеффе Г. Дисперсионный анализ. - М.: Физматгиз, 1980. - 628 с.

3. «Delphi 2005: «Секреты программирования»», Михаил Фленов.


Нет нужной работы в каталоге?

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

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
Физика
История
icon
136491
рейтинг
icon
5817
работ сдано
icon
2633
отзывов
avatar
История
Экономика
Маркетинг
icon
134849
рейтинг
icon
3017
работ сдано
icon
1323
отзывов
avatar
Химия
Экономика
Биология
icon
89246
рейтинг
icon
1985
работ сдано
icon
1250
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
50 234 оценки star star star star star
среднее 4.9 из 5
СибГАУ
Работа пока не проверена, но я принимаю заказ. Надеюсь на ваши знания , надеюсь что не под...
star star star star star
ГУМРФ им. адм. С. О. Макарова
Спасибо большое за проделанную работу. Всё очень быстро,и качественно! Обязательно обращус...
star star star star star
РИНХ
Спасибо Вам огромное Татьяна! Я успела все сдать!!! Работа выполнена раньше срока, без за...
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

Презентация + доклад

Презентация, региональная экономика

Срок сдачи к 10 мар.

2 минуты назад
4 минуты назад

тема: "Анализ пенсионной системы РФ: современное состояние страховой...

Курсовая, право социального обеспечения

Срок сдачи к 19 мар.

9 минут назад
10 минут назад
11 минут назад
11 минут назад

Написать план урока на тему: "Развитие науки, образования

Другое, методика обучения истории

Срок сдачи к 6 мар.

11 минут назад

Переделать

Отчет по практике, Информатика

Срок сдачи к 5 мар.

11 минут назад

Сделать 1 практическую работу

Отчет по практике, Метрология

Срок сдачи к 7 мар.

11 минут назад

Реферат

Реферат, Эксплуатация технологических комплексов танкеров и химовозов

Срок сдачи к 8 мар.

11 минут назад

Здравствуйте, нужно выполнить 7 вариант(10...

Решение задач, ФХМА материалов

Срок сдачи к 6 мар.

11 минут назад

Капитальные вложения

Курсовая, Экономика предприятия

Срок сдачи к 23 мар.

11 минут назад

Изучите виды правонарушений (уголовное преступление

Решение задач, Право

Срок сдачи к 4 мар.

11 минут назад

вариант 13

Контрольная, техническая механика

Срок сдачи к 6 мар.

11 минут назад
11 минут назад

«Умер в немцах»: угон населения на принудительные работы как способ...

Реферат, Великая отечественная война: без срока давности фимпис

Срок сдачи к 5 мар.

11 минут назад

Расход материалов для оштукатуривания и кладки кирпича

Решение задач, стройматериалы

Срок сдачи к 6 мар.

11 минут назад

Решить лабораторную работу.

Лабораторная, Технические измерения

Срок сдачи к 4 апр.

11 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно