Реферат: Использование современной компьютерной техники и программного обеспечения для решения прикладных задач в области геодезических измерений

Федеральноеагентство образования и науки Российской Федерации

Санкт-Петербургскийгосударственный горный институт им. Г.В. Плеханова (технический университет)

/>/>/>/>/>/>/>/>/>КУРСОВАЯРАБОТА

Подисциплине: Информатика .

(наименованиеучебной дисциплины согласно учебному плану)

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

Тема: Использованиесовременной компьютерной техники и программного обеспечения для решенияприкладных задач в области геодезических измерений.

Автор: студент гр. ГГ-09-2________________       /Скоропупов М.В./

                                       (подпись)                 (Ф.И.О.)

ОЦЕНКА: _____________

Дата: _________________

ПРОВЕРИЛ

Руководитель проекта _доцент_________________        /Косовцева Т. Р./

                             (должность)(подпись)         (Ф.И.О.)

Санкт-Петербург

2010 г


Федеральное агентство пообразованию Российской Федерации

Санкт-Петербургскийгосударственный горный институт им Г.В. Плеханова (технический университет)

УТВЕРЖДАЮ

Заведующий кафедрой

___________ /________/

"___"__________2010г.

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


КУРСОВОЙПРОЕКТ / РАБОТА

 

По дисциплине_____________Информатика______________________

_____________________________________________________________

(наименованиеучебной дисциплины согласно учебному плану)

 

ЗАДАНИЕ

Студенту группы         ГГ-09-2                       Скоропупов М.В.

                    (шифргруппы)                    (Ф.И.О.)

1. Тема проекта: Использованиесовременной компьютерной техники и программного обеспечения для решенияприкладных задач в области геодезических измерений.

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

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

4. Срок сдачизаконченного проекта ______________________________

Руководитель проекта доцент_____________         /Косовцева Т. Р./

                             (должность)(подпись)        (Ф.И.О.)

Дата выдачи задания:_____________________


/>/>/>/>/>/>/>/>/>/>Аннотация

В данной работе представлено описание решения типовыхгеодезических задач на основе языка программирования Turbo Pascal 7.0, проверка которых осуществлялась с помощьютабличного процессора Microsoft Office Excel 2007 и MathCad 14. Отчёт оформлен втекстовом процессоре Microsoft Office Word 2007.

Страниц 60, рисунков 23, таблиц 3.

/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>/>The summary

The explanatory note represents thereport on course work on a theme: the decision of geodetic problems with thehelp of programming language Turbo Pascal and tabulared processor Excel andMathCad 14. The report is made out in word-processor Microsoft Word.

Pages 60, figures 23, tables 3.


/>/>/>/>Оглавление

ВВЕДЕНИЕ

1. ОБРАТНАЯГЕОДЕЗИЧЕСКАЯ ЗАДАЧА

1.1 ТЕОРЕТИЧЕСКИЕСВЕДЕНИЯ

1.2 ПОСТАНОВКАЗАДАЧИ

1.3 ИСХОДНЫЕДАННЫЕ

1.4 БЛОК СХЕМА ДЛЯTURBO PASCAL

1.5 ТЕКСТПРОГРАММЫ

1.6 СОДЕРЖАНИЕФАИЛА «DANO.TXT»

1.7 РЕЗУЛЬТАТЫПРОГРАММЫ

1.8 ТАБЛИЧНЫЕВЫЧИСЛЕНИЯ MS EXCEL

1.9 ВЫЧИСЛЕНИЯ ВMATHCAD

1.10 АНАЛИЗ

2. ПРЯМАЯ УГЛОВАЯЗАСЕЧКА

2.1 ТЕОРЕТИЧЕСКИЕСВЕДЕНИЯ

2.2 ПОСТАНОВКАЗАДАЧИ

2.3 ИСХОДНЫЕДАННЫЕ

2.4 АЛГОРИТМ ДЛЯTURBO PASCAL

2.5 ТЕКСТПРОГРАММЫ

2.6 СОДЕРЖАНИЕФАИЛА «IN.TXT»

2.7 РЕЗУЛЬТАТЫПРОГРАММЫ

2.8 ТАБЛИЧНЫЕВЫЧИСЛЕНИЯ В MS EXCEL

2.9 ВЫЧИСЛЕНИЯ ВMATHCAD

2.10 АНАЛИЗ

3. ОБРАТНАЯГЕОДЕЗИЧЕСКАЯ ЗАСЕЧКА

3.1 ТЕОРЕТИЧЕСКИЕСВЕДЕНИЯ

3.2 ПОСТАНОВКАЗАДАЧИ

3.3 ИСХОДНЫЕДАННЫЕ

3.4 АЛГОРИТМ ДЛЯTURBO PASCAL

3.5 ТЕКСТПРОГРАММЫ

3.6 СОДЕРЖАНИЕФАИЛА «DATA.TXT»

3.7 РЕЗУЛЬТАТПРОГРАММЫ

3.8 ТАБЛИЧНЫЕВЫЧИСЛЕНИЯ MS EXCEL

3.9 ВЫЧИСЛЕНИЯ ВMATHCAD

3.10 АНАЛИЗ

4. РЕШЕНИЕ СЛАУМЕТОДОМ ГАУССА

4.1 ТЕОРЕТИЧЕСКИЕСВЕДЕНИЯ

4.2 ПОСТАНОВКАЗАДАЧИ

4.3 ИСХОДНЫЕДАННЫЕ

4.4 БЛОК-СХЕМААЛГОРИТМА

4.5 ТЕКСТПРОГРАММЫ

4.6. СОДЕРЖАНИЕФАИЛА «CLAY.TXT»

4.7 РЕЗУЛЬТАТЫРЕШЕНИЯ

4.8 ТАБЛИЧНЫЕВЫЧИСЛЕНИЯ MS EXCEL

4.9 ВЫЧИСЛЕНИЯ ВMATHCAD

4.10 АНАЛИЗ

ВЫВОД

БИБЛИОГРАФИЧЕСКИЙСПИСОК


Введение

Камеральная обработка результатов геодезическихизмерений является одной из важнейших частей процесса по получению координатпунктов геодезической сети.

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

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

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

Программное обеспечение, такое как StarNet — уравнивание геодезических сетей, Mapsuite — создание инженерно-топографическихпланов, LEICA Geo Office — обработка геодезических измерений, SiteMaster — автоматизация обмерных работ, GeometricalGeodesy — решение геодезических задач всистеме Mathematica, предназначены для решения различныхгеодезических задач.В данной работе представлено решение аналогичныхзадач с помощью языка программирования Turbo Pascal, табличного процессораMicrosoft Excel 2007 и MathCad 14.

При написании программ на языке Turbo Pascal былииспользованы операторы:

условный оператор If определяет, что тот или иной оператор должен выполняться лишь в томслучае, если справедливо заданное условие.

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

операция Assign(присваивание имени файла). По синтаксису она состоит из имя файла и переменнойтипа файлов. Все действия производят над дисковым файлом.

операция Close(закрыть файл). Дисковый файл, назначенный переменной, закрывается и справочникдиска обновляется с тем, чтобы в нём в дальнейшем отобразить новые сведения осостоянии файла.

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

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

Также при написании программ использовались стандартныеарифметические функции ( abs, arctan, sqr, sqrt ит.д.).

При создании пояснительной записки использован текстовыйпроцессор Microsoft Word 2007.

 


1. Обратная геодезическая задача

/>/>/>/>/>/>/> 

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

Обратная геодезическая задача заключается в вычислениидирекционного угла и расстояния R= | AB | по заданным на плоскостидекартовым координатам x, y двух точек А и В. Дирекционныйугол, в конечном итоге, должен быть представлен в градусной мере, как этопринято в геодезии. Расстояние между точками определяется через найденныйдирекционный угол.

/>


x C

 

