Исследование вычислительной эффективности ВЕБ–технологий

Проектирование и реализация 3 приложений, каждое из которых считает площадь фигуры методом "Монте-Карло". Программные средства разработки приложения. Диаграммы классов Triangle, Rectangle и IceCream. Логическое проектирование серверной части приложения.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 06.02.2016
Размер файла 2,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru//

Размещено на http://www.allbest.ru//

МИНОБРНАУКИ РОССИИ

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Тульский государственный университет»

Кафедра вычислительной техники

Исследование вычислительной эффективности ВЕБ-технологий

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе по дисциплине «Технологии программирования»

Автор работы:

студент гр. 622121 Сальников В.В.

Руководитель работы:

канд. техн. наук, доц. кафедры ВТ Берсенев Г. Б.

Тула 2014

Введение

приложение площадь фигура

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

Windows Presentation Foundation (WPF) - технология, представляющая разработчикам обширный API-интерфейс для создания настольных приложений, имеющих насыщенный дизайн и интерактивность и включающий новую модель построения пользовательских приложений основанный на DirectX.

Традиционный (классический) способ создания веб-приложений заключается в добавлении специальных элементов управления, допускающих программное управление (например, скриптов на языках JavaScript) в HTML-код. ASP (англ. Active Server Pages -- «активные серверные страницы») была предложена компанией Microsoft в 1996 году и разработана для операционных систем из семейства Windows NT, и функционирует под управлением веб-сервера Microsoft IIS.

JScript -- скриптовый язык программирования компании Майкрософт, являющийся реализацией стандарта ECMAScript. Синтаксис JScript во многом аналогичен языку JavaScript, однако, помимо добавления клиентских скриптов на веб-страницы, JScript может использоваться и для других целей.

Одной из технологий создания веб-приложений является ASP.NET Web Forms. Это технология создания веб-приложений от компании Microsoft. Она является составной частью платформы Microsoft .NET и развитием более старой технологии Microsoft ASP. На данный момент последней версией этой технологии является ASP.NET 5. ASP.NET внешне во многом сохраняет схожесть с более старой технологией ASP, что позволяет разработчикам относительно легко перейти на ASP.NET. В то же время внутреннее устройство ASP.NET существенно отличается от ASP, поскольку она основана на платформе .NET и, следовательно, использует все новые возможности, предоставляемые этой платформой. Вторая технология в рамках создания веб-приложений это ASP .NET MVC. Обе эти технологии полностью поддерживаются в .NET Framework 4.0 и продолжают развиваться. Они имеют свои достоинства и недостатки. При выборе одной из них следует обратить внимание на значительное различие между концепциями разработки. В ходе выполнения этой работы будет использоваться технология ASP.NET Web Forms.

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

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

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

Цель данной курсовой работы - исследование вычислительной эффективности веб-технологий. В ходе выполнения курсовой необходимо спроектировать и реализовать 3 приложения, каждое из которых считает площадь фигуры методом «Монте-Карло», причем каждое приложение должно быть реализовано с использованием разных технологий программирования.

Вариант №14:

геометрическая фигура: ambe (рисунок 1);

настольное приложение на базе WPF/C#;

веб-приложение на базе ASP/JScript;

веб-приложение на базе WebForm/ASMX/C# (тип клиента - синхронный).

В данной работе рассматривается задача вычисления площади фигуры, представленного на рис. 1, методом Монте-Карло.

Рис. 1. Фигуры ambc, ambe и ambd внутри прямоугольника

Исходными данными для приложений являются координаты угловых точек фигуры abe, в которой , как видно из рис. 1.

Для вычисления площади фигуры необходимо вначале вычислить площадь прямоугольника, описывающего заданную фигуру, а затем N раз сгенерировать по два случайных числа для координат x и y, определяющие точку внутри прямоугольника. Генерируемые случайным образом точки должны равномерно заполнять площадь прямоугольника. Для этого случайные числа должны иметь равномерное распределение (по ширине и высоте прямоугольника соответственно).

Для каждой точки выполняется проверка, попала ли точка внутрь заданной фигуры. Если из N точек M точек оказалось внутри фигуры, а площадь прямоугольника равна S, то площадь фигуры будет приближенно равна .

Поскольку площадь фигуры легко вычисляется по правилам геометрии, мы можем определить относительную погрешность приближенного вычисления этой площади методом Монте-Карло. Естественно, чем больше N, тем меньше погрешность такого вычисления.

Каждое приложение шесть раз повторяет эксперимент и вычисляет площадь фигуры методом Монте-Карло для соответственно. В каждом эксперименте определяется относительная погрешность вычисления площади (в процентах) и его длительность (в миллисекундах). В веб-приложениях клиент перед каждым экспериментом передает на сервер угловые точки фигуры и значение N, а после завершения эксперимента получает от сервера значения площади, рассчитанной методом Монте-Карло, количества попавших в фигуру точек и относительной погрешности.

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

Разработка технического задания

Анализ вариантов использования программы

Требуется разработать программу, которая позволяла бы пользователю вычислять площадь фигуры ambe методом Монте-Карло. Программа должна позволять пользователю выполнять следующие действия:

ввод координат контрольного примера;

ввод координат вручную;

очистка полей ввода координат;

выполнение расчетов по введенным координатам;

завершение работы приложения.

После ввода координат и инициализации расчета программа должна автоматически проверить корректность введенных данных. На рис. 2 представлена диаграмма вариантов использования программы.

Рис. 2. Диаграмма вариантов использования приложений

Из рис. 2. видно, что при запуске программы пользователю предлагается выбрать способ ввода новых координат, затем выполняется проверка на их корректность. В течение одного сеанса пользователь имеет возможность многократно использовать программу.

В диаграмме использовались следующие типы отношений: расширение («расширить»), включение («включить») и наследование. Отношение расширения (Extend Relationship) определяет взаимосвязь базового варианта использования с другим вариантом использования, функциональное поведение которого задействуется базовым не всегда, а только при выполнении дополнительных условий. Отношение включения (Include Relationship) также является разновидностью отношения зависимости, но устанавливается только между двумя вариантами использования и указывает на то, что заданное поведение для одного варианта использования включается в качестве составного фрагмента в последовательность поведения другого варианта использования. Отношение наследования (Generalization Relationship) представляет собой связь между общей сущностью, называемой родителем, и более специализированной разновидностью этой сущности, называемой потомком. Потомок наследует все свойства и поведение своего родителя, но потомок может иметь собственное поведение и свойства.

Требования к приложениям

В соответствии с заданием к курсовой работе необходимо разработать три различных приложения для вычисления площади фигуры методом Монте-Карло, которые должны удовлетворять следующим требованиям:

иметь интуитивно понятный интерфейс;

рассчитывать погрешность вычисления, а также измерять время расчета для каждого N= 103, 104, 105, 106, 107 количества точек;

сообщать пользователю об ошибках;

иметь возможность запуска повторного расчета.

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

