Добро пожаловать!

Войдите или зарегистрируйтесь сейчас!

Войти

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

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

  1. lbvfy523

    Форумчанин

    Регистрация:
    6 ноя 2020
    Сообщения:
    66
    Симпатии:
    4
    вот.
     

    Вложения:

    #61
  2. zvezdochiot

    Форумчанин

    Регистрация:
    27 июн 2014
    Сообщения:
    5.913
    Симпатии:
    2.090
    Адрес:
    г. Москва
    Завтра разберёмся.
     
    #62
  3. zvezdochiot

    Форумчанин

    Регистрация:
    27 июн 2014
    Сообщения:
    5.913
    Симпатии:
    2.090
    Адрес:
    г. Москва
    Полная каша:

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

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

    Форумчанин

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

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

    Вложения:

    #64
  5. zvezdochiot

    Форумчанин

    Регистрация:
    27 июн 2014
    Сообщения:
    5.913
    Симпатии:
    2.090
    Адрес:
    г. Москва
    Уже сказали же:

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

    Форумчанин

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

    Вложения:

    #66
  7. zvezdochiot

    Форумчанин

    Регистрация:
    27 июн 2014
    Сообщения:
    5.913
    Симпатии:
    2.090
    Адрес:
    г. Москва
    Только непонятно, почему в MathCAD ты делаешь вычисления вниз, а в Excel почему то вбок? "Удобства" причиняешь себе на пустом месте.

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

    Форумчанин

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

    Форумчанин

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

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

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

    Форумчанин

    Регистрация:
    6 ноя 2020
    Сообщения:
    66
    Симпатии:
    4
    А вот об этом можно подробнее? Что это, и с чем это "едят"? Я вообще не в курсе.
     
    #70
  11. zvezdochiot

    Форумчанин

    Регистрация:
    27 июн 2014
    Сообщения:
    5.913
    Симпатии:
    2.090
    Адрес:
    г. Москва
    #71
  12. zvezdochiot

    Форумчанин

    Регистрация:
    27 июн 2014
    Сообщения:
    5.913
    Симпатии:
    2.090
    Адрес:
    г. Москва
    Ежели нужен визуальный редактор формул, то вот: http://primat.org/mathred/mathred.html . Поможет набрать сами формулы, но генерить SVG по ссылке выше.

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

    Форумчанин

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

    Форумчанин

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

    Форумчанин

    Регистрация:
    5 янв 2011
    Сообщения:
    978
    Симпатии:
    905
    Адрес:
    Москва
    Небольшой оффтоп.
    Недавно мне понадобилось считать угол возвышения и азимут на геостационарные спутники. Задача намного проще, чем ПГЗ на эллипсоиде, но даже в этом случае стал путаться в разных колонках, решение получается одноразовым для конкретного файла. В результате сделал пользовательские функции на 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
     
    #75
  16. zvezdochiot

    Форумчанин

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

    Форумчанин

    Регистрация:
    5 янв 2008
    Сообщения:
    4.172
    Симпатии:
    11.936
    Адрес:
    Златоглавая и Белокаменная
    Application.Atan2
     
    #77
    chnav нравится это.
  18. lbvfy523

    Форумчанин

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

    Вложения:

    #78
  19. stout

    Форумчанин

    Регистрация:
    5 янв 2008
    Сообщения:
    4.172
    Симпатии:
    11.936
    Адрес:
    Златоглавая и Белокаменная
    https://geographiclib.sourceforge.i...8&flattening=1/308.924749325849&option=Submit
     
    #79
  20. stout

    Форумчанин

    Регистрация:
    5 янв 2008
    Сообщения:
    4.172
    Симпатии:
    11.936
    Адрес:
    Златоглавая и Белокаменная

    Вложения:

    #80

Поделиться этой страницей

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