Полная каша: "Обр. задача. Бессель 1" Y4: =M4+N4*COS(T4) AP4: =IF(AND(AN4>=0;AO4>=0);180+ABS(ATAN(AN4/AO4));IF(AND(AN4<0;AO4<0);ABS(ATAN(AN4/AO4));IF(AND(AN4>=0;AO4<0);360-ABS(ATAN(AN4/AO4));180-ABS(ATAN(AN4/AO4))))) Ну ты либо только радианы (-ПИ()..ПИ()), либо всегда градусы (0..360) пользуй. Но не сборную солянку. AJ4: =b*(e') AK4: =b*(e') Чего то явно не хватает.
Итак, подведём итоги на сегодняшний день: Вот "причёсаный" вариант решения. (файл прикладываю) Как заявлено в методичке, цитата:..."При вычислении по приведенным алгоритмам расхождения результатов пр]ямой и обратной задач не превышают 1 мм в координатах и длине геодезической линии и 0,001`` в азимутах."... Проанализировав полученные результаты, пришел к следующим выводам: Такой точности я не добился, так как, например, направление азимута из А на В, по логике должно быть 90°, на деле я получил 89,9966134210212 градусов, что соответствует 89°59`47``808. Расхождение (с моей логикой) составляет почти 13``, - многовато. Вывод: в решении есть существенные ошибки. Что намереваюсь сделать: В исходных данных у нас есть 4 точки координаты которых заданы в угловых мерах. Для последующих вычислений перевести заданные угловые меры в радианы и уже с ними спокойно проводить вычисления. Полученные результаты (азимуты) перевести в угловые меры при заполнении таблицы. Это должно уменьшить вероятность ошибок при наборе формул. И всё таки, если можно, объясните мне какое значение сигма применять в дальнейших расчётах (я так и не разобрался):
Всё, разобрался как "оно" работает. Маткад я лучше понимаю чем Ёксель, поэтому добился ОТЛИЧНОГО результата в маткаде. (фай с решением в маткаде приложил) Теперь и в Ёкселе не трудно будет всё сделать правильно.
Только непонятно, почему в MathCAD ты делаешь вычисления вниз, а в Excel почему то вбок? "Удобства" причиняешь себе на пустом месте. PS: Совет: Не используй имя (e'), будь проще, например (ee).
А я и сам не знаю почему. Так привык наверное. --- Сообщения объединены, 11 ноя 2020, Оригинальное время сообщения: 11 ноя 2020 --- Я в своём блокноте могу вообще арабским шрифтом кодироваться. Вот только те люди кто будут по методичке сверять результат, как будут понимать, что е` закодирована в ее? Я уже писал, что стараюсь не отклоняться от методички иначе следующим будет очень трудно разобраться, что и откуда взялось. В файле Эксель все ячейки с формулами скрою и закодирую. этот файл будет предназначен для того, чтоб студент (или любой другой человек) мог сверить свое решение с моим "правильным" и не мог сказать, что в Экселе решить эту задачу невозможно. Хочу сказать, что Решение этой задачи методом Бесселя, даёт ОТЛИЧНЫЙ результат, при этом желательная точность результатов может задаваться в очень широких пределах.
В этом и "прикол", что "имена" (метки диапазонов, уже как звучит) в Excel (особенно такие, ты бы ещё запятую использовал) иногда (не всегда) сбоят. Проявляется это на разных версиях офиса по разному. Но решай сам. PS: Менее плохо пользовать абсолютный адрес ячейки, например $D$4. PS2: Вместо растровых формул, менее плохо воспользоваться каким-либо онлайн сервисом на базе TeX, для генерации формул в формате SVG.
Ежели нужен визуальный редактор формул, то вот: http://primat.org/mathred/mathred.html . Поможет набрать сами формулы, но генерить SVG по ссылке выше. SVG спокойно вставляется в любой офисный документ и при этом остаётся именно векторным. Более того, в случае необходимости, ты всегда можешь "подправлять" SVG в блокноте.
Формула для нормализации любого угла в диапазон 0-360° (0-2*Pi), никаких IF и двойных вычислений: В градусах Код: =MOD(DEGREES(ATAN2(A1,B1)),360) В радианах Код: =MOD(ATAN2(A1,B1),2*PI())
Слегка погорячился. Не каждый SVG будет хорошо отображаться. Результат первого генератора (https://geodesist.ru/threads/prjama...itm-sposoba-besselja.85912/page-4#post-977648) меня не впечатлил совсем (после вставки в документ). Гораздо краше получилось с https://www.geogebra.org/m/j8bx2s9x . --- Сообщения объединены, 12 ноя 2020, Оригинальное время сообщения: 12 ноя 2020 --- И всё таки в радианах принято от -ПИ до ПИ. И на то есть вполне логичные математические основания (зеркальность).
Небольшой оффтоп. Недавно мне понадобилось считать угол возвышения и азимут на геостационарные спутники. Задача намного проще, чем ПГЗ на эллипсоиде, но даже в этом случае стал путаться в разных колонках, решение получается одноразовым для конкретного файла. В результате сделал пользовательские функции на VBA, что оказалось намного проще и в написании, и в отладке. Но есть и минусы - в VBA очень ограниченный список математических функций, даже atan2 пришлось делать из atan. Код ATN2 для VBA (Наведите курсор, чтобы раскрыть содержимое) Код ATN2 для VBA (раскрыть) Код ATN2 для VBA (свернуть) Код: Function atn2(x As Double, y As Double) Rem https://en.wikipedia.org/wiki/Atan2 Pi = 3.14159265358979 If x = 0 Then If y = 0 Then ret = y / 0# ElseIf y > 0 Then ret = Pi / 2 Else ret = -Pi / 2 End If ElseIf x > 0 Then ret = Atn(y / x) ElseIf y >= 0 Then ret = Atn(y / x) + Pi Else ret = Atn(y / x) - Pi End If atn2 = ret End Function
Оффтоп (Move your mouse to the spoiler area to reveal the content) VBA - в принципе неплохой механизм, но история у него грязная. И забывать об этом не стоит. Все наименования ("макрос", "пользовательская функция",...) VBA позаимствовал из совершено другого механизма - Листов Макросов. При этом VBA преподнесли как некое достижение, в то время как "Листы Макросов", полностью соответствующие структуре Excel и абсолютно гармонирующие с ним, вырезали. Но даже ёжику понятно, что вот в таких вещах "пользовательские функции", написанные на "Листах Макросов" были бы гораздо удобнее и лаконичней.
Сделал расчёт по второму алгоритму Бесселя (сам файл ещё не "причёсывал). Прошу просто проверить, правильно ли расчитываются азимуты и расстояния (просто скажите правильно или нет). Если не правильно - буду искать ошибки.
Vincenty's Direct and Inverse Solution of Geodesics on the Ellipsoid - Excel VBA implementation По недоразумению параметры эллипсоида жёстко прошиты в программу на VBA. Исправил на ваши параметры. В oline calculator ошибка при вычислении обратного азимута