Настольное приложение на базе WPF/C#:

тип: настольное приложение;

графический интерфейс WPF;

язык реализации: С#.

Веб-приложение на базе ASP/JScript:

тип: клиент-серверное приложение;

язык скрипта: Jscript;

язык разметки: HTML;

клиентская часть: страница с HTML разметкой;

серверная часть: активная страница ASP со скриптом на языке JScript.

Веб-приложение на базе WebForm/ASMX/C#:

тип: клиент-серверное приложение;

интерфейс: страница WebForm с графическим интерфейсом;

серверная часть: веб-сервис ASMX;

тип веб-сервиса: синхронный.

Анализ алгоритма решения

Метод Монте-Карло

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

По условию курсового проекта все приложения должны находить площадь геометрической фигуры методом Монте-Карло.

Имеем некоторую фигуру (Ф) на плоскости, площадь которой требуется найти. Для этого необходимо ограничить её другой наименьшей фигурой (П), площадь которой (SГ) легко вычислить аналитически. Пусть про любую точку P можно быстро узнать принадлежит ли она фигуре (Ф). Имея общее количество точек N, считаем, сколько точек (P) попало в фигуру (Ф). Зная площадь SП фигуры (П), рассчитываем площадь SФ фигуры Ф по следующей формуле:

.

Для каждого приложения необходимо определить относительную погрешность вычислений (P). Для этого по формулам геометрии необходимо найти точную площадь геометрической фигуры. Расчет относительной погрешности осуществляется по формуле:

.

Определение попадания точки внутрь фигуры

Имеем фигуру ambe и произвольную точку P(xp,yp), лежащие в одной плоскости. Требуется определить, принадлежит ли точка P(xp,yp) фигуре ambe, если известны координаты фигуры abe и координаты точки Р.

Искомую фигуру можно разбить на две более простые: полуокружность ab и треугольник abe. Следовательно, надо проверять попала ли точка в треугольник или полуокружность в зависимости от значения координаты xp точки P. Если координата xp меньше, чем координата х центра полуокружности, то проверяем, попала ли точка в полуокружность, иначе проверяем, попала ли точка в треугольник.

Проверка попадания точки внутрь окружности

Имеем точку P(xp,yp) и имеем полуокружность с центром в точке O(x0,y0) и радиусом R. Тогда условие попадания точки в полуокружность будет иметь следующий вид:

если , то точка P(xp,yp) лежит внутри окружности.

Проверка попадания точки внутрь треугольника

Чтобы определить попала ли точка в треугольник, необходимо составить уравнения прямых ae и be.

Уравнение прямой находится по формуле:

, где .

Уравнение прямой находится по формуле:

, где .

Точка находится в треугольнике, если .

Настольное приложение на базе WPF/C#

Программные средства разработки приложения

Для создания настольного приложения была выбрана интегрированная среда разработки Microsoft Visual Studio 2013. Так как это новейшая IDE от Microsoft поддерживающая разработку клиентских приложений на языке C#. Visual Studio -- включает интегрированную среду разработки программного обеспечения и ряд других инструментальных средств, обеспечивающих в совокупности высокое качество кода на протяжении всего цикла жизни ПО, от проектирования до внедрения. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Microsoft.

C# - является языком программирования, который разработан для создания множества приложений, работающих в среде .NET Framework. Язык C# прост, типобезопасен и объектно-ориентирован. Благодаря множеству нововведений C# обеспечивает возможность быстрой разработки приложений, но при этом сохраняет выразительность и элегантность, присущую С-подобным языкам.

Visual C# -- это реализация языка C# корпорацией Майкрософт. Поддержка Visual C# в Visual Studio обеспечивается с помощью полнофункционального редактора кода, компилятора, шаблонов проектов, конструкторов, мастеров кода, мощного и удобного отладчика и многих других средств. Библиотека классов .NET Framework предоставляет доступ ко многим службам операционной системы и к другим полезным, хорошо спроектированным классам, что существенно ускоряет цикл разработки.

Windows Presentation Foundation (WPF) -- это платформа пользовательского интерфейса, которая позволяет создавать многофункциональные интерактивные клиентские приложения. Платформа разработки WPF поддерживает широкий набор возможностей разработки приложений, включая модель приложения, ресурсы, элементы управления, графику, макет, привязки данных, документы и безопасность. Это подмножество платформы .NET Framework, поэтому пользователям, которые ранее выполняли построение приложений в платформе .NET Framework, используя ASP.NET или Windows Forms, будут знакомы принципы программирования. WPF использует язык XAML для обеспечения декларативной модели для программирования приложений.

XAML -- это декларативный язык разметки. С точки зрения модели программирования .NET Framework язык XAML упрощает создание пользовательского интерфейса для приложения .NET Framework. Можно создать видимые элементы пользовательского интерфейса в декларативной разметке XAML, а затем отделить определение пользовательского интерфейса от логики времени выполнения, используя файлы кода программной части, присоединенные к разметке с помощью определений разделяемых классов. При представлении в виде текста файлы XAML являются XML-файлами.

Логическое проектирование приложения

Данное приложение реализовано в соответствии с концепцией объектно-ориентированного программирования. Все классы находятся в пространстве имен WPF_MonteKarlo. Проект содержит и использует следующие классы:

PointF;

Triangle;

Circle;

Rectangle;

IceCream.

Для иллюстрации взаимосвязи классов создана карта кода, представленная на рис. 3.

Рис. 3. Карта кода проекта WPF_MonteKarlo

Класс MainWindow содержит методы, необходимые для взаимодействия с пользователем. Диаграмма класса MainWindow представлена на рис. 4.

Рис. 4. Диаграмма класса MainWindow

Класс MainWindow содержит следующий конструктор:

MainWindow() - вызывает инициализацию компонентов формы.

Класс MainWindow содержит следующие методы:

Button1_Click(object sender, RoutedEventArgs e):void - обработчик события нажатия на кнопку Button1, вызывает метод check класса MainWindow, CalkMKSquareThead класса MainWindow;

Button2_Click(object sender, RoutedEventArgs e):void - обработчик события нажатия на кнопку Button2, очищает поля для ввода координат;

Button3_Click(object sender, RoutedEventArgs e):void - обработчик события нажатия на кнопку Button3, инициализирует точки, необходимые для контрольного примера, заполняет поля для ввода координат;

CalcMKSquareThead(IceCream icecream):void - инициализирует старт многопоточной обработки: 1) вызов метода MonteKarloSquare(int count, out int numberPoints, out int rel_delta) 2) вывод результатов вычисления;

Check():bool - проверка введенных координат;

LostFocusTB():void - изменение введенных координат.

Для работы с точками используется стандартный класс платформы .NET Framework 4.5 PointF пространства имен System.Drawing. Данный класс предоставляет упорядоченную пару координат Х и Y с плавающей запятой, определяющую точку на двумерной плоскости. Диаграмма класса PointF представлена на рис. 5.

Рис. 5. Диаграмма класса PointF