A 

 B

 y

 Рис. 1.1

Пусть даны две точки А и В (рис. 1.1), координатыкоторых соответственно />

Согласно схеме, показанной на рис. 1.1, приращениякоординат определяются:

 

/> (1.1)

Затем находят величину румба.

/> (1.2)

Далее по знакам приращения координат находят названиечетверти, что, в свою очередь, позволяет определить значение дирекционногоугла.

/>/>/>/>/>Табл.1.1.

Знаки приращения координат Название четверти Формула дирекционного угла

/>

/>

+ + I

 = r

- + II

r

- - III

r

+ - IV

r

 

Определениезначения дирекционного угла

Горизонтальноерасстояние между точками может быть определено по формуле:

/> (1.3)

или по формуле:

/> (1.4)

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

Переводим величину в градусную меру


/>;

Выделяем целую часть />;

Вычисляем остаток и переводим его в минуты

/>;

Вычисляем целое число минут

/>;

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

/>.

Значение дирекционного угла в градусах, минутах и секундахдают, соответственно, значения переменных m, s.

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

Даны координаты 2-х точек A(х,y) и B(x,y). Определитьдирекционный угол прямой AB.

/>/>/>/>/>/>1.3 Исходные данные

Вариант 2

А) X1= 5119.94 Y1 = 6157.33

X2 = 7182.27 Y2= 4976.39

В) X1= 10932.84 Y1 = 6112.26

X2 = 9115.24 Y2= 4903.68

/>/>/>/>/>1.4. Блок схема для Turbo Pascal

 

*процедура для определения приращений;

**процедура для определение значениядирекционного угла и четверти;

***процедура для перевода из радиан вградусы.

/>/>/>/> 

1.5 Текст программы

ProgramZadacha1;

UsesCRT;{использование библиотеки}

Var i,j,k:integer;{описание переменных}

x1,y1,x2,y2,x3,y3,x4,y4,Dy,Dx,Dx1,Dy1,R,R1,Alfa,alfa1,S,S1:real;

AlfaGr,AlfaMi,AlfaS,AlfaGr1,AlfaMi1,AlfaS1:real;

t1,t2:text;

{процедура для определения приращений}

procedure Prir (var k1:real; vark2:real; var Dd:real);

 begin

 Dd:=k2-k1;

 end;

{процедура для перевода в грудусы}

procedure Gradyc (varA,AGr,AMi,AS:real);

 Var

 AG,AM:real;

 begin

 AG:=180*(A/Pi);

AGr:=int(AG);

 AM:=60*(AG-AGr);

AMi:=int(AM);

 AS:=int(60*(AM-AMi));

 end;

{процедура для определение значения дирекционногоугла и четверти}

procedure Analiz (var X,Y,R,A:real);

 begin

 If (X>0) and (Y>0) Then

          Begin

A:=R;

         Writeln('I chetvert');

         Writeln(t2,'I четверть');

         Writeln('Direkcionnii ygolraven(v radianax):');

         Writeln(t2,'Дирекционныйугол равен(в радианах):');

         Writeln(A:6:3);

         Writeln(t2,A:6:3);

          End;

 If (X<0) and (Y>0) Then

          Begin

 A:=(Pi)-R;

          Writeln('II chetvert');

          Writeln(t2,'II четверть');

          Writeln('Direkcionnii ygolraven(v radianax):');

          Writeln(t2,'Дирекционныйугол равен(в радианах):');

          Writeln(A:6:3);

          Writeln(t2,A:6:3);

          End;

 If (X<0) and (Y<0) Then

          Begin

 A:=(Pi)+R;

          Writeln('III chetvert');

          Writeln(t2,'III четверть');

          Writeln('Direkcionnii ygolraven(v radianax):');

          Writeln(t2,'Дирекционныйугол равен(в радианах):');

          Writeln(A:6:3);

          Writeln(t2,A:6:3);

          End;

 If (X>0) and (Y<0) Then

          Begin

 A:=(2*(Pi)-R);

          Writeln('IV chetvert');

          Writeln(t2,'IV четверть');

          Writeln('Direkcionnii ygolraven(v radianax):');

          Writeln(t2,'Дирекционныйугол равен(в радианах):');

          Writeln(A:6:3);

          Writeln(t2,A:6:3);

          End;

 end;

Begin

ClrScr;{очисткаэкрана}

Assign (t1,'dano.txt');{привязкафаилакпеременной}

Assign (t2,'rezultat.txt');

Reset (t1);

Rewrite (t2);

{чтение из фаила исходных значений}

 Readln(t1);

 Readln(t1);{пропуск строки «Точка 1.»}

 Readln(t1);{пропуск строки «Координата по осиX:»}

 Readln(t1,x1);{чтение из фаила значения координатыпо оси X для точки А}

 Readln(t1);{пропуск строки «Координата по осиY:»}

 Readln(t1,y1);{чтение из фаила значения координатыпо оси Y для точки А}

 Readln(t1);{пропуск строки «Точка 2.»}

 Readln(t1);{пропуск строки «Координата по осиX:»}

 Readln(t1,x2);{чтение из фаила значения координатыпо оси X для точки B}

 Readln(t1);{пропуск строки «Координата по осиY:»}

 Readln(t1,y2);{чтение из фаила значения координатыпо оси Y для точки B}

 Readln(t1);

 Readln(t1);

 Readln(t1);{пропуск строки «Точка 1.»}

 Readln(t1);{пропуск строки «Координата по осиX:»}

 Readln(t1,x3);{чтение из фаила значения координатыпо оси X для точки А}

 Readln(t1);{пропуск строки «Координата по осиY:»}

 Readln(t1,y3);{чтение из фаила значения координатыпо оси Y для точки А}

 Readln(t1);{пропуск строки «Точка 2.»}

 Readln(t1);{пропуск строки «Координата по осиX:»}

 Readln(t1,x4);{чтение из фаила значения координатыпо оси X для точки B}

 Readln(t1);{пропуск строки «Координата по осиY:»}

 Readln(t1,y4);{чтение из фаила значения координатыпо оси Y для точки B}

 Readln(t1);

 Begin

{определение приращений координат}

Prir(x1,x2,Dx);

Prir(y1,y2,Dy);

Prir(x3,x4,Dx1);

Prir(y3,y4,Dy1);

{проведение контроля полученных значений}

Writeln('Prirasheniya zadaniya A');{вывод на экраннадписи «Приращения для задания А»}

         Writeln(t2,'Приращения для заданияА');{вывод в фаил надписи «Приращения для задания А»}

         Writeln('Po oci X');{вывод на экран надписи«По оси X»}

         Writeln(t2,'По оси X');{вывод в фаилнадписи «По оси X»}

         Writeln(Dx:6:2);{вывод значения для X наэкран}

         Writeln(t2,Dx:6:2);{вывод значения для X вфаил}

         Writeln('Po oci Y');{вывод на экран надписи«По оси Y»}

         Writeln(t2,'По оси Y');{вывод в фаилнадписи «По оси Y»}

         Writeln(Dy:6:2);{вывод значения для Y наэкран}

         Writeln(t2,Dy:6:2);{вывод значения для Y вфаил}

          Writeln('Prirasheniya zadaniya B');{выводна экран надписи «Приращения для задания B»}

          Writeln(t2,'Приращения для заданияB');{вывод в фаил надписи «Приращения для задания B»}

          Writeln('Po oci X');{вывод на экраннадписи «По оси X»}

          Writeln(t2,'По оси X');{вывод в фаилнадписи «По оси X»}

          Writeln(Dx1:6:2);{вывод значения для X наэкран}

         Writeln(t2,Dx1:6:2);{вывод значения для X вфаил}

         Writeln('Po oci Y');{вывод на экран надписи«По оси Y»}

         Writeln(t2,'По оси Y');{вывод в фаилнадписи «По оси Y»}

         Writeln(Dy1:6:2);{вывод значения для Y наэкран}

         Writeln(t2,Dy1:6:2);{вывод значения для Y вфаил}

 End;

 Begin

