2014 dxdy logo

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

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




На страницу 1, 2, 3, 4  След.
 
 Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 14:13 
Математику не знал, а сейчас и забыл. Но понадобилось решить прикладную задачу:
Код:
Плоскость задана 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 
гуглите расстояние от точки до плоскости в декартовых координатах -- громоздкая формула из справочника

 
 
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 14:43 
drzewo
так я так и делаю. в эксель G14 =(C20*I2+D20*I3+E20*I4)/КОРЕНЬ(C20*C20+D20*D20+E20*E20)
и везде разные ответы

 
 
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 14:49 
Расстояние от точки $(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 
Аватара пользователя
drzewo
ТС примерно это и делает. И чат-боты это же делают, но по шагам.

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

 
 
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 14:54 
EUgeneUS в сообщении #1679436 писал(а):
Уж очень мало векторы отличаются друг от друга.

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

 
 
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 15:07 
Но извините треугольник 4-5-6 далек от вырождения , он почти равнобедренный со сторонами ~ 1300 1300 160 . Просто плоскость задана миллионными координатами . Извините меньше не могу, Земля большая в метрах))

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

 
 
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 19:24 
Аватара пользователя
nayka в сообщении #1679440 писал(а):
Может есть спец решения , где не накапливается ошибка?

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

 
 
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 19:59 
мат-ламер
Спасибо, за совет, я наверное буду двигаться в эту сторону.
Для меня было шоком, что 3 разные нейросети дают три разных ответа ! 4 ответ дает Эксель, который считает до 16 знака после запятой ! Я где-то читал, что граница Солнечной системы считается с точностью до атома, если в ПИ точно в 16 знаков.
Не могла же моя случайная точка C создать такой вырожденный треугольник (так если специально. то и то заморочиться нужно

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

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 
Аватара пользователя
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 
Аватара пользователя

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

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

 
 
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 21:08 
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 
Аватара пользователя
wrest в сообщении #1679480 писал(а):
Установить точность расчета 32 знака.

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

 
 
 
 Re: Нормаль к пл-ти: три разных результата. Где я ошибаюсь?
Сообщение21.03.2025, 22:09 
Ну в общем если мой калькулятор не врёт, то ответ 268.88015208 :mrgreen:
Так что с экселем все в порядке...

 
 
 [ Сообщений: 48 ]  На страницу 1, 2, 3, 4  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group