Класс PointF содержит следующий конструктор:

PointF(float x, float y) - инициализирует новый экземпляр класса PointF с указанными координатами.

Класс PointF содержит следующие свойства:

IsEmpty - получает значение, определяющее, пуст ли класс PointF;

X:float - получает или задает координату Х точки PointF;

Y:float - получает или задает координату Y точки PointF.

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

Рис. 6. Диаграмма класса Circle

Класс Circle содержит следующий конструктор:

Circle(PointF a, PointF b) - инициализация полуокружности по двум точкам.

Класс Circle содержит следующие свойства:

centrPoint:PointF - центр полуокружности;

minX:float - минимальный х геометрической фигуры.

Класс Circle содержит следующие методы:

Square():float - возвращает площадь полуокружности;

PointInCircle(PointF p):bool - проверяет попадание точки в полуокружность.

Класс Triangle предоставляет необходимые методы для работы с треугольником, как частью геометрической фигуры. Диаграмма класса Triangle представлена на рис. 7.

Рис. 7. Диаграмма класса Triangle

Класс Triangle содержит следующий конструктор:

Triangle(PointF a1, PointF b1, PointF e1) - инициализация треугольника по трем точкам.

Класс Triangle содержит следующие свойства:

maxX:float - максимальный х геометрической фигуры;

maxY:float - максимальный y геометрической фигуры;

minY: float - минимальный y геометрической фигуры.

Класс Triangle содержит следующие методы:

PointInLines(PointF P): bool - проверяет попадание точки в треугольник;

Square(): float - возвращает площадь треугольника.

Класс Rectangle предоставляет необходимые методы для работы с прямоугольником описанном вокруг геометрической фигуры. Диаграмма класса Rectangle представлена на рис. 8.

Рис. 8. Диаграмма класса Rectangle

Класс Rectangle содержит следующий конструктор:

Rectangle(float MiX, float MaX, float MiY, float MaY)- инициализирует прямоугольник по четырем точкам.

Класс Rectangle содержит следующие методы:

Square():float - возвращает площадь прямоугольника.

Класс IceCream предоставляет необходимые методы для работы с заданной геометрической фигурой. Данный класс использует четыре вышеописанных класса. Диаграмма класса IceCream представлена на рис. 9.

Рис. 9. Диаграмма класса IceCream

Класс IceCream содержит следующий конструктор:

IceCream(PointF a, PointF b, PointF e)- инициализирует полуокружность ab, треугольник abe и прямоугольник abcd.

Класс IceCream содержит следующие свойства:

maxX:float - максимальный x геометрической фигуры;

maxY:float - максимальный y геометрической фигуры;

minx:float - минимальный x геометрической фигуры;

minY:float - минимальный y геометрической фигуры.

Класс IceCream содержит следующие методы:

realSquare():float - возвращает реально посчитанную площадь геометрической фигуры;

PointInIceCream(PointF p): bool - проверяет попадание точки в геометрическую фигуру;

MonteCarloSquare(int count, out int numberPoints, out float rel_delta): float - возвращает площадь геометрической фигуры, вычисленную методом Монте-Карло.

Структура программы

Проект WPF_MonteKarlo состоит из следующих файлов:

MainWindow.xaml.cs содержит класс MainWindow, в котором описан интерфейс взаимодействия с пользователем (описаны обработчики событий - нажатие кнопки, проверки вводимы данных и т.д);

MainWindow.xaml содержит код разметки формы;

IceCream.cs содержит классы Triangle, Circle, Rectangle и IceCream.

Системные требования

Для корректной работы приложения требуется:

операционная система Windows Vista с пакетом обновления (SP2) и выше;

архитектура 32-разрядная (x86)/64-разрядная (x64);

процессор мощностью 1,6 ГГц или выше;

1 ГБ ОЗУ (1,5 ГБ для виртуальной машины);

наличие 1 Мб свободного дискового пространства;

видеоадаптер, совместимый с DirectX 9;

установленный .NET Framework 4.5.

Результаты работы

Результаты работы настольного приложения представлены на рис. 10.

Рис. 10. Результаты работы настольного приложения на базе WPF/C#

ВЕБ-приложение на базе ASP/JSCRIPT

Программные средства разработки приложения

ASP (Active Server Pages, активные серверные страницы) - это среда выполнения приложений, встроенная в веб-сервер IIS (Internet Information Server, информационный сервер Интернета). В активных серверных страницах (файлах с расширением .asp) обычно имеются сценарии на скриптовых языках (например,VBScript или JScript), которые выполняются на сервере (в контексте IIS) до передачи HTML кода клиенту. Для обозначения сценариев, исполняющихся на стороне сервера, применяются специальные теги <% %>.

Данное приложение реализуется с помощью языков скриптов - JScript и JavaScript. В качестве интерпретатора скриптов использовался IIS. Разработка приложения велась в NotePad++.

Логическое проектирование приложения

Приложение состоит из двух страниц: MonteKarlo.html и MonteKarlo.asp.

Ввод данных (координат вершин фигуры, площадь которой необходимо посчитать) осуществляется на странице MonteKarlo.html. При нажатии кнопки «Расчитать» типа submit, введенные данные будут отправлены с помощью метода Post на страницу MonteKarlo.asp, которая будет производить необходимые вычисления. Код разметки, реализующий выше приведенные действия, выглядит следующим образом:

<form action = "MonteKarlo.asp" method = "POST" name = "MonteKarlo">

Параметр action указывает имя серверной страницы, которой посылаются данные для обработки, а параметр method определяет способ отсылки данных на сервер. Имя формы используется для доступа к ее элементам. На форме расположены шесть полей для ввода текста - по одному на координату каждой точки. Пример тега для редактирования поля для ввода текста: <input type="text" value = "10" name="KoordinX_B" size="20" onchange = "changeBX();" id = "bx">

Страница MonteKarlo.asp, реализует вычисление площади геометрической фигуры, относительной погрешности вычислений и времени. Данная страница написана на языке скриптов Jscript.

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

CircleSquare() - возвращает площадь полуокружности;

TriangleSquare() - возвращает площадь треугольника;

PointInTriangle(x, y)- проверяет попадание точки (x,y) в треугольник;

PointInCirle(x,y) - проверяет попадание точки в полуокружность;

PointInIceCream(x,y) - проверяет попадание точки в геометрическую фигуру;

area()- возвращает реальную площадь геометрической фигуры;

Calculate(amountPoints) - расчет площади методом Монте-Карло.

Системные требования

Для корректной работы приложения требуется:

операционная система Windows XP с пакетом обновления (SP2) и выше;

архитектура 32-разрядная (x86) /64-разрядная (x64);

процессор мощностью 1,6 ГГц или выше;

512 МБ ОЗУ;

1 ГБ (NTFS) свободного дискового пространства.

Для выполнения ASP приложения необходимо наличие следующих программных пакетов:

операционная система MS Windows 2000 или выше;