{нахождение величины румба}

R:=arctan(abs(Dy/Dx));

R1:=arctan(abs(Dy1/Dx1));

{проведение контроля полученного значения}

 Writeln('RYMB zadaniya A');{вывод на экран надписи«Румб для задания А»}

 Writeln(t2,'Румб для задания А');{вывод в фаилнадписи «Румб для задания А»}

 Writeln(R:6:6);{вывод значения на экран}

 Writeln(t2,R:6:6);{вывод значения в фаил}

 Writeln('RYMB zadaniya B');{вывод на экран надписи«Румб для задания B»}

 Writeln(t2,'Румб для задания А');{вывод в фаилнадписи «Румб для задания B»}

 Writeln(R1:6:6);{вывод значения на экран}

 Writeln(t2,R1:6:6);{вывод значения в фаил}

 End;

 Begin

{определение значения дирекционного угла и четверти}

 Writeln('Direkcionniiygol i chetvert dly A');

 Writeln(t2,'Дирекционныйугол и четверть для задания А:');

Analiz (Dx,Dy,R,Alfa);

 Writeln('Direkcionnii ygol i chetvertdly B');

 Writeln(t2,'Дирекционныйугол и четверть для задания B:');

Analiz (Dx1,Dy1,R1,Alfa1);

 End;

 Begin

{ВЫчисление горизонтального расстояния междуточками}

S:=sqrt((Sqr(Dx)+sqr(Dy)));

S1:=sqrt((Sqr(Dx1)+sqr(Dy1)));

{выводполученногозначения}

 Writeln('Gorizontalnoe Rasstoyaniemezdy tochkami Ravno(dly A):');

 Writeln(t2,'Горизонтальноерасстояние между точками равно(для задания А):');

 Writeln(S:6:2);

 Writeln(t2,S:6:2);

 Writeln('Gorizontalnoe Rasstoyaniemezdy tochkami Ravno(dly B):');

 Writeln(t2,'Горизонтальноерасстояние между точками равно(для задания B):');

 Writeln(S1:6:2);

 Writeln(t2,S1:6:2);

 End;

 Begin

{перевод дирекционного угла в градусную меру}

Gradyc (Alfa,AlfaGr,AlfaMi,AlfaS);

Gradyc (Alfa1,AlfaGr1,AlfaMi1,AlfaS1);

                            {выводполученногодирекционногоугла}

                            Writeln('Direkcionniiygol raven(dly A):');

                            Writeln(t2,'Дирекционныйугол равен(для задания А):');

                            Writeln(AlfaGr:6:0,'gradycov',AlfaMi:6:0,' minyt',AlfaS:6:0,' sekynd');

                            Writeln(t2,AlfaGr:6:0,'градусов',AlfaMi:6:0,'минут',AlfaS:6:0,'секунд');

                            Writeln('Direkcionniiygol raven(dly B):');

                            Writeln(t2,'Дирекционныйугол равен(для задания B):');

                            Writeln(AlfaGr1:6:0,'gradycov',AlfaMi1:6:0,' minyt',AlfaS1:6:0,' sekynd');

                            Writeln(t2,AlfaGr1:6:0,'градусов',AlfaMi1:6:0,'минут',AlfaS1:6:0,'секунд');

 End;

Writeln('chtenie iz faila«dano.txt», zapis v «rezultat.txt»');

Close (t1);

Close (t2);

Readkey;

End.

/>/>/> 

1.6 Содержание фаила «dano.txt»

Задание А:

Точка 1.

Координата по оси X:

5119.94

Координата по оси Y:

6157.33

Точка 2.

Координата по оси X:

7182.27

Координата по оси Y:

4976.39

Задание B:

Точка 1.

Координата по оси X:

10932.84

Координата по оси Y:

6112.26

Точка 2.

Координата по оси X:

9115.24

Координата по оси Y:

4903.68


/>/>/>/>/>/>1.7 Результаты программы

/>

Рис.1.3Результаты в Turbo Pascal.

/>/>/>/>/> 

Содержание фаила«rezultat.txt»:

Приращения для задания А

По оси X

2062.33

По оси Y

-1180.94

Приращения для задания B

По оси X

-1817.60

По оси Y

-1208.58

Румб для задания А

0.520047

Румб для задания А

0.586801

Дирекционный угол и четверть для задания А:

IV четверть

Дирекционный угол равен(в радианах):

 5.763

Дирекционный угол и четверть для задания B:

III четверть

Дирекционный угол равен(в радианах):

 3.728

Горизонтальное расстояние между точками равно(длязадания А):

2376.52

Горизонтальное расстояние между точками равно(длязадания B):

2182.74

Дирекционный угол равен(для задания А):

 330 градусов 12 минут 12 секунд

Дирекционный угол равен(для задания B):

 213 градусов 37 минут 16 секунд

1.8 Табличные вычисления MS Excel

/>

/>/>Рис.1.4Проверка в MS Excel.


/>/>

/>

Рис.1.5 Проверка в MS Excel в режиме отображения формул.


1.9Вычисления в MathCad

/>

Рис.1.6 Проверка в MathCad 14.

1.10 Анализ

Таким образом, обратная геодезическая задача была решена с помощьюязыка программирования Turbo Pascal и затембыла проверена с помощью табличного процессора Microsoft Excel 2007 и MathCad14.Результаты решений совпали, что говорит о правильности выбранного алгоритмарешения задачи.


2.Прямая угловая засечка

/>/>/>/>/>/> 

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

Прямая угловая (геодезическая) засечка — такоеназвание носит способ определения координат точки местности Р, если наплоскости дана система точек геодезической сети с известными координатами /> и на этихточках измерены горизонтальные углы /> (рис.2.1.).

/>/>/>/> />/> Р P

 /> 

/>/>/>/> /> /> /> 

/>/>/>/> /> /> /> /> /> 

/> /> /> 

 /> 

Рис. 2.1. Схемыпрямой геодезической засечки.

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

Дляопределения координат точки Р можно использовать формулы Юнга илиформулы Гаусса. Чаще используются формулы Юнга, которые еще называют формуламикотангенсов внутренних углов треугольника.

/> (2.1)

/> (2.2)


Широкоиспользуются и формулы Гаусса. В этом случае исходными данными являются нетолько координаты пунктов А1 и А2 иизмеренные горизонтальные углы , но и вычисленный дирекционный угол стороны А1 А2.

/> (2.3)

/> (2.4)

Если пунктовгеодезической сети более двух (рис.2.1б), то исходные данные являютсяизбыточными, т.к. для определения искомых координат точки Р достаточнознать координаты и углы двух точек одного треугольника. Но в инструкции повыполнению геодезических работ требуют, чтобы координаты точки Р определялиськак минимум из двух треугольников.

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

/> (2.5)

/>, (2.6)

где XP<sub/>k ,<sub/>YP<sub/>k координаты, определенные из k-того треугольника.

/>/>/>/>/>/>2.2. Постановка задачи

Определить координаты точки P по трем точкам с известными координатами и 4 углам. (2треугольникам)

/>/>/>/>/>/>2.3 Исходные данные

 

Табл. 2.1

№ пп X, м Y, м B1, DDD MM SS B2, DDD MM SS 11 5935.51 5441.24 98 4 30 22 5687.41 5172.76 63 0 12 41 54 46 33 5142.93 5460.08 54 19 48

/> 

/>/>/> 


2.4.Алгоритм для Turbo Pascal

/>/>/>/>/>/>/>/>/>/>/>

 

/>/>/> 

/> /> /> /> /> /> /> />

RB1P1:=(((Pi)/180)*(GB1P1+(MB1P1/60)+(SB1P1/3600)));

