2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему На страницу 1, 2, 3, 4  След.
 
 Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 14:13 


21/03/25
15
Математику не знал, а сейчас и забыл. Но понадобилось решить прикладную задачу:
Код:
Плоскость задана 3 точками  A B O 
3593587.80504039,1579311.28483578,5010324.36037068
3593666.69246004,1579366.81848950,5010459.46536822
0,0,0 
Как найти наименьшее расстояние (нормаль) от точки С  3594339.74426106,1578212.18134087,5010132.60367774 до плоскости.


Вот тестовые точки, где я был ошарашен большой разницей между наклонным расстоянием и горизонтальным проложением. (1335>>268)
https://imgur.com/a/i7mlfR5
https://cloud.mail.ru/public/8gqQ/UFFxczTUC[
Ладно думаю я, в очередной раз накосячил. Спрошу китайца:
https://cloud.mail.ru/public/MTjt/XmCmm4umU
https://cloud.mail.ru/public/Cymp/SxGrvbXtL
как же так не определена ?? тут обычный не вырожденный треугольник
ладно думаю, спрошу у американца:
https://cloud.mail.ru/public/n44n/55Drpx8EA
https://cloud.mail.ru/public/bqdL/4oCgFR9wm
Везде разные ответы . 107 метров? хотя автокад все вычисляет! и дает более менее правду (наверное)
https://cloud.mail.ru/public/tZMB/mKrefgyiS

Вот мои вычисления в эксель.
https://cloud.mail.ru/public/2waP/Q2CmsapHi
Где правда. И почему все врут?

 Профиль  
                  
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 14:15 


21/12/16
1390
гуглите расстояние от точки до плоскости в декартовых координатах -- громоздкая формула из справочника

 Профиль  
                  
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 14:43 


21/03/25
15
drzewo
так я так и делаю. в эксель G14 =(C20*I2+D20*I3+E20*I4)/КОРЕНЬ(C20*C20+D20*D20+E20*E20)
и везде разные ответы

 Профиль  
                  
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 14:49 


21/12/16
1390
Расстояние от точки $(x_0,y_0,z_0)$ до плоскости $ax+by+cz+d=0$ вычисляется по формуле
$$\frac{|ax_0+by_0+cz_0+d|}{\sqrt{a^2+b^2+c^2}}$$
перед этим найдите $a,b,c,d$ используя то, что плоскость проходит через три заданные точки

 Профиль  
                  
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 14:52 
Аватара пользователя


11/12/16
14679
уездный город Н
drzewo
ТС примерно это и делает. И чат-боты это же делают, но по шагам.

ИМХО тут проблема с точностью вычислений. Уж очень мало векторы отличаются друг от друга.

 Профиль  
                  
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 14:54 


21/12/16
1390
EUgeneUS в сообщении #1679436 писал(а):
Уж очень мало векторы отличаются друг от друга.

это, конечно, может быть источником ошибок

 Профиль  
                  
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 15:07 


21/03/25
15
Но извините треугольник 4-5-6 далек от вырождения , он почти равнобедренный со сторонами ~ 1300 1300 160 . Просто плоскость задана миллионными координатами . Извините меньше не могу, Земля большая в метрах))