информационный сервер Интернета (Internet Information Server, IIS 5.1 или выше);

наличие браузера MS Internet Explorer 5.0 или выше.

Результаты работы

Результаты работы веб-приложения представлены на рис. 11.

Рис. 11. Результаты работы веб-приложения на базе ASP/JScript

ВЕБ-приложение на базе WEBFORM/ASMX/C#

Программные средства разработки приложения

ASP.NET - это технология для разработки веб-приложений, которая построена поверх .NET, что позволяет ей использовать огромное количество готовых классов при разработке. Существует несколько фреймворков, которые обогащают технологию, такие как ASP.NET MVC, ASP.NET WebForms и WebMatrix. В данной курсовой работе третье приложение написано на основе технологии ASP.NET WebForms.

ASP.NET WebForms - это технология разработки веб-приложений, основная цель которой - сделать веб-разработку такой же простой и визуальной, как и разработку оконных приложений.

Веб-формы -- это страницы, запрашиваемые пользователями через браузер и образующие пользовательский интерфейс, обеспечивающий возможность взаимодействия и создающий внешний вид веб-приложений. Эти страницы создаются с помощью сочетания HTML-кода, серверных элементов управления и серверного кода. Когда пользователь запрашивает страницу, она компилируется и исполняется на сервере, а затем создается разметка HTML для отображения в браузере.

Используя VisualStudio, можно создавать веб-формы ASP.NET в интегрированной среде разработки с широкими возможностями. Например, вы можете перетаскивать серверные элементы управления для компоновки страницы с веб-формами. Можно с легкостью устанавливать свойства для элементов управления, описывать события взаимодействия с ними. Для написания серверного кода для обработки логики страницы можно использовать язык .NET, такой как VisualBasic или C# (в данной курсовой работе используется C#).

Логическое проектирование серверной части

В соответствии с заданием, необходимо создать веб-сервис XML, который будет вычислять площадь геометрической фигуры amde методом Монте-Карло. Сервис будет называться WS_MonteKarlo и иметь один веб-метод MK_Square, который принимает угловые точки фигуры и количество итераций, и возвращает количество попавших в область геометрической фигуры точек, реальную площадь, площадь, посчитанную методом Монте-Карло, погрешность и время работы метода. Диаграмма класса WS_MonteKarlo представлена на рис. 12.

Рис. 12. Диаграмма класса WS_MonteKarlo веб-сервиса

Класс WS_MonteKarlo содержит следующие методы:

MK_Square(PointF a, PointF b,PointF e, int count, out int numberPoints, out float real_delta, out float realsquare, out DateTime start, out DateTime end):float - вызывает метод MonteKarloSquare(count, out numberPoints, out real_delta) класса IceCream.

Класс IceCream использует классы PointF, Circle, Triangle, Rectangle. Структуру и диаграммы этих классов можно посмотреть в пункте 4.2.

Логическое проектирование клиентской части

Реализуем клиентское WebForm приложение, которое будет обращаться к созданному ранее веб-сервису. Для этого добавим в решение новый веб-сайт и создадим веб-ссылку на ранее созданный веб-сервис.

Класс WBFClientMK содержит методы, необходимые для взаимодействия с пользователем. Диаграмма класса WBFClientMK представлена на рис. 13.

Рис. 13. Диаграмма класса WBFClientMK

Класс WBFClientMK содержит следующие методы:

Button1_Click(object sender, RoutedEventArgs e):void - обработчик события нажатия на кнопку Button1, вызывает метод MK_Square веб-сервиса WebSevice_MonteKarlo, выводит результаты выполнения веб-метода в таблицу;

Button2_Click(object sender, RoutedEventArgs e):void - обработчик события нажатия на кнопку Button2, очищает поля для ввода координат;

Button3_Click(object sender, RoutedEventArgs e):void - обработчик события нажатия на кнопку Button3, инициализирует точки, необходимые для контрольного примера, заполняет поля для ввода координат;

KoordinX_A_TextChanged(object sender, EventArgs e)- проверка вводимых координат;

KoordinX_B_TextChanged(object sender, EventArgs e)- проверка вводимых координат;

KoordinX_E_TextChanged(object sender, EventArgs e)- проверка вводимых координат;

KoordinY_A_TextChanged(object sender, EventArgs e)- проверка вводимых координат;

KoordinY_B_TextChanged(object sender, EventArgs e)- проверка вводимых координат;

KoordinY_E_TextChanged(object sender, EventArgs e)- проверка вводимых координат.

Руководство системного программиста

Общие сведения о приложении

Приложение разработано для вычисления площади фигуры методом Монте-Карло. Приложение состоит из двух частей (клиентской и серверной) и реализовано на объектно-ориентированном языке программирования C#. Клиентское приложение написано с использованием технологии WebForms. В серверном приложении применяется ASMX.

Системные требования

Для работы приложения требуется наличие следующих программных пакетов:

операционная система MS Windows XP или более поздняя версия;

наличие обозревателя MS Internet Explorer 5.0 или выше;

Microsoft .Net Framework 3.0 или старше.

Настройка приложения

Программа не требует дополнительной настройки.

Руководство программиста

Назначение и условия применения приложения

Приложение разработано для вычисления площади фигуры методом Монте-Карло. Приложение состоит из двух частей (клиентской и серверной) и реализовано на объектно-ориентированном языке программирования C#. Клиентское приложение написано с использованием технологии WebForms. В серверном приложении применяется веб-сервис ASMX.

Структура программы

Приложение состоит из следующих проектов:

WebFormClientMK (клиент), который содержит следующие файлы:

WBFClientMK.aspx - содержит разметку веб-формы;

WBFClientMK.aspx.cs - содержит в себе код для обработки событий, происходящих на форме.

WebServiceMonteKarlo (веб-сервис), который содержит следующие файлы:

Web.congif - содержит в себе настройки для корректной работы приложения на базе ASMX/C#;

WS_MonteKarlo.asmx - точка в входа веб-сервис;

WS_MonteKarlo.asmx.cs - содержит веб-метод MK_Square;

IceCream.cs - содержит классы IceCream, Triangle, Circle, Rectangle.

Входные и выходные данные

Входными данными являются координаты угловых точек фигуры;

Выходными данными являются:

таблица с информацией о работе метода Монте-Карло:

количество точек для данного опыта;

количество попавших в фигуру точек;

площадь фигуры, вычисленная методом Монте-Карло;

площадь фигуры, вычисленная по правилам геометрии;

погрешность вычислений;

время вычислений.

Руководство пользователя

Назначение приложения

Программа предназначена для вычисления площади фигуры методом Монте-Карло.

Условия выполнения приложения

Для успешной работы программы необходимо иметь компьютер с соответствующим системным требованиям (см. пункт «6.7 Системные требования»). А также получить от администратора сервера адрес веб-приложения.

Выполнение приложения

Получите у человека, который разворачивает приложения, адрес и введите его в браузере. Пример адреса, который вам будет предоставлен - «http://localhost:58668/WBFClientMK.aspx».

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

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