RB1P2:=(((Pi)/180)*(GB1P2+(MB1P2/60)+(SB1P2/3600)));

RB2P2:=(((Pi)/180)*(GB2P2+(MB2P2/60)+(SB2P2/3600)));

RB2P3:=(((Pi)/180)*(GB2P3+(MB2P3/60)+(SB2P3/3600)))

  /> /> />

xP12:=x1+(((y2-y1)*sin(RB2P2))/(sin(Alfa12)*sin(RB1P1+RB2P2)))*cos(Alfa12-RB1P1);

yP12:=y1+(((y2-y1)*sin(RB2P2))/(sin(Alfa12)*sin(RB1P1+RB2P2)))*sin(Alfa12-RB1P1);

xP23:=x2+(((y3-y2)*sin(RB2P3))/(sin(Alfa23)*sin(RB1P2+RB2P3)))*cos(Alfa23-RB1P2);

yP23:=y2+(((y3-y2)*sin(RB2P3))/(sin(Alfa23)*sin(RB1P2+RB2P3)))*sin(Alfa23-RB1P2);

  /> /> />

*процедура дляопределения приращений

**процедура длянахождения румбов

***процедура дляопределение значения дирекционного угла и четверти

****процедура дляперевода из радиан в градусы

/> /> /> /> /> /> /> /> <td/>

Рис. 2.2

 

2.5 Текст программы

Program Zadacha2;

Uses CRT;

Var

GB1P1,MB1P1,SB1P1,GB1P2,MB1P2,SB1P2,GB2P2,MB2P2,SB2P2,GB2P3,MB2P3,SB2P3:integer;

x1,y1,x2,y2,x3,y3:real;

Dx12,Dy12,Dx23,Dy23,R12,R23,Alfa12,Alfa23:real;

AlfaG12,AlfaGr12,AlfaG23,AlfaGr23,AlfaM12,AlfaMi12,AlfaM23,AlfaMi23,AlfaS23,AlfaS12:real;

RB1P1,RB1P2,RB2P2,RB2P3,xP12,yP12,xP23,yP23,SRx,SRy:real;

t1,t2:text;

{процедура для определения приращений}

procedure Prir (var k1:real; vark2:real; var Dd:real);

 begin

 Dd:=k2-k1;

 end;

{процедура для перевода в грудусы}

procedure Gradyc (varA,AGr,AMi,AS:real);

 Var

 AG,AM:real;

 begin

 AG:=180*(A/Pi);

AGr:=int(AG);

 AM:=60*(AG-AGr);

AMi:=int(AM);

 AS:=int(60*(AM-AMi));

 end;

{процедура для нахождения румбов}

procedure Rymb (var X,Y,R:real);

 begin

 R:=arctan(abs(Y/X));

 end;

{процедура для определение значения дирекционногоугла и четверти}

procedure Analiz (var X,Y,R,A:real);

 begin

 If (X>0) and (Y>0) Then

          Begin

A:=R;

         Writeln('I chetvert');

         Writeln(t2,'I четверть');

         Writeln('Direkcionnii ygolraven(v radianax):');

         Writeln(t2,'Дирекционныйугол равен(в радианах):');

         Writeln(A:6:3);

         Writeln(t2,A:6:3);

          End;

 If (X<0) and (Y>0) Then

          Begin

 A:=(Pi)-R;

          Writeln('II chetvert');

          Writeln(t2,'II четверть');

          Writeln('Direkcionnii ygolraven(v radianax):');

          Writeln(t2,'Дирекционныйугол равен(в радианах):');

          Writeln(A:6:3);

          Writeln(t2,A:6:3);

          End;

 If (X<0) and (Y<0) Then

          Begin

 A:=(Pi)+R;

          Writeln('III chetvert');

          Writeln(t2,'III четверть');

          Writeln('Direkcionnii ygolraven(v radianax):');

          Writeln(t2,'Дирекционныйугол равен(в радианах):');

          Writeln(A:6:3);

          Writeln(t2,A:6:3);

          End;

 If (X>0) and (Y<0) Then

          Begin

 A:=(2*(Pi)-R);

          Writeln('IV chetvert');

          Writeln(t2,'IV четверть');

          Writeln('Direkcionnii ygolraven(v radianax):');

          Writeln(t2,'Дирекционныйугол равен(в радианах):');

          Writeln(A:6:3);

          Writeln(t2,A:6:3);

          End;

 end;

Begin

ClrScr;

Assign (t1,'in.txt');

Assign (t2,'out.txt');

Reset (t1);

Rewrite (t2);

{чтение из фаила исходных значений}

         Readln(t1);

         Readln(t1);

         Readln(t1,x1);

         Readln(t1);

         Readln(t1,y1);

         Readln(t1);

         Readln(t1);

         Readln(t1,GB1P1);

         Readln(t1);

         Readln(t1,MB1P1);

         Readln(t1);

         Readln(t1,SB1P1);

         Readln(t1);

         Readln(t1);

         Readln(t1);

         Readln(t1,x2);

         Readln(t1);

         Readln(t1,y2);

         Readln(t1);

         Readln(t1);

         Readln(t1,GB1P2);

         Readln(t1);

         Readln(t1,MB1P2);

         Readln(t1);

         Readln(t1,SB1P2);

         Readln(t1);

         Readln(t1);

         Readln(t1,GB2P2);

         Readln(t1);

         Readln(t1,MB2P2);

         Readln(t1);

         Readln(t1,SB2P2);

         Readln(t1);

         Readln(t1);

         Readln(t1);

         Readln(t1,x3);

         Readln(t1);

         Readln(t1,y3);

         Readln(t1);

         Readln(t1);

         Readln(t1,GB2P3);

         Readln(t1);

         Readln(t1,MB2P3);

         Readln(t1);

         Readln(t1,SB2P3);

 Begin

{определение приращений координат}

Prir (y1,y2,Dy12);

Prir (x1,x2,Dx12);

Prir (y2,y3,Dy23);

Prir (x2,x3,Dx23);

{проведение контроля полученных значений}

         Writeln('Prirasheniya');{вывод на экраннадписи «Приращения»}

         Writeln(t2,'Приращения');{вывод в фаилнадписи «Приращения»}

         Writeln('Po oci X dly 1-2');{вывод на экраннадписи «По оси X»}

         Writeln(t2,'По оси X для 1-2');{вывод вфаил надписи «По оси X»}

         Writeln(Dx12:6:2);{вывод значения для X наэкран}

         Writeln(t2,Dx12:6:2);{вывод значения для Xв фаил}

         Writeln('Po oci Y dly 1-2');{вывод на экраннадписи «По оси Y»}

         Writeln(t2,'По оси Y для 1-2');{вывод вфаил надписи «По оси Y»}

         Writeln(Dy12:6:2);{вывод значения для Y наэкран}

         Writeln(t2,Dy12:6:2);{вывод значения для Yв фаил}

         Writeln('Po oci X dly 2-3');{вывод на экраннадписи «По оси X»}

         Writeln(t2,'По оси X для 2-3');{вывод вфаил надписи «По оси X»}

         Writeln(Dx23:6:2);{вывод значения для X наэкран}

         Writeln(t2,Dx23:6:2);{вывод значения для Xв фаил}

         Writeln('Po oci Y dly 2-3');{вывод на экраннадписи «По оси Y»}

         Writeln(t2,'По оси Y для 2-3');{вывод вфаил надписи «По оси Y»}

         Writeln(Dy23:6:2);{вывод значения для Y наэкран}

         Writeln(t2,Dy23:6:2);{вывод значения для Yв фаил}

 End;

 Begin

{нахождение величины румбов}

Rymb (Dx12,Dy12,R12);

Rymb (Dx23,Dy23,R23);

