Решение базовых геодезических задач

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    357,43 Кб
  • Опубликовано:
    2014-11-11
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Решение базовых геодезических задач















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

по ИНФОРМАТИКЕ

Тема: РЕШЕНИЕ БАЗОВЫХ ГЕОДЕЗИЧЕСКИХ ЗАДАЧ

Оглавление

Введение

Задание 1. Рассчитать величины углов треугольника, зная координаты его вершин

Задание 2. Расчет неприступного расстояния

Задание 3. Расчет превышения

Задание 4. Решение прямой угловой засечки по формулам Юнга

Задание 5. Решение прямой угловой засечки по формулам Гаусса

Задание 6. Решение обратной геодезической задачи

Задание 7. Решение обратной угловой засечки по формулам Пранис-Праневича

Задание 8. Решение творческого задания для курсовой работы (расчет токсичных выбросов в атмосферу при эксплуатации автомобилей)

Заключение

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

Введение

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

В данной работе описываются основы использования вычислительных возможностей программ общего назначения в проведении геодезических расчетов. Рассказывается о проведении расчетов в Microsoft Excel, MathCad, MatLab и с помощью системы программирования Visual Basic.

Рассматриваются основные (базовые) геодезические расчеты: расчет расстояния до неприступной точки, вычисление превышения, решение обратной геодезической задачи, решение прямой угловой засечки по формулам Гаусса, решение прямой угловой засечки по формулам Юнга, решение обратной угловой засечки по формулам Пранис-Праневича.

Материал изложен так, что сначала приводятся расчетные схемы и формулы, а затем описываются средства и возможности различных программ. Решение всех задач ведется в соответствии с вариантом шестнадцатым.

Задание 1. Рассчитать величины углов треугольника, зная координаты его вершин

Пусть треугольник задан координатами своих вершин (рис.1). Вычислим величины его углов. Ответ представим в градусах, минутах, секундах и их десятых долях.

Рис. 1. Треугольник, заданный координатами своих вершин.

треугольник засечка гаусс юнга

На рис. 1 система координат выбрана так, как это приято в геодезии.

В случае, когда треугольник задан координатами своих вершин, длины его сторон можно определить по формулам вычисления расстояния между двумя точками, заданными своими координатами. Для стороны AB будем иметь: . Для стороны BC будем иметь: BC=.

Для стороны AC будем иметь:

AC= . Длины остальных сторон вычисляются аналогично. По известным длинам сторон треугольника может быть вычислена его площадь. Для этого можно использовать формулу Герона: , где  - полупериметр треугольника.

Дальнейшее решение этой задачи может быть основано на использовании теоремы косинусов для треугольника. Согласно этой теореме: квадрат длины одной из сторон треугольника равен сумме квадратов длин двух других сторон без удвоенного произведения этих сторон на косинус угла между ними. Для стороны AB будем иметь: ,

для стороны BC будем иметь: , для стороны AC будем иметь:

Для косинусов углов будем иметь:

,  

Для самих углов будем иметь формулы:

, ,

Треугольник задан координатами своих вершин.

Таблица 1. Исходные данные для задачи по нахождению величин углов треугольника

x1

y1

x2

y2

x3

y3

-4

1

5

2

10

5


Вычислим величины его углов с помощью . Microsoft Excel, MathCad, MatLab и системы программирования Visual Basic. Ответ представим в градусах, минутах, секундах и их десятых долях.

. Расчет в Microsoft Excel

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

=КОРЕНЬ((C2-A2)*(C2-A2)+(D2-B2)*(D2-B2))

Здесь используется функция вычисления квадратного корня, конструкция (C2-A2)*(C2-A2) соответствует возведению в квадрат выражения в скобках (можно было бы так же использовать конструкцию (C2-A2)^2).Итак:

.Длина стороны AB вычисляется по формуле:

=КОРЕНЬ((C2-A2)*(C2-A2)+(D2-B2)*(D2-B2))

Получим, что AB=9,055385

.Длина стороны BC вычисляется по формуле:

=КОРЕНЬ((E2-C2)*(E2-C2)+(F2-D2)*(F2-D2))

Получим, что BC=5,830952

.Длина стороны AC вычисляется по формуле:

=КОРЕНЬ((E2-A2)*(E2-A2)+(F2-B2)*(F2-B2))

Получим, что AC=14,56022

Для вычисления величины угла А в ячейку J2 необходимо поместить формулу:

=(180/ПИ())*ACOS((G2*G2+I2*I2-H2*H2)/(2*G2*I2))

Таким образом, угол A вычислим с помощью формулы =(180/ПИ())*ACOS((G2*G2+I2*I2-H2*H2)/(2*G2*I2)), , угол B вычислим с помощью формулы =(180/ПИ())*ACOS((H2*H2+G2*G2-I2*I2)/(2*H2*G2)),

,угол C вычислим с помощью формулы =(180/ПИ())*ACOS((I2*I2+H2*H2-G2*G2)/(2*I2*H2)), . Для проверки расчетов в ячейку М2 следует поместить формулу: =СУММ(J2:L2) (через двоеточие в формулах указываются диапазоны ячеек). Она будет вычислять сумму углов треугольника. При правильности вычислений она должна быть равна 180. =++=

Для получения градусов  в ячейку N2 поместим формулу:

=ОКРВНИЗ(J2;1). Получили  Для получения минут в ячейку O2 поместим формулу:

=ОКРВНИЗ((J2-N2)*60;1). Получили  Для получения секунд с долями в P2 поместим формулу: =(J2-(N2+O2/60))*3600.Получили . Итак,

Для получения градусов  в ячейку Q2 поместим формулу:

=ОКРВНИЗ(K2;1). Получили  Для получения минут в ячейку R2 поместим формулу:

=ОКРВНИЗ((K2-Q2)*60; 1). Получили  Для получения секунд с долями в S2 поместим формулу:

=(K2-(Q2+R2/60))*3600. Получили . Итак,  

Для получения градусов  в ячейку T2 поместим формулу:

=ОКРВНИЗ(L2;1). Получили  Для получения минут в ячейку U2 поместим формулу:

=ОКРВНИЗ((L2-T2)*60; 1) Получили  Для получения секунд с долями в V2 поместим формулу:

=(L2-(T2+U2/60))*3600. Получим  Итак,  

Проверка (рис 2.)

Рисунок 2

. Расчет в Mathcad

Рассмотрим решение примера для расчета углов треугольника с помощью программы MathCad.. Запустим систему MathCad. Будем исходить из того, что координаты вершин треугольника заданы. Будем задавать их с помощью операции присваивания в рабочем поле окна программы. Для координат вершин это можно сделать с помощью конструкций      . Для набора знака := следует воспользоваться кнопкой := с панели Арифметика. При этом координатам следует присваивать значения координат точек. Для координат остальных вершин x2, y2, x3, y3 необходимо поступать аналогичным образом.

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

 

.

.

Здесь операция возведения в квадрат оформляется с использованием кнопки  с панели Арифметика. Затем следует вычислить величину угла в градусах с долями:


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

;;

;;

 ;;

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

Таким образом, весь вычисляющий код будет иметь вид:

  

  

 

 

 

 

 

 

    

  

  

  

  


3. Расчет в MatLab

Самое первое действие в программе должно быть очистка экрана от предшествующих надписей. Это делается оператором clc. Затем необходимо прочитать исходные значения координат. Для координат вершин это можно сделать с помощью конструкций:

x1=input('x1->'); y1=input('y1->');

x2=input('x2->'); y2=input('y2->');

x3=input('x3->'); y3=input('y3->')

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

ab2=(x2-x1)^2+(y2-y1)^2;

ab=sqrt(ab2);

bc2=(x3-x2)^2+(y3-y2)^2;  bc=sqrt(bc2); =(x3-x1)^2+(y3-y1)^2; ac=sqrt(ac2)

Затем следует вычислить величины углов в градусах с долями:

c=(180/pi)*acos((bc2+ac2-ab2)/(2*bc*ac)); b=(180/pi)*acos((ab2+bc2-ac2)/(2*ab*bc));=(180/pi)*acos((ac2+ab2-bc2)/(2*ac*ab))

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

cg=fix(c); cm=fix((c-cg)*60); csec=(c-(cg+cm/60))*3600; bg=fix(b); bm=fix((b-bg)*60); bsec=(b-(bg+bm/60))*3600; ag=fix(a); am=fix((a-ag)*60); asec=(a-(ag+am/60))*3600

После последних вычислений необходимо выдать результат на экран. Это можно сделать, указав имя переменной, в которой хранится соответствующая вычисляемая величина, например, cg. Для вывода остальных значений следует поступать аналогично. Кроме такого способа вывода вычисленных значений возможен еще такой, когда после вычисляемого выражения не ставится точка с запятой. Это означает, что соответствующее вычисленное значение будет выдано на экран.

Таким образом, весь вычисляющий код будет иметь вид:

clc=input('x1->'); y1=input('y1->');=input('x2->'); y2=input('y2->');=input('x3->'); y3=input('y3->');=(x2-x1)^2+(y2-y1)^2; ab=sqrt(ab2);=(x3-x2)^2+(y3-y2)^2; bc=sqrt(bc2);=(x3-x1)^2+(y3-y1)^2; ac=sqrt(ac2);

c=(180/pi)*acos((bc2+ac2-ab2)/(2*bc*ac));=(180/pi)*acos((ab2+bc2-ac2)/(2*ab*bc));=(180/pi)*acos((ac2+ab2-bc2)/(2*ac*ab));=fix(c); cm=fix((c-cg)*60); csec=(c-(cg+cm/60))*3600;,=fix(b); bm=fix((b-bg)*60); bsec=(b-(bg+bm/60))*3600;=fix(a); am=fix((a-ag)*60); asec=(a-(ag+am/60))*3600;->-4->1

x2->5->2->10->5=15 = 1 = 6.0983

bg = 155=22=35.1668=9=36 =18.7350

4. Расчет в Visual Basic

Рис. 3. Вид окна программы для решения задачи о треугольнике.

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

Function acos(x)= 3.1415926= Atn(Sqr(1 - x * x) / x)aa<=0 then aa=aa+pix=-1 then aa=pi=aa

End Function

Эту функцию будем теперь использовать в процедуре обработки события.

Затем необходимо прочитать введенные в поля значения координат. Для координат вершин это можно сделать с помощью конструкций:

x1 = Val(TextBox1.Text): y1 = Val(TextBox6.Text)= Val(TextBox2.Text): y2 = Val(TextBox5.Text)= Val(TextBox3.Text): y3 = Val(TextBox4.Text)

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

ab2 = (x2 - x1) ^ 2 + (y2 - y1) ^ 2: ab = Sqr(ab2)= (x3 - x2) ^ 2 + (y3 - y2) ^ 2: bc = Sqr(bc2)= (x3 - x1) ^ 2 + (y3 - y1) ^ 2: ac = Sqr(ac2)

Затем введя постоянную величину pi=3.1415926, следует вычислить величину угла в градусах с долями:

c = (180 / Pi) * acos((bc2 + ac2 - ab2) / (2 * bc * ac))= (180 / Pi) * acos((ab2 + ac2 - bc2) / (2 * ab * ac))= (180 / Pi) * acos((ab2 + bc2 - ac2) / (2 * ab * bc))

Здесь acos означает обращение к функции, описанной в программе, множитель 180/pi необходим для перевода из радиан в градусы.

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

cg = Int(c): cm = Int((c - cg) * 60): csec = (c - (cg + cm / 60)) * 3600

ag = Int(a): am = Int((a - ag) * 60): asec = (a - (ag + am / 60)) * 3600= Int(b): bm = Int((b - bg) * 60): bsec = (b - (bg + bm / 60)) * 3600

После последних вычислений необходимо выдать результат на форму. Это можно сделать с помощью оператора: Label1.

Caption = "a= " + Str(ag) + " град " + Str(am) + " мин " + Str(asec) + " сек"

или с помощью TextBox1.Text = "a= " + Str(ag) + " град " + Str(am) + " мин "

+ Str(asec) + " сек"

Для вывода остальных значений углов следует поступать аналогично.

Таким образом, вся процедура будет иметь вид:

Function acos(x)

= 3.1415926= Atn(Sqr(1 - x * x) / x)aa <= 0 Then aa = aa + Pix = -1 Then aa = Pi= aaFunctionSub CommandButton1_Click()= Val(TextBox1.Text): y1 = Val(TextBox6.Text)= Val(TextBox2.Text): y2 = Val(TextBox5.Text)= Val(TextBox3.Text): y3 = Val(TextBox4.Text)

ab2 = (x2 - x1) ^ 2 + (y2 - y1) ^ 2: ab = Sqr(ab2)= (x3 - x2) ^ 2 + (y3 - y2) ^ 2: bc = Sqr(bc2)= (x3 - x1) ^ 2 + (y3 - y1) ^ 2: ac = Sqr(ac2)

Pi = 3.1415926= (180 / Pi) * acos((bc2 + ac2 - ab2) / (2 * bc * ac))= (180 / Pi) * acos((ab2 + ac2 - bc2) / (2 * ab * ac))= (180 / Pi) * acos((ab2 + bc2 - ac2) / (2 * ab * bc))= Int(c): cm = Int((c - cg) * 60): csec = (c - (cg + cm / 60)) * 3600= Int(a): am = Int((a - ag) * 60): asec = (a - (ag + am / 60)) * 3600= Int(b): bm = Int((b - bg) * 60): bsec = (b - (bg + bm / 60)) * 3600.Caption = "a= " + Str(ag) + " град " + Str(am) + " мин" + Str(asec) + " сек".Caption = "b= " + Str(bg) + " град " + Str(bm) + " мин " + Str(bsec) + " сек".Caption = "c= " + Str(cg) + " град" + Str(cm) + " мин " + Str(csec) + " сек"