Если все данные введены правильно, то после нажатия кнопки «Рассчитать», программа на некоторое время перестанет отвечать на ваши действия, это нормально, потому что идут внутренние расчеты. Через некоторое время вам будет показана таблица с результатами расчетов

Системные требования

Для выполнения приложения необходимо:

операционная система MS Windows 2000 или более поздняя версия;

наличие обозревателя MS Internet Explorer 5.0 или выше;

Microsoft .Net Framework 3.0 или старше;

128 Мб оперативной памяти;

наличие 30 Мб свободного места на жестком диске.

Результаты работы

Результаты веб-приложения представлены на рисунке 14.

Рис.14. Результаты работы приложения на базе WebForm/ASMX/C#

Анализ вычислительной эффективности

Исследование вычислительной эффективности приложений производится путем определения зависимости времени вычисления площади фигуры от количества генерируемых точек для метода Монте-Карло. Результаты представлены в таблице 1.

Таблица 1.Сравнение вычислительной эффективности приложений

Количество точек

Время выполнения приложения, мс

Настольное приложение WPF

Веб-приложение на базе ASP/JScript

Веб-приложение на базе WebForm/ASMX/C#

1000

0

22

10

10000

3

450

17

100000

27

2719

40

1000000

277

24441

309

10000000

3019

245248

3150

Из таблицы видно, что приложение на базе WebForm/ASMX/C# оказалось самым производительным. Также самым медленным по времени выполнения является веб-приложение на базе ASP/JScript. Объясняется это тем, что JScript - скриптовый язык, и его сценарии не транслируются ни в машинный, ни в байт-код, а каждый раз интерпретируются сервером.

Исследования проводились на ЭВМ со следующими характеристиками:

процессор - Intel® Core™ i5-3210M CPU @2.50GHz 2.50GHz;

оперативная память - 4096 Мб;

операционная система - Windows 7 SP1;

видеокарта - NVIDIA GeForce 610M 2048Mb.

Заключение

В ходе работы были разработаны три приложения: настольное приложение WPF/C#, веб-приложение на базе ASP/JScript, приложение на базе WebForm/ASMX/C#, решающие одну и ту же задачу приближенного вычисления площади фигуры методом Монте-Карло. Также приложения подсчитываю время выполнения вычислений и их относительную погрешность. По полученным результатам была исследована вычислительная эффективность различных технологий программирования.

Также были закреплены знания, полученные в ходе изучения курса "Технологии программирования".

Список литературы

ГОСТ 19.106-78 ЕСПД. Требования к программным документам, выполненным печатным способом.

ГОСТ 19.401-78 ЕСПД. Текст программы. Требования к содержанию и оформлению.

ГОСТ 19.402-78 ЕСПД. Описание программы.

ГОСТ 19.404-79 ЕСПД. Пояснительная записка. Требования к содержанию и оформлению.

ГОСТ 2.10 -95 «Общие требования к текстовым документам».

ГОСТ 19.701 - 90 ЕСПД. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения.

ГОСТ 19.503-79 Руководство системного программиста. Требования к содержанию и оформлению.

ГОСТ 19.504-79 Руководство программиста. Требования к содержанию и оформлению.

ГОСТ 19.505-79 Руководство пользователя. Требования к содержанию и оформлению.

Компьютерное оформление отчетных документов / Составитель Т.И. Матикашвили, ТулГУ, Тула, 2000. -36 с.

Библиотека Microsoft MSDN - URL: http://msdn.microsoft.com/ru-ru/library

Шилдт Г. - C# 4.0 полное руководство - Москва: Вильямс, 2011. - 1056 с.

Натан, А. WPF 4. Подробное руководство. -- СПб. : Символ-Плюс, 2011. -- 880 с.

Ч. Петцольд Microsoft Windows Presentation Foundation - М. : Русская Редакция; СПб. : Питер, 2008. - 944 с.

Приложение