{проведение контроля полученных значений}

         Writeln('Rymb 1-2');{вывод на экран надписи«Румб»}

         Writeln(t2,'Румб 1-2');{вывод в фаилнадписи «Румб»}

         Writeln(R12:6:6);{вывод значения на экран}

         Writeln(t2,R12:6:6);{вывод значения в фаил}

         Writeln('Rymb 2-3');{вывод на экран надписи«Румб»}

         Writeln(t2,'Румб 2-3');{вывод в фаилнадписи «Румб»}

         Writeln(R23:6:6);{вывод значения на экран}

         Writeln(t2,R23:6:6);{вывод значения в фаил}

 End;

 Begin

         Writeln('Dly 1-2');

         Writeln(t2,'Для1-2');

         Analiz (Dx12,Dy12,R12,Alfa12);

          Writeln('Dly 2-3');

          Writeln(t2,'Для2-3');

          Analiz (Dx23,Dy23,R23,Alfa23);

 End;

 Begin

{перевод дирекционного угла в градусную меру}

Gradyc(Alfa12,AlfaGr12,AlfaMi12,AlfaS12);

Gradyc(Alfa23,AlfaGr23,AlfaMi23,AlfaS23);

                            {выводполученныхдирекционныхуглов}

                            Writeln('Direkcionniiygol 1-2 raven:');

                            Writeln(t2,'Дирекционныйугол 1-2 равен:');

                            Writeln(AlfaGr12:6:0,'gradycov',AlfaMi12:6:0,' minyt',AlfaS12:6:0,' sekynd');

                            Writeln(t2,AlfaGr12:6:0,'градусов',AlfaMi12:6:0,'минут',AlfaS12:6:0,'секунд');

Writeln('Direkcionnii ygol 2-3 raven:');

Writeln(t2,'Дирекционный угол 2-3 равен:');

Writeln(AlfaGr23:6:0,'gradycov',AlfaMi23:6:0,' minyt',AlfaS23:6:0,' sekynd');

Writeln(t2,AlfaGr23:6:0,' градусов',AlfaMi23:6:0,'минут',AlfaS23:6:0,'секунд');

 End;

Begin

{Координаты искомого пункта}

RB1P1:=(((Pi)/180)*(GB1P1+(MB1P1/60)+(SB1P1/3600)));

RB1P2:=(((Pi)/180)*(GB1P2+(MB1P2/60)+(SB1P2/3600)));

RB2P2:=(((Pi)/180)*(GB2P2+(MB2P2/60)+(SB2P2/3600)));

RB2P3:=(((Pi)/180)*(GB2P3+(MB2P3/60)+(SB2P3/3600)));

xP12:=x1+(((y2-y1)*sin(RB2P2))/(sin(Alfa12)*sin(RB1P1+RB2P2)))*cos(Alfa12-RB1P1);

yP12:=y1+(((y2-y1)*sin(RB2P2))/(sin(Alfa12)*sin(RB1P1+RB2P2)))*sin(Alfa12-RB1P1);

xP23:=x2+(((y3-y2)*sin(RB2P3))/(sin(Alfa23)*sin(RB1P2+RB2P3)))*cos(Alfa23-RB1P2);

yP23:=y2+(((y3-y2)*sin(RB2P3))/(sin(Alfa23)*sin(RB1P2+RB2P3)))*sin(Alfa23-RB1P2);

                            Writeln('koordinatyiskomogo pynkta');

                            Writeln(t2,'Координатыискомогопункта');

                            Writeln('x1-2=');

                            Writeln(t2,'x1-2=');

                            Writeln(xP12:6:2);

                            Writeln(t2,xP12:6:2);

                            Writeln('y1-2=');

                            Writeln(t2,'y1-2=');

                            Writeln(yP12:6:2);

                            Writeln(t2,yP12:6:2);

         Writeln('x2-3=');

                            Writeln(t2,'x2-3=');

                            Writeln(xP23:6:2);

                            Writeln(t2,xP23:6:2);

                            Writeln('y2-3=');

                            Writeln(t2,'y2-3=');

                            Writeln(yP23:6:2);

                            Writeln(t2,yP23:6:2);

srX:=(xP12+xP23)/2;

srY:=(yP12+yP23)/2;

                            Writeln('SredneeX');

                            Writeln(t2,'СреднееX');

                            Writeln(srX:6:2);

                            Writeln(t2,srX:6:2);

                            Writeln('SredneeY');

                            Writeln(t2,'СреднееY');

                            Writeln(srY:6:2);

                            Writeln(t2,srY:6:2);

Writeln('chtenie iz faila«in.txt», zapic v «out.txt»');

End;

Close (t1);

Close (t2);

Readkey;

End.

2.6. Содержание фаила «in.txt»

Пункт №1:

Координата X:

5935.51

Координата Y:

5441.24

Горизонтальный угол B1:

Градусы

98

Минуты

4

Секунды

30

-------------------------------

Пункт №2:

Координата X:

5687.41

Координата Y:

5172.76

Горизонтальный угол B1:

Градусы

63

Минуты

Секунды

12

Горизонтальный угол B2:

Градусы

41

Минуты

54

Секунды

46

-------------------------------

Пункт №3:

Координата X:

5142.93

Координата Y:

5460.08

Горизонтальный угол B2:

Градусы

54

Минуты

19

Секунды

48

-------------------------------

/>/>/>/>/>/>2.7Результаты программы

/>/>/>

Рис.2.3 Результаты в Turbo Pascal.

Содержаниефаила «rezultat.txt»

Приращения

По оси X для 1-2

-248.10

По оси Y для 1-2

-268.48

По оси X для 2-3

-544.48

По оси Y для 2-3

287.32

Румб 1-2

0.824829

Румб 2-3

0.485558

Для 1-2

III четверть

Дирекционный угол равен(в радианах):

 3.966

Для 2-3

II четверть

Дирекционный угол равен(в радианах):

 2.656

Дирекционный угол 1-2 равен:

 227 градусов 15 минут 33 секунд

Дирекционный угол 2-3 равен:

 152 градусов 10 минут 46 секунд

Координаты искомого пункта

x1-2=

5695.54

y1-2=

5735.63

x2-3=

5695.50

y2-3=

5735.70

Среднее X

5695.52

Среднее Y

5735.67


/>/>/>/>2.8Табличные вычисления в MS Excel

/>

Рис.2.4 Проверка в MS Excel.

/>

/>


/>

Рис. 2.5 Проверка в MS Excel в режимеотображения формул.


2.9Вычисления в MathCad

/>

Рис.2.6 Проверка в MathCad 14.


/>/>/>/>/>/>2.10 Анализ

Таким образом, задача №2 (прямая угловая засечка) была решенас помощью языка программирования Turbo Pascal и затембыла проверена с помощью табличного процессора Microsoft Excel 2007 и MathCad14. Результаты решений совпали, что говорит о правильности выбранного алгоритмарешения задачи.


/>/>/>/>/>/>3.Обратная геодезическая засечка

/>/>/>/>/>/> 

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

На плоскости задана система точек /> с известными координатами (xi, yi ). При использовании обратнойгеодезической засечки теодолит располагают непосредственно на точке Р ,координаты которой требуется определить. На точки с известными координатами (ихдолжно быть не менее трех) устанавливают визирные цели, после чего измеряютгоризонтальные углы  (рис.3.1).

/> P

 

 

 A1

 A2 

 A3

 Рис. 3.1. Схема обратнойгеодезической засечки

/>/>/>/>/> 

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

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

Дляопределения координат вставляемой точки предварительно определяемвспомогательные величины nи m.

/> (3.1)

/> (3.2)

Далее находимуглы /> иопределяем координаты вставляемой точки.

/> (3.3)

/> (3.4)

 

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

Обратная геодезическая засечка. Требуется определитькоординаты точки P по трем точкам сизвестными координатами и двум известным углам (каждый угол – угол между 2соседними точками с вершиной в точке P).

/>/>/>/>/> 

3.3 Исходные данные

 

Табл. 3.1.

Исходные данные

Пункты Направления X Y Хутор 0 0 0 12480.95 10219.13 Крутик 100 32 56 10241.98 12270.54 Юрьево 192 56 33 8586.56 10552.15 Локно 266 31 50 9655.10 8220.95

/>/>/>/>/>/>3.4. Алгоритм для Turbo Pascal

/>
/>/>/>/>/>/>3.5 Текст программы

ProgramZadacha3;

UsesCRT;

Var

g1,m1,s1,g2,m2,s2,g3,m3,s3,g4,m4,s4:integer;

x1,y1,x2,y2,x3,y3,x4,y4,vm1,vn1,vm2,vn2:real;

ra1,ra2,ra3,ra4,yg21,yg32,yg43,ct21,ct32,ct43:real;

Fi1,Fi2,Fi3,Fi4,De1,De2,De3,De4:real;

kipX1,kipX2,CredX,kipY1,kipY2,CredY:real;

t1,t2:text;

Begin

ClrScr;

Assign (t1,'data.txt');

Assign (t2,'result.txt');

Reset (t1);

Rewrite (t2);

{чтение из фаила исходных значений}

         Readln(t1);

         Readln(t1);

         Readln(t1,g1,m1,s1);

         Readln(t1);

         Readln(t1,x1);

         Readln(t1);

         Readln(t1,y1);

         Readln(t1);

         Readln(t1);

         Readln(t1,g2,m2,s2);

         Readln(t1);

         Readln(t1,x2);

         Readln(t1);

         Readln(t1,y2);

         Readln(t1);

         Readln(t1);

         Readln(t1,g3,m3,s3);

         Readln(t1);

         Readln(t1,x3);

         Readln(t1);

         Readln(t1,y3);

         Readln(t1);

         Readln(t1);

         Readln(t1,g4,m4,s4);

         Readln(t1);

         Readln(t1,x4);

         Readln(t1);

         Readln(t1,y4);

Writeln(t2,'Дано:');

Writeln(t2,'Пункт№1');

Writeln(t2,'Направление: ',g1,' градусов ',m1,'минут ',s1,' секунд;');

Writeln(t2,'X=',x1:6:2,'; Y=',y1:6:2,';');

Writeln(t2,'Пункт№2');

Writeln(t2,'Направление:',g2,' градусов',m2,' минут ',s2,' секунд;');

Writeln(t2,'X=',x2:6:2,'; Y=',y2:6:2,';');

Writeln(t2,'Пункт№3');

Writeln(t2,'Направление:',g3,' градусов',m3,' минут ',s3,' секунд;');

Writeln(t2,'X=',x3:6:2,' Y=',y3:6:2,';');

Writeln(t2,'Пункт№4');

Writeln(t2,'Направление:',g4,' градусов',m4,' минут ',s4,' секунд;');

Writeln(t2,'X=',x4:6:2,'; Y=',y4:6:2,'.');

Writeln('Dano:');

Writeln('Pynkt #1');

Writeln('Hapravlenie: ',g1,' gradysov ',m1,'minyt ',s1,' sekynd;');

Writeln('X=',x1:6:2,'; Y=',y1:6:2,';');

Writeln('Pynkt #2');

Writeln('Hapravlenie: ',g2,' gradysov ',m2,'minyt ',s2,' sekynd;');

Writeln('X=',x2:6:2,'; Y=',y2:6:2,';');

Writeln('Pynkt #3');

Writeln('Hapravlenie: ',g3,' gradysov ',m3,'minyt ',s3,' sekynd;');

Writeln('X=',x3:6:2,' Y=',y3:6:2,';');

Writeln('Pynkt #4');

Writeln('Hapravlenie: ',g4,' gradysov ',m4,'minyt ',s4,' sekynd;');

Writeln('X=',x4:6:2,'; Y=',y4:6:2,' .');

Begin

{Данные в радианах}

ra1:=((Pi)/180)*(g1+(m1/60)+(s1/3600));

ra2:=((Pi)/180)*(g2+(m2/60)+(s2/3600));

ra3:=((Pi)/180)*(g3+(m3/60)+(s3/3600));

ra4:=((Pi)/180)*(g4+(m4/60)+(s4/3600));

End;

Writeln(t2); Writeln(t2); Writeln(t2);Writeln(t2,'Решение:');Writeln(t2);

Writeln(t2,'Направление 1 в радианах:',ra1:6:2,';');

Writeln(t2,'Направление 2 в радианах:',ra2:6:2,';');

Writeln(t2,'Направление 3 в радианах:',ra3:6:2,';');

Writeln(t2,'Направление 4 в радианах:',ra4:6:2,'.');

Writeln; Writeln('Reshenie:'); Writeln;

Writeln('Napravlenie 1 vradianax:',ra1:6:2,';');

Writeln('Napravlenie 2 vradianax:',ra2:6:2,';');

Writeln('Napravlenie 3 vradianax:',ra3:6:2,';');

Writeln('Napravlenie 4 vradianax:',ra4:6:2,' .');

Begin

{Углы}

yg21:=ra2-ra1;

yg32:=ra3-ra2;

yg43:=ra4-ra3;

End;

Writeln(t2);

Writeln(t2,'Угол2-1 (врадианах)=',yg21:6:2,';');

Writeln(t2,'Угол 3-2 (в радианах)=',yg32:6:2,';');

Writeln(t2,'Угол 4-3 (в радианах)=',yg43:6:2,' .');

Writeln;

Writeln('Ygol 2-1 (vradianax)=',yg21:6:2,';');

Writeln('Ygol 3-2 (vradianax)=',yg32:6:2,';');

Writeln('Ygol 4-3 (v radianax)=',yg43:6:2,'.');

Begin

{Котангенсыуглов}

ct21:=(cos(yg21)/sin(yg21));

ct32:=(cos(yg32)/sin(yg32));

ct43:=(cos(yg43)/sin(yg43));

End;

Writeln(t2);

Writeln(t2,'Котангенсугла2-1 =',ct21:6:2,';');

Writeln(t2,'Котангенсугла3-2 =',ct32:6:2,';');

Writeln(t2,'Котангенсугла4-3 =',ct43:6:2,' .');

Writeln;

Writeln('Kotangens ygla 2-1=',ct21:6:2,';');

Writeln('Kotangens ygla 3-2=',ct32:6:2,';');

Writeln('Kotangens ygla 4-3=',ct43:6:2,' .');

 Begin

{Вспомогательные величины}

vm1:=y1*ct21+y2*(-(ct21)-(ct32))+y3*ct32+x1-x3;

vm2:=y2*ct32+y3*(-(ct32)-(ct43))+y4*ct43+x2-x4;

vn1:=x1*ct21+x2*(-(ct21)-(ct32))+x3*ct32-y1+y3;

vn2:=x2*ct32+x3*(-(ct32)-(ct43))+x4*ct43-y2+y4;

End;

Writeln(t2);

Writeln(t2,'Вспомогательная величина m1 =',vm1:6:2,';');

Writeln(t2,'Вспомогательная величина n1 =',vn1:6:2,';');

Writeln(t2,'Вспомогательная величина m2 =',vm2:6:2,';');

Writeln(t2,'Вспомогательная величина n2 =',vn2:6:2,' .');

Writeln;

Writeln('Vspomogatelnaya velichina m1 =',vm1:6:2,';');

Writeln('Vspomogatelnaya velichina n1 =',vn1:6:2,';');

Writeln('Vspomogatelnaya velichina m2 =',vm2:6:2,';');

Writeln('Vspomogatelnaya velichina n2 =',vn2:6:2,' .');

Begin

{Фиидельта}

Fi1:=arctan(vm1/vn1);

Fi2:=(sin(Fi1)/cos(Fi1));

Fi3:=arctan(vm2/vn2);

Fi4:=(sin(Fi3)/cos(Fi3));

De1:=Fi1-yg21;

De2:=(sin(De1)/cos(De1));

De3:=Fi3-yg32;

De4:=(sin(De3)/cos(De3));

End;

Writeln(t2);

Writeln(t2,'Фи1 = ',Fi1:6:2,'; Делта1 = ',De1:6:2,';');

Writeln(t2,'Фи2 = ',Fi2:6:2,'; Делта2 = ',De2:6:2,';');

Writeln(t2,'Фи3 = ',Fi3:6:2,'; Делта3 = ',De3:6:2,';');

Writeln(t2,'Фи4 = ',Fi4:6:2,'; Делта4 = ',De4:6:2,' .');

Writeln;

Writeln('Fi 1 = ',Fi1:6:2,'; Delta 1 =',De1:6:2,';');

Writeln('Fi 2 = ',Fi2:6:2,'; Delta 2 =',De2:6:2,';');

Writeln('Fi 3 = ',Fi3:6:2,'; Delta 3 =',De3:6:2,';');

Writeln('Fi 4 = ',Fi4:6:2,'; Delta 4 =',De4:6:2,' .');

Begin

{Координатыискомогопункта}

kipX1:=(x1*De2-x2*Fi2+y2-y1)/(De2-Fi2);

kipX2:=(x2*De4-x3*Fi4+y3-y2)/(De4-Fi4);

{Среднее для X}

CredX:=(kipX1+kipX2)/2;

kipY1:=(kipX1-x2)*Fi2+y2;

kipY2:=(kipX2-x3)*Fi4+y3;

{СреднеедляY}

CredY:=(kipY1+kipY2)/2;

End;

Writeln(t2);

Writeln(t2,'КоординатаX искомогопункта1: ',kipX1:6:2,';');

Writeln(t2,'Координата X искомого пункта 2:',kipX2:6:2,';');

Writeln(t2,' Среднее значение X: ',CredX:6:2,';');

Writeln(t2,'Координата Y искомого пункта 1:',kipY1:6:2,';');

Writeln(t2,'Координата Y искомого пункта 2: ',kipY2:6:2,';');

Writeln(t2,' Среднее значение Y: ',CredY:6:2,' .');

Writeln;

Writeln('Koordinata X ickomogo pynkta 1:',kipX1:6:2,';');

Writeln('Koordinata X ickomogo pynkta 2:',kipX2:6:2,';');

Writeln(' Srednee znachenie X:',CredX:6:2,';');

Writeln('Koordinata Y ickomogo pynkta 1:',kipY1:6:2,';');

Writeln('Koordinata Y ickomogo pynkta 2:',kipY2:6:2,';');

Writeln(' Srednee znachenie Y:',CredY:6:2,' .');

Writeln('chtenie iz faila«data.txt», zapic v «result.txt»');

Close (t1);

Close (t2);

Readkey;

End.

3.6 Содержание фаила «data.txt»

Пункт #1(Хутор)

Направление({Градусы}пробел{Минуты}пробел{Секунды}):

0 0 0

Координата X:

10798.58

Координата Y:

12689.72

Пункт #2(Крутик)

Направление({Градусы}пробел{Минуты}пробел{Секунды}):

73 15 40

Координата X:

8921.43

Координата Y:

11123.49

Пункт #3(Юрьево)

Направление({Градусы}пробел{Минуты}пробел{Секунды}):

180 17 23

Координата X:

9787.11

Координата Y:

8585.19

Пункт #4(Локно)

Направление({Градусы}пробел{Минуты}пробел{Секунды}):

282 28 14

Координата X:

12484.41

Координата Y:

10294.53

-----------------------------------------------------

 

3.7 Результат программы

/>/>/>/>/> 

/>

Рис.3.3Результаты в Turbo Pascal.

Содержаниефаила «result.txt»

Дано:

Пункт №1

Направление: 0 градусов 0 минут 0 секунд;

X=10798.58; Y=12689.72;

Пункт №2

Направление: 73 градусов 15 минут 40 секунд;

X=8921.43; Y=11123.49;

Пункт №3

Направление: 180 градусов 17 минут 23 секунд;

X=9787.11 Y=8585.19;

Пункт №4

Направление: 282 градусов 28 минут 14 секунд;

X=12484.41; Y=10294.53 .

Решение:

Направление 1 в радианах: 0.00;

Направление 2 в радианах: 1.28;

Направление 3 в радианах: 3.15;

Направление 4 в радианах: 4.93 .

Угол 2-1 (в радианах)= 1.28;

Угол 3-2 (в радианах)= 1.87;

Угол 4-3 (в радианах)= 1.78 .

Котангенс угла 2-1 = 0.30;

Котангенс угла 3-2 = -0.31;

Котангенс угла 4-3 = -0.22 .

Вспомогательная величина m1 = 2259.94;

Вспомогательная величина n1 = -3805.11;

Вспомогательная величина m2 = -4709.38;

Вспомогательная величина n2 = -1146.05 .

Фи 1 = -0.54; Делта 1 = -1.81;

Фи 2 = -0.59; Делта 2 = 4.02;

Фи 3 = 1.33; Делта 3 = -0.54;

Фи 4 = 4.11; Делта 4 = -0.59 .


Координата X искомого пункта 1: 10217.52;

Координата X искомого пункта 2: 10217.50;

 Среднее значение X: 10217.51;

Координата Y искомого пункта 1: 10353.71;

Координата Y искомого пункта 2: 10353.76;

 Среднее значение Y: 10353.73 .

/>/>/>/>/>/> 

3.8 Табличные вычисления MS Excel

 

/>

Рис.3.4 Проверка в MS Excel.

/> />

Рис. 3.5 Проверка в MS Excel в режиме отображения формул.


/>/>/>/>/>/>3.9Вычисления в MathCad

/>

Рис.3.6 Проверка в MathCad 14.


3.10 Анализ

Задачу №3 (обратная геодезическая засечка) была решенас помощью языка программирования Turbo Pascal и проверенас помощью табличного процессора Microsoft Excel 2007 и MathCad. Результатырешений совпали, что говорит о правильности выбранного алгоритма решениязадачи.


/>/>/>/>/>/>4. Решение СЛАУ методом Гаусса

/>/>/>/>/>/> 

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

Рассмотрим один из наиболее известных и широкоприменяемых прямых методов решения систем линейных уравнений. Обычно этот методназывают методом исключения или методом Гаусса.

Чтобы проиллюстрировать этот метод, рассмотрим сначаласистему из трех уравнений с тремя неизвестными:

/>                                                       (4.1)

В такой системе по крайней мере один из коэффициентов />,/>,/>должен быть отличен отнуля, иначе бы мы имели бы дело в этих трех уравнениях только с двумянеизвестными. Если />, то можно переставить уравнениятак, чтобы коэффициент при />в первом уравнении был отличен отнуля. Очевидно, что перестановка уравнений оставляет систему неизменной: еерешение остается прежним.

Теперь введем множитель />.

Умножим первое уравнение системы (4.1) на /> и вычтем егоиз второго уравнения системы. («Первое» и «второе» уравнения берем уже послеперестановки, если она была необходима). Результат вычитания равен:

/>

Так как


/>,

/>фактически исключается из второгоуравнения (именно для достижения такого результата и было выбрано значение />).

Определим теперь новые коэффициенты

/>

/>

/>.

Тогда второе уравнение системы приобретает вид

/>                                                                   (4.2)

Заменим второе из первоначальных уравнений уравнением (4.2)и введем множитель для третьего уравнения

/>.

Умножим первое уравнение на этот множитель и вычтемего из третьего. Коэффициент при />снова становится нулевым, итретье уравнение приобретает вид

/>                                                                       (4.3)

где


/>

/>

/>.

