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

Тема в разделе "Помощь студентам", создана пользователем lbvfy523, 6 ноя 2020.

  1. lbvfy523

    lbvfy523 Форумчанин

    вот.
     

    Вложения:

  2. zvezdochiot

    zvezdochiot Форумчанин

    Завтра разберёмся.
     
  3. zvezdochiot

    zvezdochiot Форумчанин

    Полная каша:

    "Обр. задача. Бессель 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')

    Чего то явно не хватает.
     
    chnav нравится это.
  4. lbvfy523

    lbvfy523 Форумчанин

    Итак, подведём итоги на сегодняшний день:
    Вот "причёсаный" вариант решения. (файл прикладываю)
    Как заявлено в методичке, цитата:..."При вычислении по приведенным алгоритмам расхождения результатов пр]ямой и обратной задач не превышают 1 мм в координатах и длине геодезической линии и 0,001`` в азимутах."...
    Проанализировав полученные результаты, пришел к следующим выводам:
    Такой точности я не добился, так как, например, направление азимута из А на В, по логике должно быть 90°, на деле я получил 89,9966134210212 градусов, что соответствует 89°59`47``808. Расхождение (с моей логикой) составляет почти 13``, - многовато. Вывод: в решении есть существенные ошибки.
    Что намереваюсь сделать:
    В исходных данных у нас есть 4 точки координаты которых заданы в угловых мерах. Для последующих вычислений перевести заданные угловые меры в радианы и уже с ними спокойно проводить вычисления. Полученные результаты (азимуты) перевести в угловые меры при заполнении таблицы. Это должно уменьшить вероятность ошибок при наборе формул.

    И всё таки, если можно, объясните мне какое значение сигма применять в дальнейших расчётах (я так и не разобрался):
    Какое значение использовать.PNG
     

    Вложения:

  5. zvezdochiot

    zvezdochiot Форумчанин

    Уже сказали же:

    sigma=ATAN2('cos(sigma)';`sin(sigma)`)
    => (-ПИ()..ПИ())
     
  6. lbvfy523

    lbvfy523 Форумчанин

    Всё, разобрался как "оно" работает.
    Маткад я лучше понимаю чем Ёксель, поэтому добился ОТЛИЧНОГО результата в маткаде. (фай с решением в маткаде приложил)
    Теперь и в Ёкселе не трудно будет всё сделать правильно.
     

    Вложения:

  7. zvezdochiot

    zvezdochiot Форумчанин

    Только непонятно, почему в MathCAD ты делаешь вычисления вниз, а в Excel почему то вбок? "Удобства" причиняешь себе на пустом месте.

    PS: Совет: Не используй имя (e'), будь проще, например (ee).
     
  8. lbvfy523

    lbvfy523 Форумчанин

    А я и сам не знаю почему. Так привык наверное.
    --- Сообщения объединены, 11 ноя 2020, Оригинальное время сообщения: 11 ноя 2020 ---
    Я в своём блокноте могу вообще арабским шрифтом кодироваться. Вот только те люди кто будут по методичке сверять результат, как будут понимать, что е` закодирована в ее?
    Я уже писал, что стараюсь не отклоняться от методички иначе следующим будет очень трудно разобраться, что и откуда взялось.
    В файле Эксель все ячейки с формулами скрою и закодирую. этот файл будет предназначен для того, чтоб студент (или любой другой человек) мог сверить свое решение с моим "правильным" и не мог сказать, что в Экселе решить эту задачу невозможно.
    Хочу сказать, что Решение этой задачи методом Бесселя, даёт ОТЛИЧНЫЙ результат, при этом желательная точность результатов может задаваться в очень широких пределах.
     
  9. zvezdochiot

    zvezdochiot Форумчанин

    В этом и "прикол", что "имена" (метки диапазонов, уже как звучит) в Excel (особенно такие, ты бы ещё запятую использовал) иногда (не всегда) сбоят. Проявляется это на разных версиях офиса по разному. Но решай сам.

    PS: Менее плохо пользовать абсолютный адрес ячейки, например $D$4.

    PS2: Вместо растровых формул, менее плохо воспользоваться каким-либо онлайн сервисом на базе TeX, для генерации формул в формате SVG.
     
  10. lbvfy523

    lbvfy523 Форумчанин

    А вот об этом можно подробнее? Что это, и с чем это "едят"? Я вообще не в курсе.
     
  11. zvezdochiot

    zvezdochiot Форумчанин

  12. zvezdochiot

    zvezdochiot Форумчанин

    Ежели нужен визуальный редактор формул, то вот: http://primat.org/mathred/mathred.html . Поможет набрать сами формулы, но генерить SVG по ссылке выше.

    SVG спокойно вставляется в любой офисный документ и при этом остаётся именно векторным. Более того, в случае необходимости, ты всегда можешь "подправлять" SVG в блокноте.
     
  13. chnav

    chnav Форумчанин

    Формула для нормализации любого угла в диапазон 0-360° (0-2*Pi), никаких IF и двойных вычислений:
    В градусах
    Код:
    =MOD(DEGREES(ATAN2(A1,B1)),360)
    В радианах
    Код:
    =MOD(ATAN2(A1,B1),2*PI())
     
    zvezdochiot и Самстон нравится это.
  14. zvezdochiot

    zvezdochiot Форумчанин

    Слегка погорячился. Не каждый SVG будет хорошо отображаться. Результат первого генератора (https://geodesist.ru/threads/prjama...itm-sposoba-besselja.85912/page-4#post-977648) меня не впечатлил совсем (после вставки в документ). Гораздо краше получилось с https://www.geogebra.org/m/j8bx2s9x .
    --- Сообщения объединены, 12 ноя 2020, Оригинальное время сообщения: 12 ноя 2020 ---
    И всё таки в радианах принято от -ПИ до ПИ. И на то есть вполне логичные математические основания (зеркальность).
     
  15. chnav

    chnav Форумчанин

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

    Но есть и минусы - в VBA очень ограниченный список математических функций, даже atan2 пришлось делать из atan.

    Код 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
     
  16. zvezdochiot

    zvezdochiot Форумчанин

    Оффтоп
    VBA - в принципе неплохой механизм, но история у него грязная. И забывать об этом не стоит. Все наименования ("макрос", "пользовательская функция",...) VBA позаимствовал из совершено другого механизма - Листов Макросов. При этом VBA преподнесли как некое достижение, в то время как "Листы Макросов", полностью соответствующие структуре Excel и абсолютно гармонирующие с ним, вырезали. Но даже ёжику понятно, что вот в таких вещах "пользовательские функции", написанные на "Листах Макросов" были бы гораздо удобнее и лаконичней.
     
  17. stout

    stout Форумчанин

    Application.Atan2
     
    chnav нравится это.
  18. lbvfy523

    lbvfy523 Форумчанин

    Сделал расчёт по второму алгоритму Бесселя (сам файл ещё не "причёсывал). Прошу просто проверить, правильно ли расчитываются азимуты и расстояния (просто скажите правильно или нет). Если не правильно - буду искать ошибки.
     

    Вложения:

  19. stout

    stout Форумчанин

    https://geographiclib.sourceforge.i...8&flattening=1/308.924749325849&option=Submit
     
  20. stout

    stout Форумчанин

    Вложения:

  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление