Решение вычислительных задач по геодезии с помощью си- стемы для математических расчетов MatLab
Для проведения вычислений можно использовать вычислительные возможности математического пакета MatLab. Рассмотрим решение тестового примера для расчета углов треугольника с помощью системы Matlab. Для этого выполним следующую последовательность действий: 1. Запустим программу Matlab. 2. Нажав кнопку на панели инструментов, откроем окно редактирования программы. 3. Будем набирать программные конструкции. Самое первое действие в программе должно быть очистка экрана от предшествующих надписей. Это делается оператором clc. Затем необходимо прочитать исходные значения координат. Для координат первой вершины это можно сделать с помощью конструкций: x1=input('x1->'); y1=input('y1->');, где комбинация букв, заключенная в апострофы (одиночные кавычки), выступает в роли подсказки при вводе. Для координат остальных вершин x 2, y2, x3, y3 необходимо поступать аналогичным образом. После ввода координат необходимо выполнить вычисление квадратов сторон и самих сторон. Это можно сделать с помощью конструкций: ab2=(x2-x1)^2+(y2-y1)^2; ab=sqrt(ab2);. Здесь знаками ^2 обозначена операция возведения в квадрат, sqrt – позволяет вычислить квадратный корень. Для остальных длин сторон и их квадратов необходимо выполнить аналогичные действия. Затем следует вычислить величину угла в граудусах с долями: c=(180/pi)*acos((bc2+ac2-ab2)/(2*bc*ac));. Для вычисления остальных углов следует поступать аналогично. В последнем фрагменте множитель 180/pi необходим для перевода из радиан в градусы, а acos означает обращение к встроенной в Matlab функции. Из величин углов в градусах с долями необходимо выделить градусы, минуты и секунды с долями. Для этого следует воспользоваться конструкциями: cg=fix(c); cm=fix((c-cg)*60); csec=(c-(cg+cm/60))*3600;, где c – величина угла в градусах с долями, cg – градусы угла, cm – минуты угла, csec – секунды угла, fix – функция взятия целой части числа (отбрасывание дробной части). Для остальных углов следует поступать аналогично. После последних вычислений необходимо выдать результат на экран. Это можно сделать, указав имя переменной, в которой хранится соотвествующая вычисляемая величина, например, cg. Для вывода остальных значений следует поступать аналогично. Кроме такого способа вывода вычисленных значений возможен еще такой, когда после вычисляемого выражения не ставится точка с запятой. Это означает, что соотвествующее вычисленное значение будет выдано на экран. 4. Закончив набор, можно запускать программу на исполне- ние активизацией кнопки на панели инструментов. При этом следует перейти в окно исполнения программы, в котором будут появляться конструкции подсказок, запрограммированные в опера- торах ввода. В соответствующих строках следует производить ввод значений: x1->-3 y1->0 x2->4 и т.д. При запуске программы на исполнение и вводе данных для тестового примера получаем на экране представленный ранее ре- зультат. Если в программе обнаружатся ошибки, то необходимо устранить их причину и вновь производить запуск программы на исполнение. Решение задачи на вычисление превышения в MatLab можно произвести с использованием следующей последовательности опе- раторов: % превышение clc i1=input('i1------->'); s =input('s-------->'); v2=input('v2------->'); ng=input('nu(grad)->'); nm=input('nu(min)-->'); n=(ng+nm/60); h=s*tan(n*pi/180)+i1-v2+0.0675*(s/1000)^2 Решение задачи вычисления координат точки по формулам Юнга можно произвести с использованием следующей последова- тельности операторов: % расчет по формулам Юнга clc x1=input('x1->'); y1=input('y1->'); x2=input('x2->'); y2=input('y2->'); b1g=input('b1(grad)->'); b1m=input('b1(min)-->'); b1s=input('b1(sec)-->'); b2g=input('b2(grad)->'); b2m=input('b2(min)-->'); b2s=input('b2(sec)-->'); b1=b1g+b1m/60+b1s/3600; b2=b2g+b2m/60+b2s/3600; b1=b1*pi/180; b2=b2*pi/180; xp=(x1*cot(b2)+x2*cot(b1)-y1+y2)/(cot(b1)+cot(b2)) yp=(y1*cot(b2)+y2*cot(b1)+x1-x2)/(cot(b1)+cot(b2)) Решение задачи вычисления координат точки по формулам Гаусса можно произвести с использованием следующей последова- тельности операторов: % Расчет по формулам Гаусса clc x1 = input('x1->'); y1 = input('y1->'); x2 = input('x2->'); y2 = input('y2->'); a1g = input('a1(grag)->'); a1m = input('a1(min)->'); a2g = input('a2(grag)->'); a2m = input('a2(min)->'); a1= a1g+a1m/60; a2=a2g+a2m/60; a1= a1 * pi / 180; a2 = a2 * pi / 180; xp= (x1 * tan(a1) - x2 * tan(a2) + y2 - y1) / (tan(a1) - tan(a2)) yp= y1 + (xp-x1)*tan(a1) Решение обратной угловой засечки по формулам Пранис- Праневича можно произвести с использованием следующей после- довательности операторов: % расчет по формулам Пранис-Праневича clc x1=input ('x1, y1->'); y1=input ('x1, y1->'); x2=input ('x2, y2->'); y2=input ('x2, y2->'); x3=input ('x3, y3->'); y3=input ('x3, y3->'); alg=input ('al(grad)->'); alm=input ('al(min)-->'); beg=input ('be(grad)->'); bem=input ('be(min)-->'); al = alg + alm / 60; be = beg + bem / 60; 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); n = (y2 - y1) * (1/tan(al) - tgq) - (x2 - x1) * (1 + 1/tan(al) * tgq); dx = n / (1 + tgq ^ 2); dy = dx * tgq; xp = x2 + dx yp = y2 + dy Решение обратной геодезической задачи с помощью MatLab можно произвести с использованием следующей последовательно- сти операторов: % ОГЗ Clc x1 = input('x1->'); y1 = input('y1->'); x2 = input('x2->'); y2 = input('y2->'); al=atan((y2-y1)/(x2-x1))*180/pi; if ((x2-x1)<0) al=180+al; elseif ((y2-y1)<0) al=360+al End s=sqrt((y2-y1)^2+(x2-x1)^2) alg = fix(al) alm = ((al - alg) * 60)
|