End Sub

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

Задание 2. Расчет неприступного расстояния

Пусть необходимо вычислить расстояние от точки А до точки В, между которыми располагается неприступное препятствие (рис. 4).

Рис. 4. Схема для вычисления неприступного расстояния.

Предположим, что мы располагаем данными измерений, согласно которым известны расстояния АС1, АС2 и т.д. (базисы), углы , и т.д. и углы  и т.д.

Для того, чтобы произвести вычисления запишем теорему синусов для треугольника АВС1:


Из этой формулы выразим АВ:


Если в нашем распоряжении будет четыре комплекта измерений, то в качестве самого точного значения АВ следует выбрать среднее значение, вычисленное по четырем значениям:


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

Таблица 2. Исходные данные для расчета неприступного расстояния

AC



г

м

г

м

1

204,66

88

27

48

21

2

165,49

88

23

54

31

3

175,96

87

50

53

7

4

240,53

82

46

46

13


Расчет в Microsoft Excel

Рассмотрим решение примера по расчету расстояния до неприступной точки с помощью программы MS Excel.

Спланируем оформление вычислений так, что в ячейках A1-J1 разместим подписи к столбцам. В A2 поместим номер набора данных, которые позволят получить одну величину неприступного расстояния. В ячейке B2 будем задавать базис, в C2 и D2 разместим градусы и минуты угла . В ячейку Е2 поместим формулу =C2+D2/60. Она будет содержать угол  в градусах с долями. В ячейки F2, G2 разместим градусы и минуты угла , в H2 будет содержаться величина этого угла в градусах с долями (=F2+G2/60). По значениям, содержащимся в B2, E2 и H2 можно вычислить искомую величину неприступного расстояния с помощью формулы, помещенной в I2:

=B2*SIN(H2*ПИ()/180)/SIN((180-E2-H2)*ПИ()/180).

В этой формуле множитель ПИ()/180 служит для перевода градусов с долями в радианы. Таким образом, в ячейке I2 будет находиться величина неприступного расстояния для первого набора данных.

После этого описанные выше аналогичные действия произведем с ячейкам третьей, четвертой и пятой строки:

=B3*SIN(H3*ПИ()/180)/SIN((180-E3-H3)*ПИ()/180),=B4*SIN(H4*ПИ()/180)/SIN((180-E4-H4)*ПИ()/180), =B5*SIN(H5*ПИ()/180)/SIN((180-E5-H5)*ПИ()/180),

в результате чего в ячейках I2-I5 получим четыре значения неприступного расстояния. Последнее вычислительное действие, которое необходимо выполнить - это помещение в ячейку J2 формулы для вычисления среднего значения: =СУММ(I2:I5)/4.

Проверка (рис. 5)

Расчет в Mathcad

Решение задачи на вычисление неприступного расстояния в MathCad можно произвести с использованием следующей последовательности действий:

Рисунок 5

.        Ввод базисов

AC1:=204.66 AC2:=165.49 AC3:=175.96 AC4:=240.53

.        Ввод первого и второго угла и перевод в радианы.

   

   

.        Расчет расстояний

 

 

.        Вычисление ответа

=223.399 После округления AB=223.4

3. Расчет в MatLab

Решение задачи на вычисление неприступного расстояния в MatLab можно произвести с использованием следующей последовательности операторов:

AC1=input('AC1->');g=input('al1(grad)->');m=input('al1(min)->');=al1g+al1m/60;g=input('b1(grad)->');m=input('b1(min)->');=b1g+b1m/60;=AC1*sin(b1*pi/180)/sin((180-b1-al1)*pi/180);=input('AC2->');g=input('al2(grad)->');m=input('al2(min)->');=al2g+al2m/60;g=input('b2(grad)->');m=input('b2(min)->');=b2g+b2m/60;=AC2*sin(b2*pi/180)/sin((180-b2-al2)*pi/180);=input('AC3->');g=input('al3(grad)->');m=input('al3(min)->');=al3g+al3m/60;g=input('b3(grad)->');m=input('b3(min)->');=b3g+b3m/60;=AC3*sin(b3*pi/180)/sin((180-b3-al3)*pi/180);=input('AC4->');g=input('al4(grad)->');m=input('al4(min)->');=al4g+al4m/60;g=input('b4(grad)->');m=input('b4(min)->');=b4g+b4m/60;=AC4*sin(b4*pi/180)/sin((180-b4-al4)*pi/180);=(AB1+AB2+AB3+AB4)/4->204.66(grad)->88 al1(min)->27 b1(grad)->48 b1(min)->21= 223.3969->165.49(grad)->88 al2(min)->23 b2(grad)->54 b2(min)->31= 223.3988->175.96(grad)->87 al3(min)->50 b3(grad)->53 b3(min)->7=223.4026->240.53(grad)->82 al4(min)->46 b4(grad)->46 b4(min)->13= 223.3976= 223.3990

. Расчет в Visual Basic

Рис. 6. Вид формы для решения задачи о неприступном расстоянии.

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

ac1 = Val(TextBox1.Text): ac2 = Val(TextBox6.Text)= Val(TextBox11.Text): ac4 = Val(TextBox16.Text)

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

al1 = Val(TextBox2.Text) + Val(TextBox8.Text) / 60

al2 = Val(TextBox7.Text) + Val(TextBox3.Text) / 60= Val(TextBox12.Text) + Val(TextBox13.Text) / 60= Val(TextBox17.Text) + Val(TextBox18.Text) / 60= Val(TextBox4.Text) + Val(TextBox5.Text) / 60= Val(TextBox9.Text) + Val(TextBox10.Text) / 60= Val(TextBox19.Text) + Val(TextBox15.Text) / 60= Val(TextBox14.Text) + Val(TextBox20.Text) / 60

Затем введя постоянную величину pi=3.1415926, следует вычислить неприступное расстояние. Это можно сделать с помощью конструкций:

ab1 = ac1 * Sin(ba1 * Pi / 180) / Sin((180 - al1 - ba1) * (Pi / 180))

ab2 = ac2 * Sin(ba2 * Pi / 180) / Sin((180 - al2 - ba2) * (Pi / 180))= ac3 * Sin(ba3 * Pi / 180) / Sin((180 - al3 - ba3) * (Pi / 180))= ac4 * Sin(ba4 * Pi / 180) / Sin((180 - al4 - ba4) * (Pi / 180))