Если теперь в исходной системе уравнений (4.1)заменить третье уравнение на (4.3), то новая система выглядит так:

/>                                                    (4.4)

Эти новые уравнения полностью эквивалентны исходнымуравнениям с тем преимуществом, что />входит только в первое уравнение ине входит ни во второе, ни в третье. Таким образом, два последних уравненияпредставляют собой систему из двух уравнений с двумя неизвестными; если теперьнайти решение этой системы, т.е. определить /> и />, то результат можно подставить впервое уравнение и найти />. Иначе говоря, задача сведена крешению системы из двух уравнений с двумя неизвестными.

Попытаемся теперь исключить /> из двух последних уравнений. Если/>, то снова мыпереставим уравнения так, чтобы /> было отлично от нуля (если />и />, то системавырождена и либо вовсе не имеет решения, либо имеет бесчисленное множестворешений).

Введем новый множитель

/>.

Умножим второе уравнение полученной системы (4.4) на /> и вычтем егоиз третьего. Результат вычитания равен

/>

В силу выбора/>

/>.

Полагая, что

/>

окончательно получим

/>                                                                               (4.5)

Третье уравнение полученной системы (4.4) можнозаменить уравнением (4.5), после чего система уравнений приобретает следующийвид:

/>                                               (4.6)

Такая система уравнений (4.6) иногда называется треугольнойиз-за своего внешнего вида.

Для решения необходимо определить />из третьего уравнениясистемы (4.6), подставить этот результат во второе уравнение и определить/>. Полученныезначения />и/>подставить впервое уравнение и определить/>. Этот процесс, который обычноназывается обратной подстановкой (обратный ход), определяется формулами:

/>

/>                                                                        (4.7)

/>.

Необходимо отметить, если />, то система уравнений вырождена.

Теперь можно обобщить этот метод на случай системы из n – уравнений с n-неизвестными. Ниже записана системауравнений, приведенная к треугольному виду (4.8).

/>                                     (4.8)

Формулы для вычисления неизвестных (обратный ход)будут иметь вид:

/>                                                                   (4.9)


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

Решение системы линейных алгебраических уравнений методомГаусса.

/>/>/>/>/>/>/>/>/> 

4.3 Исходные данные

/>

/>/>/>/>/>/>/> 

4.4 Блок-схема алгоритма

/> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> <td/> /> /> /> /> /> /> />

Рис. 4.1

 

/>/>/>/>/>

/>/>/>/>


Процедура длярешения СЛАУ методом Гаусса

4.5 Текст программы

/>/>/>/>/>/>/>/>/> 

Program Zadacha6;

Uses CRT;

Type matrix=array [1..10,1..10] of real;

vector=array [1..10] of real;

Var

i,j:integer;

a:matrix;

x,b:vector;

t1,t:text;

Procedure Gaus (Var a:matrix; Varb:vector; x:vector);

Var k,i,j,q:integer;

d:real;

t:text;

         Begin

 For i:=1 to 4 do

a[i,5]:=B[i];

Assign(t,'reshenie.txt');

Rewrite(t);

Writeln('Reshenie sistemu lineinixalgebraicheskix yravnenii');

Writeln('(kolichestvo yravnenii 4)');

Writeln('sistema yravnenii:');

Writeln(t,'Решениесистемылинейныхалгебраическихуравнений');

Writeln(t,'(количество уравнений 4)');

Writeln(t,'Система уравнений:');

For i:=1 to 4 do

 Begin

For j:=1 to 4 do

Write(t,a[i,j]:6:1);

Writeln(t,b[i]:6:1);

End;

For i:=1 to 4 do

 Begin

For j:=1 to 4 do

Write(a[i,j]:6:1);

Writeln(b[i]:6:1);

 End;

For i:=1 to 4 do Begin

d:=a[i,i];{Поискмаксимума в столбце}

q:=i;

For j:=i to 4 do

If abs(a[j,i])>abs(d) then

 Begin

D:=a[j,i];

q:=j;

 End;

{Обменстрок}

If i<>q Then

         Begin

For j:=i to 5 do

 Begin

D:=a[i,j];

a[i,j]:=a[q,j];

a[q,j]:=d;

 End;

         End;

{Созданиестроки}

For j:=5 downto i do

a[i,j]:=a[i,j]/a[i,i];

{занулениестолбцов,вычислениеА}

For k:=i+1 to 4 do

For j:=5 downto i do

a[k,j]:=a[k,j]-a[i,j]*a[k,i];

End;{Обратный ход}

x[4]:=a[4,5];

For i:=4-1 downto 1 do begin

D:=0;

For j:=4 downto i+1 do

d:=d+a[i,j]*x[j];

x[i]:=a[i,5]-d;

end;

Writeln(t,'ВекторХ:');

Writeln('Vector X:');

For i:=1 to 4 do

Write(t, x[i]:5:3,' ');

Writeln(t);

close(t);

Begin

For i:=1 to 4 do

Write(x[i]:5:3,' ');

Writeln;

End;

 End;

Begin

Clrscr;

assign(t1,'clay.txt');

reset(t1);

For i:=1 to 4 do

For j:=1 to 4 do

Read(t1,a[i,j]);

For i:=1 to 4 do read(t1,b[i]);

Gaus(a,b,x);

Readkey; End.

 


4.6 Содержание фаила «clay.txt»

1 -2 2 0

0 2 5 5

7 5 4 9

3 2 1 3

13 29 50 17

{Вводятся коэффициенты («а» 4х4)}

{Вводятся результаты уравнений («b» 1х4)}

 

4.7 Результаты решения

/>/>

Рис. 4.2 Результаты в Turbo Pascal.

Содержание фаила«reshenie.txt»

Решение системы линейных алгебраических уравнений

(количество уравнений 4)

Система уравнений:

 1.0 -2.0 2.0 0.0 13.0

 0.0 2.0 5.0 5.0 29.0

 7.0 5.0 4.0 9.0 50.0

 3.0 2.0 1.0 3.0 17.0

Вектор Х:

3.000 -0.500 4.500 1.500

/>/>/>/>4.8Табличные вычисления MS Excel

 

/>

/>/>Рис.4.3Проверка в MS Excel

 

/>

Рис. 4.4 Проверка в MS Excel в режиме отображения формул

 


4.9 Вычисления в MathCad

/>

Рис.4.5 Проверка в MathCad 14.

 

/>/>/>/>/>/>4.10 Анализ

Задача №6 (решение системы линейных алгебраическихуравнений методом гаусса) была решена с помощью языка программирования Turbo Pascal и затем была проверена с помощью табличногопроцессора Microsoft Excel 2007 и MathCad. Результаты решений совпали, чтоговорит о правильности выбранного алгоритма решения задачи.


Вывод

Таким образом, в данной курсовой работе было решено иоформлено 4 типовые геодезические и одна математическая задачи с помощью языкапрограммирования Turbo Pascal, табличного процессора Excel и MathCad 14.


/>/>/>/>/>/>/>/>/>/>/>Библиографический список

1) Информатика: Программа и методические указания повыполнению курсовой работы для студентов специальности «Маркшейдерскоедело» дневной формы обучения / Санкт-Петербургский горный ин-т. Сост.: А.П.Кондрашов, Т.Р. Косовцева, В.В. Петров,– СПб, 2004. 51 с.

2) Информатика.Учебник. Под редакцией Н.В. Макаровой. М., 2001.

3) Правилаоформления курсовых и квалификационных работ / Санкт-Петербургский горный ин-т.Сост. И.О. Онушкина, П.Г. Талалай, — СПб, 2004, 50 стр.

4) Информатика.Работа в пакете MathCad. /СПГГИ(ТУ), Сост. О.Г. Быкова, СПб, 2005, 46 стр.

5) Ян Белицкий Turbo Pascal с графикой для персональных компьютеров. М.:1991г.

еще рефераты
Еще работы по информатике, программированию