Файл IceCream.cs(Настольного приложения на базе WPF/C#)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Drawing;

using System.Text;

namespace WPF_MonteKarlo

{

class IceCream

{

private

Triangle abe;

Circle ab;

Rectangle abcd;

float k1;

float k2;

public

IceCream(PointF a, PointF b, PointF e)

{

abe = new Triangle(a, b, e);

ab = new Circle(a, b);

abcd = new Rectangle(ab.minX, abe.maxX, abe.minY, abe.maxY);

}

public bool PointInIceCream(PointF randP)

{

if (randP.X>(ab.centrPoint.X))

{ return abe.PointInLines(randP);}

else

{ return ab.PointInCircle(randP); }

}

public float realSquare() { return (abe.Square() + ab.Square());}

public float minX

{

get

{

return ab.minX;

}

}

public float maxX

{

get

{

return abe.maxX;

}

}

public float minY

{

get

{

return abe.minY;

}

}

public float maxY

{

get

{

return abe.maxY;

}

}

public float MonteKarloSquare(int count, out int numberPoints, out float rel_delta)

{

Random rand = new Random();

numberPoints = 0;

//DateTime start_date_time = DateTime.Now;

for (int k = 0; k < count; k++)

{

PointF p = new PointF(minX + (float)(rand.NextDouble() * (maxX - minX)),

minY + (float)(rand.NextDouble() * (maxY - minY)));

if (PointInIceCream(p))

{

numberPoints++;

}

}

//DateTime end_date_time = DateTime.Now;

float MK_Square = abcd.Square() * ((float)numberPoints / (float)count);

rel_delta = (float)Math.Round((Math.Abs((MK_Square - realSquare()) * 100) / realSquare()) * 10000) / (float)10000.0;

return MK_Square;

}

}

class Triangle

{

private

PointF a, b, e;

float k1;

float k2;

public

Triangle(PointF a1, PointF b1, PointF e1)

{

a = a1; b = b1; e = e1;

k1 = (e.Y - a.Y) / (e.X - a.X);

k2 = (e.Y - b.Y) / (e.X - b.X);

}

public float Square()

{

float ab = (float)Math.Sqrt(Math.Pow((a.X - b.X), 2) + Math.Pow((a.Y - b.Y), 2));

float ae = (float)Math.Sqrt(Math.Pow((a.X - e.X), 2) + Math.Pow((a.Y - e.Y), 2));

float be = (float)Math.Sqrt(Math.Pow((b.X - e.X), 2) + Math.Pow((b.Y - e.Y), 2));

float polperim = (ab + ae + be) / 2.0f;

return (float)Math.Sqrt((polperim * (polperim - ab) * (polperim - ae) * (polperim - be)));

}

public bool PointInLines(PointF p)

{

if ((((p.X - a.X) * k1 + a.Y) >= p.Y) || (((p.X - b.X) * k2 + b.Y) <= p.Y))

{

return true;

}

else

{

return false;

}

}

public float maxX

{

get

{

return e.X;

}

}

public float minY

{

get

{

return a.Y;

}

}

public float maxY

{

get

{

return b.Y;

}

}

}

class Circle

{

private

PointF centr;

float r;

public

Circle(PointF a, PointF b)

{

r = (b.Y - a.Y) / 2;

centr = new PointF(a.X, a.Y + r);

}

public float Square()

{

return (float)(Math.PI * Math.Pow(r, 2) / 2.0);

}

public bool PointInCircle(PointF p1)

{

if (p1.X < centr.X)

{

return ((Math.Pow(p1.X - centr.X, 2) + Math.Pow(p1.Y - centr.Y, 2)) <= Math.Pow(r, 2));

}

else { return false; }

}

public float minX

{

get

{

return centr.X - r;

}

}

public PointF centrPoint

{

get

{

return centr;

}

}

}

class Rectangle

{

private

float minX, maxX, minY, maxY;

public

Rectangle(float MiX, float MaX, float MiY, float MaY)

{

minX = MiX;

maxX = MaX;

minY = MiY;

maxY = MaY;

}

public float Square()

{

return (maxX - minX) * (maxY - minY);

}

}

}

Файл MainWindow.xaml

<Window x:Class="WPF_MonteKarlo.MainWindow"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Расчет площади методом Монте-Карло" Height="416.289" Width="654.78" ShowInTaskbar="False" Background="#FF8D8D8D" WindowStyle="ThreeDBorderWindow" Loaded="Window_Loaded" ResizeMode="NoResize" Icon="Graphicloads-Food-Drink-Icecream-2.ico">

<Grid Margin="0,0,0,-3">

<RichTextBox x:Name="RichResultTB" Margin="10,223,10,18" Background="White" BorderBrush="Red" RenderTransformOrigin="0.665,0.689">

<FlowDocument>

<Paragraph/>

</FlowDocument>

</RichTextBox>

<Canvas Height="218" VerticalAlignment="Top" Background="#FF8D8D8D" RenderTransformOrigin="0.5,0.5">

<Image x:Name="Image1" Height="179" Canvas.Left="337" Width="305" Canvas.Top="29" Source="Image/Мороженкаv2.bmp" />

<Button x:Name="Button1" Content="Рассчитать" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Click="Button1_Click" Canvas.Left="20" Canvas.Top="168" Height="40"/>

<GroupBox Header="Координаты точек" HorizontalAlignment="Center" VerticalAlignment="Top" Height="134" Width="309" Margin="0" Panel.ZIndex="2" BorderBrush="#FFFF0004" Foreground="Black" OpacityMask="#FF200CEE" Canvas.Left="10" Canvas.Top="29">

<WrapPanel Margin="0,0,-2,0">

<WrapPanel Height="26" Width="290">

<Label Content="" Width="78"/>

<Label Content="Координата Х" Width="115"/>

<Label Content="Координата Y" Width="94"/>

</WrapPanel>

<Label Content="Точка А:"/>

<TextBox x:Name="KoordinX_A" Height="23" TextWrapping="Wrap" Text="-7" Width="120" LostFocus="LostFocusTB"/>

<TextBox x:Name="KoordinY_A" Height="23" TextWrapping="Wrap" Text="-9" Width="120" LostFocus="LostFocusTB"/>

<Label Content="Точка В:" Width="56"/>

<TextBox x:Name="KoordinX_B" Height="23" TextWrapping="Wrap" Text="-7" Width="120" LostFocus="LostFocusTB"/>

<TextBox x:Name="KoordinY_B" Height="23" TextWrapping="Wrap" Text="17" Width="120" LostFocus="LostFocusTB"/>

<Label Content="Точка Е:" Width="56"/>

<TextBox x:Name="KoordinX_E" Height="23" TextWrapping="Wrap" Text="37" Width="120" LostFocus="LostFocusTB"/>

<TextBox x:Name="KoordinY_E" Height="23" TextWrapping="Wrap" Text="9" Width="120" LostFocus="LostFocusTB"/>

</WrapPanel>

</GroupBox>

<Button x:Name="Button2" Content="Очистить" Canvas.Left="100" Canvas.Top="168" Width="75" Height="40" Click="Button2_Click"/>

<Button x:Name="Button3" Content="Контрольный пример" Canvas.Left="180" Canvas.Top="168" Width="139" Height="40" Click="Button3_Click"/>

<Label Content="Курсовая работа по исследованию вычислительной эффективности веб-технологий. Выполнил: ст. гр. 622121 Сальников В.В. " Height="29" FontFamily="Tahoma" FontSize="11" Width="652" Foreground="Black"/>

</Canvas>

<Label Content="" HorizontalAlignment="Left" Margin="0,317,0,0" VerticalAlignment="Top" Height="18" FontSize="7" Width="54"/>

</Grid>

</Window>

Файл MainWindow.xaml.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Drawing;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;

using System.Threading;

namespace WPF_MonteKarlo

{

/// <summary>

/// Логика взаимодействия для MainWindow.xaml

/// </summary>

public partial class MainWindow : Window

{

public MainWindow()

{

InitializeComponent();

}

public PointF a = new PointF(-7, -9);

public PointF b = new PointF(-7, 17);

public PointF e = new PointF(37, 9);

//float ax = -7;

// float bx = -7;

//float ex = 37;

// float ay = -9;

//float by = 17;

//float ey = 9;

Thread calc_thread = null;

private bool check()

{

bool result = true; // ошибок нет

float Number;

string Error = "";

if (float.TryParse(KoordinY_A.Text, out Number)) // проверка координаты Y точки А

{

if (float.Parse(KoordinY_A.Text) >= float.Parse(KoordinY_B.Text))

{

Error += "Координата Y точки A не может быть больше координаты Y точки В ";

KoordinY_A.Text = a.Y.ToString();

result = false;

}

if (float.Parse(KoordinY_A.Text) >= float.Parse(KoordinY_E.Text))

{

Error += "Координата Y точки A не может быть больше координаты Y точки E";

KoordinY_A.Text = a.Y.ToString();

result = false;

}

}

else

{

result = false;

}

if (float.TryParse(KoordinY_B.Text,out Number)) // проверка координаты Y точки B

{

if (float.Parse(KoordinY_B.Text) <= float.Parse(KoordinY_A.Text))

{

Error += "Координата Y точки B не может быть меньше координаты Y точки А";

KoordinY_B.Text = b.Y.ToString();

result = false;

}

if (float.Parse(KoordinY_B.Text) <= float.Parse(KoordinY_E.Text))

{

Error += "Координата Y точки B не может быть меньше координаты Y точки E";

KoordinY_B.Text = b.Y.ToString();

result = false;

}

}

else

{

result = false;

}

if (float.TryParse(KoordinX_A.Text, out Number)) //проверка координаты Х точки А

{

if (float.Parse(KoordinX_A.Text) >= float.Parse(KoordinX_E.Text))

{

Error += "Координата X точки A не может быть больше координаты X точки E";

KoordinX_A.Text = a.X.ToString();

result = false;

}

}

else

{

result = false;

}

if (float.TryParse(KoordinX_B.Text, out Number)) //проверка координаты Х точки B

{

if (float.Parse(KoordinX_B.Text) >= float.Parse(KoordinX_E.Text))

{

Error += "Координата X точки B не может быть больше координаты X точки E";

KoordinX_B.Text = b.X.ToString();

result = false;

}

}

else

{

result = false;

}

if (float.TryParse(KoordinX_E.Text, out Number)) //проверка координаты Х точки Е

{

if ((float.Parse(KoordinX_E.Text) <= float.Parse(KoordinX_A.Text)) || (float.Parse(KoordinX_E.Text) <= float.Parse(KoordinX_B.Text)))

{

Error += "Координата X точки E не может быть меньше координаты X точки А и В";

KoordinX_E.Text = e.X.ToString();

result = false;

}

}

else

{

result = false;

}

if (float.TryParse(KoordinY_E.Text, out Number)) // проверка координаты Y точки Е

{

if ((float.Parse(KoordinY_E.Text) <= float.Parse(KoordinY_A.Text)))

{

Error += "Координата Y точки E не может быть меньше координаты Y точки А";

KoordinY_E.Text = e.Y.ToString();

result = false;

}

if ((float.Parse(KoordinY_E.Text) >= float.Parse(KoordinY_B.Text)))

{

Error += "Координата Y точки E не может быть больше координаты Y точки В";

KoordinY_E.Text = e.Y.ToString();

result = false;

}

}

else

{

result = false;

}

if (result == false)

{

MessageBox.Show(Error, "Введено некорректное значение координат", MessageBoxButton.OK, MessageBoxImage.Warning);

return result;

}

else

{

return result;

}

}

private void LostFocusTB(object sender, RoutedEventArgs ee)

{

TextBox EventTextBox = (TextBox)sender;

float Number = 0.0f;

string TextInTextBox = EventTextBox.Text.Replace(".", ",");

if (float.TryParse(TextInTextBox, out Number))

{

if (EventTextBox.Equals(KoordinX_A)) // проверка координаты X точки А

{

KoordinX_B.Text = KoordinX_A.Text;

b.X = float.Parse(KoordinX_B.Text);

}

if (EventTextBox.Equals(KoordinX_B)) // проверка координаты X точки B

{

KoordinX_A.Text = KoordinX_B.Text;

a.X = float.Parse(KoordinX_A.Text);

}

if (EventTextBox.Equals(KoordinX_E)) // проверка координаты X точки Е

{

e.X = float.Parse(KoordinX_E.Text);

}

if (EventTextBox.Equals(KoordinY_A)) // проверка координаты Y точки A

{

a.Y = float.Parse(KoordinY_A.Text);

}

if (EventTextBox.Equals(KoordinY_B)) // проверка координаты Y точки B

{

b.Y = float.Parse(KoordinY_B.Text);

}

if (EventTextBox.Equals(KoordinY_E)) // проверка координаты Y точки E

{

e.Y = float.Parse(KoordinY_E.Text);

}

if (KoordinX_A.Text!="" && KoordinX_B.Text!="" && KoordinX_E.Text!="" && KoordinY_A.Text != ""

&& KoordinY_B.Text!="" && KoordinY_E.Text != "")

{

Button1.IsEnabled = true;

}

else

{

Button1.IsEnabled = false;

}

}

else

{

MessageBoxResult cur_result = MessageBox.Show("Введено некорректное значение координаты\n" ,

//"Будет поставлено предыдущее значение",

"Введено некорректное значение координаты", MessageBoxButton.OK,

MessageBoxImage.Exclamation);

if (cur_result == MessageBoxResult.OK)

{

if (EventTextBox.Equals(KoordinX_A))

{

KoordinX_A.Text = a.X.ToString();

}

if (EventTextBox.Equals(KoordinX_B))

{

KoordinX_B.Text = b.X.ToString();

}

if (EventTextBox.Equals(KoordinX_E))

{

KoordinX_E.Text = e.X.ToString();

}

if (EventTextBox.Equals(KoordinY_A))

{

KoordinY_A.Text = a.Y.ToString();

}

if (EventTextBox.Equals(KoordinY_B))

{

KoordinY_B.Text = b.Y.ToString();

}

if (EventTextBox.Equals(KoordinY_E))

{

KoordinY_E.Text = e.Y.ToString();

}

//KoordinX_A.Text = ax.ToString(); //.X.ToString("R");

//KoordinX_B.Text = bx.ToString();//.X.ToString("R");

//KoordinX_E.Text = ex.ToString(); //.X.ToString("R");

//KoordinY_A.Text = ay.ToString();//.X.ToString("R");

//KoordinY_B.Text = by.ToString(); //.X.ToString("R");

//KoordinY_E.Text = ey.ToString();//.X.ToString("R");

}

}

}

private void CalcMKSquareThead(IceCream icecream)

{

calc_thread = new Thread(new ParameterizedThreadStart(delegate(object thr_obj)

{

try

{

MainWindow this_form = (MainWindow)thr_obj;

Table t = null; TableRowGroup trg = null;

TableRow tr = null; TableCell tcell = null;

int j = 3;

this_form.Dispatcher.BeginInvoke(new Action(delegate()

{

RichResultTB.Document.Blocks.Clear();

t = new Table();

trg = new TableRowGroup();

tr = new TableRow();

tcell = new TableCell();

tcell.Blocks.Add(new Paragraph(new Run("Число точек")));

tr.Cells.Add(tcell);

tcell = new TableCell();

tcell.Blocks.Add(new Paragraph(new Run("Число попавших точек точек")));

tr.Cells.Add(tcell);

tcell = new TableCell();

tcell.Blocks.Add(new Paragraph(new Run("Площадь Монте-Карло")));

tr.Cells.Add(tcell);

tcell = new TableCell();

tcell.Blocks.Add(new Paragraph(new Run("Точная площадь")));

tr.Cells.Add(tcell);

tcell = new TableCell();

tcell.Blocks.Add(new Paragraph(new Run("Относительная погрешность,%")));

tr.Cells.Add(tcell);

tcell = new TableCell();

tcell.Blocks.Add(new Paragraph(new Run("Время вычисления,мс")));

tr.Cells.Add(tcell);

trg.Rows.Add(tr);

t.RowGroups.Add(trg);

RichResultTB.Document.Blocks.Add(t);

}), null);

float square = icecream.realSquare();

for (int i = 3; i < 8; i++)

{

int numberPoints = 0;

float rel_delta = 0;

float MK_Square = 0;

DateTime start_date_time = DateTime.Now;

MK_Square = icecream.MonteKarloSquare((int)Math.Pow(10, i), out numberPoints, out rel_delta);

DateTime end_date_time = DateTime.Now;

TimeSpan arv_time = end_date_time - start_date_time;

this_form.Dispatcher.BeginInvoke(new Action(delegate()

{

tr = new TableRow();

tcell = new TableCell();

tcell.Blocks.Add(new Paragraph(new Run(Math.Pow(10, j).ToString())));

tr.Cells.Add(tcell);

tcell = new TableCell();

tcell.Blocks.Add(new Paragraph(new Run(numberPoints.ToString())));

tr.Cells.Add(tcell);

tcell = new TableCell();

tcell.Blocks.Add(new Paragraph(new Run(MK_Square.ToString())));

tr.Cells.Add(tcell);

tcell = new TableCell();

tcell.Blocks.Add(new Paragraph(new Run(square.ToString())));

tr.Cells.Add(tcell);

tcell = new TableCell();

tcell.Blocks.Add(new Paragraph(new Run(rel_delta.ToString())));

tr.Cells.Add(tcell);

tcell = new TableCell();

tcell.Blocks.Add(new Paragraph(

new Run((((int)arv_time.TotalMilliseconds).ToString()))));

tr.Cells.Add(tcell);

trg.Rows.Add(tr);

j++;

}), null);

}

}

catch (Exception ex)

{ }

}

));

calc_thread.Priority = ThreadPriority.Highest;

calc_thread.Start(this);

}

private void Button1_Click(object sender, RoutedEventArgs n)

{

if (check())

{

a = new PointF(a.X, a.Y);

b = new PointF(b.X, b.Y);

e = new PointF(e.X, e.Y);

IceCream icecream = new IceCream(a, b, e);

CalcMKSquareThead(icecream);

}

else { }

}

private void Window_Loaded(object sender, RoutedEventArgs e)

{

Table tbl = null; TableRowGroup trg = null;

TableRow tblrw = null; TableCell tblcell = null;

RichResultTB.Document.Blocks.Clear();

tbl = new Table();

trg = new TableRowGroup();

tblrw = new TableRow();

tblcell = new TableCell();

tblcell.Blocks.Add(new Paragraph(new Run("Число точек")));

tblrw.Cells.Add(tblcell);

tblcell = new TableCell();

tblcell.Blocks.Add(new Paragraph(new Run("Число попавших точек")));

tblrw.Cells.Add(tblcell);

tblcell = new TableCell();

tblcell.Blocks.Add(new Paragraph(new Run("Площадь Монте-Карло")));

tblrw.Cells.Add(tblcell);

tblcell = new TableCell();

tblcell.Blocks.Add(new Paragraph(new Run("Точная площадь")));

tblrw.Cells.Add(tblcell);

tblcell = new TableCell();

tblcell.Blocks.Add(new Paragraph(new Run("Относительная погрешность,%")));

tblrw.Cells.Add(tblcell);

tblcell = new TableCell();

tblcell.Blocks.Add(new Paragraph(new Run("Время вычисления,мс")));

tblrw.Cells.Add(tblcell);

trg.Rows.Add(tblrw);

tbl.RowGroups.Add(trg);

RichResultTB.Document.Blocks.Add(tbl);

}

private void Button2_Click(object sender, RoutedEventArgs ee)

{

KoordinX_A.Text = KoordinX_B.Text =

KoordinX_E.Text = KoordinY_A.Text =

KoordinY_B.Text = KoordinY_E.Text = "";

Button1.IsEnabled = false;

}

private void Button3_Click(object sender, RoutedEventArgs ee)

{

a = new PointF(10, 0);

b = new PointF(10, 10);

e = new PointF(40, 5);

KoordinX_A.Text = a.X.ToString();

KoordinX_B.Text = b.X.ToString();

KoordinX_E.Text = e.X.ToString();

KoordinY_A.Text = a.Y.ToString();

KoordinY_B.Text = b.Y.ToString();

KoordinY_E.Text = e.Y.ToString();

Button1.IsEnabled = true;

}

}

}

Файл MonteKarlo.html (Веб-приложение на базе ASP/Jscript)

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<title>Расчет площади методом Монте-Карло</title>

<script>

function changeAX()

{

document.getElementById("bx").value = document.getElementById("ax").value;

}

function changeBX()

{

document.getElementById("ax").value = document.getElementById("bx").value;

}

function Reset()

{

MonteKarlo.KoordinX_A.value = "";

MonteKarlo.KoordinX_B.value = "";

MonteKarlo.KoordinX_E.value = "";

MonteKarlo.KoordinY_A.value = "";

MonteKarlo.KoordinY_B.value = "";

MonteKarlo.KoordinY_E.value = "";

}

function Example()

{

MonteKarlo.KoordinX_A.value = "10";

MonteKarlo.KoordinX_B.value = "10";

MonteKarlo.KoordinX_E.value = "40";

MonteKarlo.KoordinY_A.value = "0";

MonteKarlo.KoordinY_B.value = "10";

MonteKarlo.KoordinY_E.value = "5";

}

</script>

</script>

</head>

<body>

<form action = "MonteKarlo.asp" method = "POST" name = "MonteKarlo">


Подобные документы

  • Проект и реализация настольного и веб-приложения, которое считает площадь фигуры методом "Монте-Карло" на базе WPF/C#, ASP/JScript, WebForm/ASMX/C#. Программные средства разработки приложения. Системные требования. Руководство программиста, пользователя.

    курсовая работа [819,9 K], добавлен 23.11.2015

  • Программные средства разработки приложения. Анализ алгоритма решения. Определение попадания точки внутрь фигуры. Анализ вариантов использования программы. Логическое проектирование серверной части. Сравнительный анализ вычислительной эффективности.

    дипломная работа [1,5 M], добавлен 16.02.2016

  • Создание процедурно-ориентированной и объектно-ориентированной реализации конкретного приложения и сравнительный анализ их вычислительной эффективности. Определение попадания точки внутрь фигуры. Возможности улучшения характеристик качества приложений.

    курсовая работа [1,5 M], добавлен 04.12.2021

  • Общие требования к АИС киноцентра "Пирамида". Концептуальное, логическое и физическое проектирование, запросы к базе данных и экранные формы. Основы разработки внешних приложений в Delphi. Создание внешнего приложения и руководство пользователя.

    курсовая работа [1,3 M], добавлен 03.11.2014

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

    дипломная работа [2,2 M], добавлен 08.06.2017

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

    курсовая работа [561,9 K], добавлен 28.08.2019

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

    дипломная работа [2,4 M], добавлен 08.01.2014

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

    дипломная работа [12,5 M], добавлен 13.06.2015

  • Характеристика основных методов для решения различных задач с помощью случайных последовательностей. Реализация и проверка эффективности метода Монте-Карло при его применении на различных примерах. Алгоритм метода имитации. Издержки неопределенности.

    курсовая работа [98,9 K], добавлен 04.05.2014

  • Реализация приложения "Книжный магазин" средствами систем управления базами данных. Проектирование структуры базы данных, определение сущности и атрибутов. Логическое проектирование базы данных и реализация базы данных в СУБД Microsoft Office Access.

    курсовая работа [7,8 M], добавлен 13.02.2023

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.