Найдем среднее значение: ab = (ab1 + ab2 + ab3 + ab4) / 4

Для вывода ответа воспользуемся оператором Label1.Caption:

Label7.Caption = "ab1= " + Str(ab1).Caption = "ab2= " + Str(ab2).Caption = "ab3= " + Str(ab3).Caption = "ab4= " + Str(ab4).Caption = "ab= " + Str(ab)

Задание 3. Расчет превышения

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

Рис. 7. Схема для вычисления превышения

Для того чтобы определить превышение точки 1 над точкой 2 необходимо с помощью прибора, расположенного на высоте над поверхностью земли i1, установленного в точке 1, измерить угол ν 1-2 между горизонтальной плоскостью и направлением на верхний край рейки, длиной V2, и установленной вертикально в точке 2. Кроме этого в распоряжении вычислителя имеется расстояние S1-2. Таким образом, для вычисления h1-2 необходимо исходить из известности: расстояния S1-2, угла ν 1-2, высот i1 и V2. Кроме величины расстояния S1-2 выраженного в метрах требуется величина Sкм. Это та же величина, но выраженная в километрах (Sкм=S1-2/1000). Расчет производится по формуле:

.

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

Таблица 3. Исходные данные для расчета превышения

ν




г

м


16

1.09

2464.70

-2

-45.0

4


. Расчет в Microsoft Excel

При расчете превышения следует спланировать расчетную таблицу, например, так: В A2 поместим i1, в B2 - S1-2, в D2 - градусы угла ν1-2 , в E2 - минуты с десятыми долями угла ν1-2., в G2 - формулу: =РАДИАНЫ(D2+E2/60) (для перевода угла ν1-2 в радианы), в H2 - V2. Тогда в I2 следует поместить формулу: =B2*TAN(G2)+A2-H2+0,0675*(B2/1000)^2 (TAN - вычисление функции тангенс).

Для исходных данных получаются следующие результаты:

Таблица 4 Результаты полученные в ходе решения задачи о превышении

A

B

C

D

E

F

G

H

I


ν(r)

ν(м)


ν(р)

V2

1,09

2464,7


-2

-45


-0,048

4

-120,888

Проверка (рис.8)

Рисунок 8

. Расчет в Mathcad

Решение задачи на вычисление превышения в MathCad можно произвести с использованием следующего кода:


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

. Расчет в MatLab

Решение задачи на вычисление превышения в MatLab можно произвести с использованием следующей последовательности операторов:

i1=input('i1------->'); =input('s-------->'); =input('v2------->'); =input('nu(grad)->');

nm=input('nu(min)-->');

n=(ng+nm/60); =s*tan(n*pi/180)+i1-v2+0.0675*(s/1000)^2------->1.09------->2464.70------->4(grad)->-2(min)-->-45.0

h = -120.8880

. Расчет в Visual Basic

Рис. 9. Вид формы для решения задачи о превышении.

Подписи полей ввода созданы с помощью компонентов Label, а именно в свойство Caption помещено: i1, S1-2 и т.д.

Выполним два быстрых щелчка на кнопке Расчет. Тем самым будет создан каркас процедуры обработки события, возникающего при нажатии на кнопку при последующем исполнении программы:

Private Sub Command1_Click() Sub

Между этими двумя строками необходимо поместить операторы, производящие расчет превышения.

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

= Val(Text1.Text).

Для величин S и V2 нужно поступать аналогичным образом.

Величина n может быть введена следующим образом:

n = Val(Text4.Text) + Val(Text5.Text) / 60,

т.е. значение величины прочитывается с двух полей ввода.

После ввода исходных величин и задав постоянную величину pi = 3.1415926 необходимо выполнить вычисление превышения. Это можно сделать с помощью конструкции:

h = s * Tan(n * pi / 180) + i1 - v2 + 0.0675 * (s / 1000) ^ 2.

Здесь знаком ^2 обозначена операция возведения в квадрат, множитель pi/180 служит для преобразования из градусов в радианы, Tan - обозначает вызов стандартной функции тангенс. После вычислений необходимо выдать результат на форму. Это можно сделать с помощью оператора: Label6.Caption = "h= " + Str(h). Таким образом, вся процедура будет иметь вид:

Private Sub CommandButton1_Click()

Pi = 3.1415926= Val(TextBox1.Text): s = Val(TextBox2.Text)= Val(TextBox3.Text)= Val(TextBox4.Text) + Val(TextBox5.Text) / 60= s * Tan(n * Pi / 180) + i1 - v2 + 0.0675 * (s / 1000) ^ 2.Caption = "h= " + Str(h) Sub

Задание 4. Решение прямой угловой засечки по формулам Юнга

Рассмотрим расчет координат удаленной точки по формулам Юнга. Даны точки 1 и 2 с координатами x1, y1 и x2, y2, соответственно. Кроме этого с помощью угломерного инструмента измерены два угла  и  (рис. 10).

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

Рис. 10. Расчет координат по формулам Юнга.

Расчет координат точки Р можно выполнить по формулам:


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

1. Расчет в Microsoft Excel

Рассмотрим решение тестового примера по расчету координат удаленной точки по формулам Юнга с помощью программы MS Excel.

Спланируем вычисления так, что координаты x1, y1 и x2, y2 поместим в ячейки A2, B2, C2, D2. Если угол  задавать в трех ячейках (градусы, минуты, секунды с долями), например в E2, F2 и G2, то угол в градусах с долями получается использованием формулы в H2: =E2+F2/60+G2/3600. Аналогично, для , используя для ввода ячейки I2, J2, K2, а для формулы L2: =I2+J2/60+K2/3600.

Для расчета координат по формулам Юнга требуется в ячейки А4 и D4 поместить формулы:

=(A2/TAN(РАДИАНЫ(L2))+C2/TAN(РАДИАНЫ(H2))-+D2)/(1/TAN(РАДИАНЫ(H2))+1/TAN(РАДИАНЫ(L2)))

и =(B2/TAN(L2*ПИ()/180)+D2/TAN(H2*ПИ()/180)+A2-C2)/

(1/TAN(H2*ПИ()/180)+1/TAN(L2*ПИ()/180)).

Здесь TAN - функция, предназначенная для вычисления тангенса угла. Эта функция используется, потому что ctgα=1/tgα. Функция TAN должна действовать на аргумент, выраженный в радианах. Это можно сделать либо используя функцию РАДИАНЫ (так сделано в формуле для xp), либо используя умножение на /180 (так сделано в формуле для yp).

Рисунок 11

2. Расчет в Mathcad

Решение задачи вычисления координат удаленной точки по формулам Юнга можно произвести с использованием следующего кода:

 

 

 


Функции ctg(β) в Mathcad нет, поэтому мы заменяем ctg( на .

3. Расчет в MatLab

Решение задачи вычисления координат точки по формулам Юнга можно произвести с использованием следующей последовательности операторов:

% расчет по формулам Юнга

=input('x1->');

y1=input('y1->');=input('x2->');

y2=input('y2->');g=input('b1(grad)->');m=input('b1(min)-->');s=input('b1(sec)-->');g=input('b2(grad)->');m=input('b2(min)-->');s=input('b2(sec)-->');=b1g+b1m/60+b1s/3600 ; b2=b2g+b2m/60+b2s/3600;=b1*pi/180 ; b2=b2*pi/180;=(x1*cot(b2)+x2*cot(b1)-y1+y2)/(cot(b1)+cot(b2))=(y1*cot(b2)+y2*cot(b1)+x1-x2)/(cot(b1)+cot(b2))

x1->47->48->54->51(grad)->48(min)-->13

b1(sec)-->45.4(grad)->48(min)-->44(sec)-->5.6= 52.2254= 45.5599

. Расчет в Visual Basic

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

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

Запустим систему Visual Basic. Через окно свойств изменим значение свойства Caption для формы со значения Form1 на расчет координат по формулам Юнга. Поместим на форму одну командную кнопку. Через окно свойств зададим значение свойства Caption равным Расчет. Поместим на форму десять компонентов TextBox, разместив около каждого из них по компоненту Label (рис. 12). Через окно свойств свойство TextBox каждого компонента TextBox заполним соответствующим значением координат точек и величин углов (например, из тестового примера, разделитель между целой и дробной частью - точка). Подписи полей ввода созданы с помощью компонентов Label, а именно в свойство Caption поместим: x1, y1 и т.д. Выполним два быстрых щелчка на кнопке Расчет. Тем самым будет создан каркас процедуры обработки события, возникающего при нажатии на кнопку:

Private Sub CommandButton1_Click()Sub

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

Function ctg(x)= Cos(x) / Sin(x)

End Function

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

X1 = Val(TextBox1.Text): Y1 = Val(TextBox2.Text)

Двоеточие между двумя конструкциями выполняет роль разделителя между операторами, когда они помещены в одну строку. Для координат второй вершины x2, y2:

X2 = Val(TextBox6.Text): Y2 = Val(TextBox7.Text)

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

b1 = Val(TextBox3.Text) + Val(TextBox5.Text) / 60 + Val(TextBox4.Text) / 3600= Val(TextBox8.Text) + Val(TextBox9.Text) / 60 + Val(TextBox10.Text) / 3600

После ввода координат и углов, введя постоянную величину pi = 3.1415926 необходимо выполнить перевод углов из градусов в радианы:

= b1 * Pi / 180: b2 = b2 * Pi / 180

Затем следует вычислить величину координат:

xp = (X1 * ctg(b2) + X2 * ctg(b1) - Y1 + Y2) / (ctg(b1) + ctg(b2))= (Y1 * ctg(b2) + Y2 * ctg(b1) + X1 - X2) / (ctg(b1) + ctg(b2))

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

Label12.Caption = "xp= " + Str(xp)

Label13.Caption = "yp= " + Str(yp)

Таким образом, вся процедура будет иметь вид:

Private Sub CommandButton1_Click()= Val(TextBox1.Text): Y1 = Val(TextBox2.Text)= Val(TextBox6.Text): Y2 = Val(TextBox7.Text)= Val(TextBox3.Text) + Val(TextBox5.Text) / 60 + Val(TextBox4.Text) / 3600= Val(TextBox8.Text) + Val(TextBox9.Text) / 60 + Val(TextBox10.Text) / 3600= 3.1415926= b1 * Pi / 180: b2 = b2 * Pi / 180

xp = (X1 * ctg(b2) + X2 * ctg(b1) - Y1 + Y2) / (ctg(b1) + ctg(b2))= (Y1 * ctg(b2) + Y2 * ctg(b1) + X1 - X2) / (ctg(b1) + ctg(b2))

Label12.Caption = "xp= " + Str(xp).Caption = "yp= " + Str(yp)

End Sub

В результате вычислений для тестового примера получаем результат, представленный на рис. 12.

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

Задание 5. Решение прямой угловой засечки по формулам Гаусса

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

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

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

.

Таблица 5. Исходные данные для решения прямой угловой засечки

α

β






г

м

г

м

16

48

50

52

51

34

58

309

27

Расчет в Microsoft Excel

Рассмотрим решение примера по расчету прямой угловой засечки по формулам Гаусса с помощью программы MS Excel.

Спланируем оформление вычислений так, что в ячейках A1-L1 разместим подписи к столбцам. В ячейках A2-D2 поместим координаты точек. В ячейках E2 и F2 разместим градусы и минуты угла α, а в ячейках H2 и I2 для угла β. В ячейку G2 поместим формулу =E2+F2/60. Она будет содержать угол α в градусах с долями. Ячейка J2 будет содержать ту же информацию, но для угла β =H2+I2/60 .В ячейки K2 и L2 поместим формулы для расчета прямой угловой засечки xp и yp:

=(A2*TAN(G2*ПИ()/180)-C2*TAN(J2*ПИ()/180)+(D2-

B2))/(TAN(G2*ПИ()/180)-TAN(J2*ПИ()/180))

=B2+(K2-A2)*TAN(G2*ПИ()/180)

Рисунок 14

Расчет в Mathcad

Рассмотрим решение примера для прямой угловой засечки по формулам Гаусса с помощью программы MathCad. Запустим систему MathCad. Будем исходить из того, что координаты точек заданы. Будем задавать их с помощью операции присваивания в рабочем поле окна программы. Для координат точек это можно сделать с помощью конструкций   . Для набора знака:= следует воспользоваться кнопкой := с панели Арифметика. Затем следует вычислить величину угла в градусах с долями:

 

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


Для вывода значений мы пользуемся знаком “=”.


Таким образом, весь вычисляющий код будет иметь вид:

   


Расчет в MatLab

Решение задачи вычисления координат точки по формулам Гаусса можно произвести с использованием следующей последовательности операторов:

clc= input('x1->');

y1 = input('y1->');= input('x2->');

y2 = input('y2->');g = input('a1(grag)->');m = input('a1(min)->');g = input('a2(grag)->');m = input('a2(min)->');= a1g+a1m/60; a2=a2g+a2m/60;= a1 * pi / 180; a2 = a2 * pi / 180;= (x1 * tan(a1) - x2 * tan(a2) + y2 - y1) / (tan(a1) - tan(a2))= y1 + (xp-x1)*tan(a1)

x1->48->50->52->51(grag)->34(min)->58.0

a2(grag)->309(min)->27.0= 51.0612 = 52.1408

. Расчет в Visual Basic

Сначала необходимо прочитать введенные в поля значения координат. Для координат вершин это можно сделать с помощью конструкций:

x1 = Val(TextBox1.Text): y1 = Val(TextBox3.Text)

x2 = Val(TextBox2.Text): y2 = Val(TextBox4.Text)

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

Затем введя постоянную величину pi=3.1415926 необходимо прочитать введенные в поля значения углов в градусах с долями. Это можно сделать с помощью конструкций:

al1 = Val(TextBox5.Text) + Val(TextBox7.Text) / 60

al2 = Val(TextBox6.Text) + Val(TextBox8.Text) / 60

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

al1 = al1 * Pi / 180: al2 = al2 * Pi / 180

Далее мы вводим основные формулы для расчета координат точки:

xp = (x1 * Tan(al1) - x2 * Tan(al2) + y2 - y1) / (Tan(al1) - Tan(al2))= y1 + (xp - x1) * Tan(al1)

Для вывода ответа используем следующие операторы:

Label9.Caption = "xp= " + Str(xp).Caption = "yp= " + Str(yp)

Таким образом, весь вычисляющий код будет иметь вид:

Private Sub CommandButton1_Click()= Val(TextBox1.Text): y1 = Val(TextBox3.Text)= Val(TextBox2.Text): y2 = Val(TextBox4.Text)= Val(TextBox5.Text) + Val(TextBox7.Text) / 60= Val(TextBox6.Text) + Val(TextBox8.Text) / 60= 3.1415926= al1 * Pi / 180: al2 = al2 * Pi / 180

xp = (x1 * Tan(al1) - x2 * Tan(al2) + y2 - y1) / (Tan(al1) - Tan(al2))= y1 + (xp - x1) * Tan(al1)

Label9.Caption = "xp= " + Str(xp).Caption = "yp= " + Str(yp)

End Sub

Задание 6. Решение обратной геодезической задачи

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

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

Из рисунка видно, что для тангенса дирекционного угла можно записать соотношение:


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


Рис. 17. Схема для выбора формулы для вычисления угла.

Таблица 6. Исходные данные для решения ОГЗ

1,75

8,40

7,14

7,57


Расчет в Microsoft Excel

Рассмотрим решение тестового примера по решению обратной геодезической задачи с помощью программы MS Excel.

Спланируем вычисления так, что координаты x1, y1, x2, y2 поместим в ячейки A2 - D2.Для определения дирекционного угла в градусах с долями в ячейку Е2 поместим формулу, производящую вычисление в зависимости от условий:

=ЕСЛИ(C2-A2<0;180+(180/ПИ())*ATAN((D2-B2)/(C2-A2)); ЕСЛИ(D2-B2<0;360+(180/ПИ())*ATAN((D2-B2)/(C2-A2)); (180/ПИ())*ATAN((D2-B2)/(C2-A2)))).

В этой формуле используется условная функция. Ее синтаксис: =ЕСЛИ(Логическое_выражение; Выражение_1; Выражение_2). Здесь Логическое_выражение может состоять из комбинации отдельных более простых логических выражений. При этом они могут быть объединены логическими связками И и ИЛИ. Например, ИЛИ(A1=3;B1=4;C1=5) - это логическое выражение истинно, когда хотя бы одно из отдельных логических выражений истинно; И(A1=3;B1=4;C1=5) - это логическое выражение истинно, когда все отдельные логические выражения истинны. На место параметров Выражение_1 и Выражение_2 могут быть подставлены, в том числе и условные функции, т.е. имеется возможность создавать вложенные условные функции. Например, =ЕСЛИ(С6=3;0;ЕСЛИ(С6=4;1800;2700)). Для выделения из значения угла в градусах с долями градусов и минут в ячейки F2 и G2 поместим формулы: =ОКРВНИЗ(E2;1) и =(E2-F2)*60, соответственно. Для вычисления расстояния в ячейку Н2 поместим формулу: =КОРЕНЬ((D2-B2)^2+(C2-A2)^2). Для исходных данных получаются следующие результаты:

Таблица 7. Полученные значения при решении задачи по нахождению ОГЗ

α

α, г

α, м

S

1,75

8,40

7,14

7,57

351,2459

351

14,75

5,45


Рисунок 18

2. Расчет в Mathcad

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

Проверяем первое условие: <0,

,14-1,75<0-не верно, значит, проверяем второе условие: <0

,57-8,40<0-верно, значит, прибавляем к исходной формуле 2р или

Таким образом, весь вычисляющий код будет иметь вид:

   

3. Расчет в MatLab

Решение обратной геодезической задачи с помощью MatLab можно произвести с использованием следующей последовательности операторов:

clc= input('x1->');

y1 = input('y1->');= input('x2->');= input('y2->');=atan((y2-y1)/(x2-x1))*180/pi;

if ((x2-x1)<0)=180+al;((y2-y1)<0)=360+al=sqrt((y2-y1)^2+(x2-x1)^2)= fix(al)= ((al - alg) * 60)

x1->1.75->8.40->7.14->7.57= 351.2459= 5.4535= 351

alm =14.7510

4. Расчет в Visual Basic

Рис. 19. Вид формы для решения обратной геодезической задачи.

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

Реализация этих конструкций осуществляется при помощи условного оператора IF. Простая конструкция реализуется с помощью программной конструкции: <условие> THEN <действие1>,

а расширенная конструкция:

IF <условие> THEN <действие1> ELSE <действие2> .

С помощью условного оператора можно разветвить программу. Простую конструкцию IF-THEN следует читать так: если условие выполняется (логическое выражение принимает значение "Истина"), то действие, заданное оператором или множеством операторов, выполняется. В противном случае (логическое выражение принимает значение "Ложь") действие не выполняется. В программе, если условие не выполняется, управление передается следующей строке. Конструкция IF-THEN-ELSE дает возможность выбирать одно из двух действий.

<условие> в программе представляет собой логическое выражение, состоящее из двух операндов, соединенных между собой одной из операций отношения: < - меньше, > - больше, <= (или =<) - меньше или равно, >= (или =>) - больше или равно, = - равно, <> (или ><) - не равно.

Сначала необходимо прочитать введенные в поля значения координат. Для координат вершин это можно сделать с помощью конструкций:

x1 = Val(TextBox1.Text): y1 = Val(TextBox3.Text)

x2 = Val(TextBox2.Text): y2 = Val(TextBox4.Text)

Затем введя постоянную величину pi=3.1415926 необходимо ввести основные формулы для расчета. Это можно сделать с помощью конструкций:

al = Atn((y2 - y1) / (x2 - x1)) * (180 / Pi)

s = Sqr((y2 - y1) ^ 2 + (x2 - x1) ^ 2)

Множитель 180/pi необходим для перевода из радиан в градусы. Далее мы записываем условия, благодаря которым будет произведен выбор именно той формулы, с помощью которой мы сможем решить данную задачу верно:

If (x2 - x1) < 0 Then= Atn((y2 - y1) / (x2 - x1)) * (180 / Pi) + 180(y2 - y1) < 0 Then= Atn((y2 - y1) / (x2 - x1)) * (180 / Pi) + 2 * 180= Atn((y2 - y1) / (x2 - x1)) * (180 / Pi) If

Последним действием является вывод ответа:

Label5.Caption = "al= " + Str(al) + "град".Caption = "s= " + Str(s)

Таким образом, весь вычисляющий код будет иметь вид:

Private Sub CommandButton1_Click()= Val(TextBox1.Text): y1 = Val(TextBox3.Text)= Val(TextBox2.Text): y2 = Val(TextBox4.Text)

Pi = 3.1415926= Atn((y2 - y1) / (x2 - x1)) * (180 / Pi)

s = Sqr((y2 - y1) ^ 2 + (x2 - x1) ^ 2)(x2 - x1) < 0 Then

al = Atn((y2 - y1) / (x2 - x1)) * (180 / Pi) + 180

Else(y2 - y1) < 0 Then= Atn((y2 - y1) / (x2 - x1)) * (180 / Pi) + 2 * 180= Atn((y2 - y1) / (x2 - x1)) * (180 / Pi)IfIf.Caption = "al= " + Str(al) + "град".Caption = "s= " + Str(s)

End Sub

Задание 7. Решение обратной угловой засечки по формулам Пранис-Праневича

Задача ставится так, что требуется вычислить координаты точки Р по координатам трех заданных точек и двум углам (рис. 20).

Рис. 20. Схема для вычисления по формулам Пранис-Праневича.

Расчет неизвестных координат точки Р может быть произведен по формулам Пранис-Праневича:

N=;

 

Таблица 8. Исходные данные для нахождения обратной угловой засечки

α

β







г

м

г

м

2,51

1,46

0,82

3,98

2,04

7,24

20

3,7

18

26.5


Расчет в Microsoft Excel

Рассмотрим решение тестового примера по расчету координат удаленной точки по формулам Пранис-Праневича с помощью программы MS Excel.

Спланируем вычисления так, что координаты x1, y1, x2, y2, x3, y3 поместим в ячейки A2 - F2. Если угол α задавать в двух ячейках (градусы и минуты с долями), например в G2 и H2, то угол сначала в градусах с долями, а затем и в радианах получается использованием формулы в K2: =РАДИАНЫ(G2+H2/60). Аналогично, для β, используя для ввода ячейки I2, J2, а для формулы L2: =РАДИАНЫ(I2+J2/60). После этого в ячейках K2 и L2 будут находиться значения углов в радианах.

В ячейку М2 поместим формулу для вычисления tgQ:

=((D2-B2)/TAN(K2)-(F2-D2)/TAN(L2)+A2-E2)/

((C2-A2)/TAN(K2)-(E2-C2)/TAN(L2)-B2+F2).

В ячейку N2 поместим формулу для вычисления N:

=(D2-B2)*(1/TAN(K2)-M2)-(C2-A2)*(1+M2/TAN(K2)).

В ячейки O2 и Р2 поместим формулы для вычисления x и y: =N2/(1+M2^2) и =O2*M2,а в ячейки A4 и C4 формулы для xp и yp: =C2+O2 и =D2+P2.

Для исходных данных получаются следующие результаты:

Таблица 9. Значения, полученные в ходе решения задачи по расчету обратной угловой засечки

α

β







г

м

г

м

2,51

1,46

0,82

3,98

2,04

7,24

20

3,7

18

26,5

α

β

tgQ

N

xp

yp

0,350142

0,321868

0,959841

10,61362

5,524198

5,302353

6,344198

9,282353


Рисунок 21

Расчет в Mathcad

Решение обратной угловой засечки по формулам Пранис-Праневича можно произвести с использованием следующего кода:

     

 

 

 

 

. Расчет в MatLab

Решение обратной угловой засечки по формулам Пранис-Праневича можно произвести с использованием следующей последовательности операторов:

clc

x1=input ('x1, y1->');=input ('x1, y1->');=input ('x2, y2->');=input ('x2, y2->');=input ('x3, y3->');=input ('x3, y3->');

alg=input ('al(grad)->');=input ('al(min)-->');=input ('be(grad)->');=input ('be(min)-->');= alg + alm / 60;= beg + bem / 60;= al * pi / 180; be = be * pi / 180;

tgq=((y2-y1)/tan(al)-(y3-y2)/tan(be)+x1-x3)/((x2-x1)/tan(al)-(x3-x2)/tan(be)-y1+y3);= (y2 - y1) * (1/tan(al) - tgq) - (x2 - x1) * (1 + 1/tan(al) * tgq);

dx = n / (1 + tgq ^ 2); dy = dx * tgq;

xp = x2 + dx= y2 + dy, y1->2.51, y1->1.46, y2->0.82, y2->3.98, y3->2.04, y3->7.24

al(grad)->20(min)-->3.7(grad)->18(min)-->26.5= 6.3442=9.2824

. Расчет в Visual Basic

Рис. 22. Вид формы для решения обратной угловой засечки по формулам Пранис-Праневича.

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

Function ctg(x)= Cos(x) / Sin(x)

End Function

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

X1 = Val(TextBox1.Text): Y1 = Val(TextBox7.Text)

X2 = Val(TextBox8.Text): Y2 = Val(TextBox2.Text)= Val(TextBox3.Text): Y3 = Val(TextBox9.Text)

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

al = Val(TextBox4.Text) + Val(TextBox5.Text) / 60= Val(TextBox10.Text) + Val(TextBox6.Text) / 60

После ввода координат и углов, введя постоянную величину Pi = 4 * Atn(1) необходимо выполнить перевод углов из градусов в радианы:

al = al * Pi / 180: be = be * Pi / 180

Затем мы вводим основные расчетные формулы:

tgq = ((Y2 - Y1) / Tan(al) - (y3 - Y2) / Tan(be) + X1 - x3) / ((X2 - X1) / Tan(al) - (x3 - X2) / Tan(be) - Y1 + y3)= (Y2 - Y1) * (ctg(al) - tgq) - (X2 - X1) * (1 + ctg(al) * tgq)

dx = n / (1 + tgq ^ 2): dy = dx * tgq

xp = X2 + dx: yp = Y2 + dy

Последним этапом является вывод ответа:

Label1.Caption = "xp= " + Str(xp).Caption = "yp= " + Str(yp)

Таким образом, весь вычисляющий код будет иметь вид:

Function ctg(x)= Cos(x) / Sin(x)FunctionSub CommandButton1_Click()= Val(TextBox1.Text): Y1 = Val(TextBox7.Text)= Val(TextBox8.Text): Y2 = Val(TextBox2.Text)= Val(TextBox3.Text): y3 = Val(TextBox9.Text)= Val(TextBox4.Text) + Val(TextBox5.Text) / 60= Val(TextBox10.Text) + Val(TextBox6.Text) / 60= 4 * Atn(1)= al * Pi / 180: be = be * Pi / 180

tgq = ((Y2 - Y1) / Tan(al) - (y3 - Y2) / Tan(be) + X1 - x3) / ((X2 - X1) / Tan(al) - (x3 - X2) / Tan(be) - Y1 + y3)= (Y2 - Y1) * (ctg(al) - tgq) - (X2 - X1) * (1 + ctg(al) * tgq)

dx = n / (1 + tgq ^ 2): dy = dx * tgq= X2 + dx: yp = Y2 + dy.Caption = "xp= " + Str(xp).Caption = "yp= " + Str(yp) Sub

Нужно определить мощность эмиссии загрязняющих веществ qi, мг/м·с, рассчитать концентрации загрязняющих веществ в атмосферном воздухе(С, мг/м3 )на расстоянии от дороги 10м.

Расчет выполняют в следующей последовательности:

I. Определяют мощность эмиссии qi, мг/м·с, загрязняющих веществ отдельно для каждого компонента окиси углерода на конкретном участке дороги по формуле:

qi=0,206·m·[∑(Gik·Nik·Kk) + ∑(Giд·Niд·Kд)]

где m - коэффициент, учитывающий дорожные и транспортные условия, принимается по графику на рис. 23 в зависимости от средней скорости транспортного потока V, км/ч;

Gik-средний эксплуатационный расход топлива для данного типа карбюраторных автомобилей, принимается по табл. 10, л/км; Giд - то же для дизельных автомобилей, л/км; Nik-интенсивность движения каждого выделенного типа карбюраторных автомобилей, авт./ч; Niд - то же дизельных автомобилей, авт./ч; Кк и Кд - коэффициенты, принимаемые для данного компонента загрязнения: с карбюраторными и дизельными типами ДВС, соответственно, по таблице 11.

2. Рассчитывают концентрации токсичных компонентов отработавших газов в атмосферном воздухе Сj, мг/м3, на различном удалении от дороги l, используя модель Гауссового распределения примесей в атмосфере на небольших высотах, по формуле:

Сj=

где δ - стандартное отклонение Гауссового рассеивания в вертикальном направлении по табл. 12, м;

vв - скорость ветра, преобладающего в расчетный период, м/с, φ - угол, составляемый направлением ветра к трассе дороги (при угле менее 300 принять равным 0,5);

Fj - фоновая концентрация загрязнения воздуха, мг/м3.

Средние эксплуатационные нормы расхода топлива в л на 1 км пути

Таблица 10

Тип автомобиля

Значение Gi, л/км

1. Легковые автомобили

0,11

2.Малые грузовые автомобили карбюраторные (до 6 тонн)

0,16

0,33

4.Грузовые автомобили дизельные

0,34

5.Автобусы карбюраторные

0,37

6.Автобусы дизельные

0,28


Значение коэффициентов Кк и Кд

Таблица 11

Вид выбросов

Тип ДВС


Карбюраторный

Дизельный

Окись углерода

0,6

0,14

Углеводороды

0,12

0,037

Оксиды азота

0,06

0,015


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

Таблица 12

Состояние погоды

Величина при удалений l от кромки проезжей части, м


10

20

40

60

80

100

150

200

250

Солнечная

2

4

6

8

10

13

19

24

30

Дождливая

1

2

4

6

8

10

14

18

22


Таблица 13

Вариант

Na, авт/ч

Распределение автомобилей по типам, %

V, км/ч

φ, град

l, м



1

2

3

4

5

6




16

1100

40

10

15

20

5

10

30

25

80


Расчеты

qi=0,206·m·[∑(Gik·Nik·Kk) + ∑(Giд·Niд·Kд)]

Окись углерода:

qi=0,206*0,63*((440*0,11*0,6+110 *0,16*0,6+165*0,33*0,6+55*0,37*0,6)+(220*0,14*0,34+110*0,28*0,14))

qi= 12,882

Концентрация токсичных компонентов отработавших газов в атмосферном воздухе (Cj мг/м3).

) Солнечная погода:

) Дождливая погода:

Ответ: ;

1. Расчет в Microsoft Excel

Спланируем вычисления так, что значения  поместим в ячейки B2-B5 и E2-E3, значения  и поместим в ячейки C2-C5 и F2-F3 ,  и  в ячейки D2, G2 соответственно. В ячейки С6, D6 поместим  у, в ячейку J2 m. Основные расчетные формулы будут содержать ячейки H2 и E7-E8. Ячейка H2 будет содержать формулу для расчета q:

=0,206*J2*((B2*C2*D2+B3*C3*D2+B4*C4*D2+B5*C5*D2)+(E2*F2*G2+E3*F3*G2))

Ячейки E7-E8 для расчета , для  при дождливой погоде:

=2*H2/(КОРЕНЬ(2*ПИ())*0,5*C7*D7)

При солнечной погоде:

=2*H2/(КОРЕНЬ(2*ПИ())*0,5*C7*D8).

;

Результат получили такой же, что и при расчете с помощью калькулятора.

Таблица 14 Результаты решения творческой задачи 2. Расчет в Mathcad

Gik

Nik

Kk

Gid

Nid

Kd

q

m

0,11

440

0,6

0,34

220

0,14

12,602676

0,63

0,16

110


0,14

110




0,33

165







0,37

55








σ

Cj






8,3

1

2,423007







2

1,211504






Расчет токсичных выбросов в атмосферу при эксплуатации автомобилей в MathCad можно произвести с использованием следующей последовательности действий:

     

     

 

 

 

Заключение


Рассмотрены основные (базовые) геодезические расчеты: расчет расстояния до неприступной точки, вычисление превышения, решение обратной геодезической задачи, решение прямой угловой засечки по формулам Гаусса, решение прямой угловой засечки по формулам Юнга, решение обратной угловой засечки по формулам Пранис-Праневича, а также, решена задача на расчет токсичных выбросов в атмосферу при эксплуатации автомобилей с помощью изученных раннее методов.

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

1. Серогодский В.В., Прокди Р.Г. Excel 2010. Пошаговый самоучитель + справочник пользователя.- Наука и техника, 2012.

. Штыков В.В. MathCAD. Руководство по решению задач для начинающих.- Либроком, 2013.

. Васильев А.Н. Matlab. Самоучитель. Практический подход.- Наука и техника, 2012.

. Зиборов В. Visual Basic 2012 на примерах.- БХВ-Петербург, 2013.

Похожие работы на - Решение базовых геодезических задач

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!