Может есть спец решения , где не накапливается ошибка? Не думаю, что я один столкнулся с таким (3 точки плоскости, одна в центре земли, две других в 160 метрах от друг друга на поверхности Земли и я в 1600 метров от этой плоскости. И мне фигню 3 раза разную дает (т.е. экстремальные значения в вычислениях 160 метров и 5 млн. метров не так сильно отличаются, чтоб давать/накапливать ошибку если считает эксель, а там 16 знаков после запятой ... или я ошибаюсь?

 Профиль  
                  
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 19:24 
Заслуженный участник
Аватара пользователя


30/01/09
7259
nayka в сообщении #1679440 писал(а):
Может есть спец решения , где не накапливается ошибка?

А не так уж много действий нужно сделать для получения ответа. Ошибка просто не успеет накопиться. Поэтому разные методы должны давать (ИМХО) примерно одинаковую ошибку. Другое дело, что она может быть не мала. Во-первых, треугольник $AOB$ близкий к вырожденному. Во-вторых, он может быть виден под достаточно острым углом. В-третьих, даже если расстояние до плоскости определили более-менее точно, в определении ближайшей точки могут быть большие расхождения. Это свойства самой задачи. Можно попробовать решать так. Наша плоскость натянута на два вектора. Следовательно, любую точку на ней можно задать двумя параметрами. Дальше минимизируем функцию квадрата расстояния от произвольной точки плоскости до точки $C$ . Приравняв производные к нулю, получаем систему двух уравнений. Но не уверен, что мы тут получим большую точность. Но хотя бы сможем её оценить (по числу обусловленности матрицы системы).

 Профиль  
                  
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 19:59 


21/03/25
15
мат-ламер
Спасибо, за совет, я наверное буду двигаться в эту сторону.
Для меня было шоком, что 3 разные нейросети дают три разных ответа ! 4 ответ дает Эксель, который считает до 16 знака после запятой ! Я где-то читал, что граница Солнечной системы считается с точностью до атома, если в ПИ точно в 16 знаков.
Не могла же моя случайная точка C создать такой вырожденный треугольник (так если специально. то и то заморочиться нужно

 Профиль  
                  
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 20:18 
Аватара пользователя


11/12/16
14679
уездный город Н
мат-ламер
Вы совсем про другое пишите.

nayka в сообщении #1679427 писал(а):
3593587.80504039,1579311.28483578,5010324.36037068
3593666.69246004,1579366.81848950,5010459.46536822
0,0,0


Приведены значения с точностью до 15 знаков. При этом, по каждой координате разница возникает в 5-6 значащем знаке.

1. Если мы считаем с точностью до 15 знаков, то
а) Вы правильно заметили: ошибка не накапливается.
б) она и будет возникать около 15 знака.
то есть проблема вообще не в "точности".

2. Проблема совсем в другом.
А именно в представлении чисел в компутере, который это всё и считает. Если считается всё в float, то под мантиссу может быть отведено недостаточно разрядов.

ИМХО, тут надо расчеты переводить в вычисления в "интах" с подходящей размерностью. Благо, размерность не сильно большая.

 Профиль  
                  
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 20:25 
Аватара пользователя


26/05/12
1786
приходит весна?
nayka, ваша основная проблема в том, что ваши "калькуляторы" используют значительно меньшую разрядность при вычислениях, чем не обходимо для получения точного результата с такими близкими значениями координат точек. Как решить эту проблему? Очевидно же: сделать координаты точек максимально различными!

Вычте в столбик координаты первой точки (точки A) из координат второй (точки B) и третьей (точки С), а дальше считайте любым из ваших методов (или всеми тремя для убедительности). Производимая над точкой C операция равносильно её переносу на вектор, лежащий в плоскости, расстояние до которой от этой точки вычисляется, и, очевидно, это расстояние не меняет. Добавление/вычитание вектора OA к/из вектора OB не меняет векторное произведение этих двух векторов, которое нужно для вычисления нормали к плоскости. При этом проделываемые операции убирают из обрабатываемых векторов схожесть старших битов мантиссы величин, в результате чего разности в процессе вычисления перестают быть столь неточными (или вообще равными нулю) даже при очень низкой разрядности представления чисел.

Я даже помогу вам с этим первым этапом (только вы проверьте, вдруг я обсчитался):
Код:
Плоскость задана 3 точками A, B и O. Найти наименьшее расстояние (нормаль) от точки С до плоскости:
A: 3593587.80504039, 1579311.28483578, 5010324.36037068
B: 0000078.88741965, 0000055.53365372, 0000135.10499754
C: 0000751.93922067,-0001099.10349491,-0000191.75669294
O: 0000000.00000000, 0000000.00000000, 0000000.00000000

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

 Профиль  
                  
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 20:33 
Аватара пользователя


11/12/16
14679
уездный город Н

(это мне напоминает индо-пакистанский инцидент)

В книге "Быстрое тестирование", Роберт Калбертсон, Крис Браун, Гэри Кобб.
Приводится такой пример, на тему адекватности тест-кейсов.
Кто-то из авторов работал над переводом метеорологической системы с 32 битов на 64 бита.
Для проверки корректности перехода заказчик предоставил около 20 тест-кейсов.
Все они проходили, кроме одного.
При детальном разбирательстве выяснилось, что этот тест-кейс на изначальной 32-битной системе приводил к переполнению, а на 64-битной - нет.
Но заказчик не принимал работы без прохождения всех тест-кейсов. Подрядчику пришлось вставлять залипуху вида "если на 32-битной системе тут бы возникло переполнение, то мы его эмулируем"
:mrgreen: :mrgreen: :mrgreen:

 Профиль  
                  
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 21:08 


05/09/16
12370
nayka
Попробуйте спросить так:
Установить точность расчета 32 знака.
Плоскость задана 3 точками:
A=(3593587.80504039,1579311.28483578,5010324.36037068)
B=(3593666.69246004,1579366.81848950,5010459.46536822)
O=(0,0,0)
Найти расстояние от точки С =(3594339.74426106,1578212.18134087,5010132.60367774) до плоскости ABO.

 Профиль  
                  
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 22:03 
Заслуженный участник
Аватара пользователя


30/01/09
7259
wrest в сообщении #1679480 писал(а):
Установить точность расчета 32 знака.

Оно, конечно, интересно. Только исходные данные у нас заданы с сильно большей погрешностью (правда, неясно какой). Чего-то у меня сомнения, что это поможет. Хотя в плане получения стабильного результата, то, может быть.

 Профиль  
                  
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 22:09 


05/09/16
12370
Ну в общем если мой калькулятор не врёт, то ответ 268.88015208 :mrgreen:
Так что с экселем все в порядке...

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 48 ]  На страницу 1, 2, 3, 4  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: vicvolf


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group