Как найти ближайшую точку к началу координат

Сообщения без ответов | Активные темы

Автор Сообщение

zuster

Заголовок сообщения: Ближайшая точка к началу координат

СообщениеДобавлено: 08 май 2023, 14:25 

Не в сети
Начинающий


Зарегистрирован:
08 май 2023, 13:58
Сообщений: 1
Cпасибо сказано: 2
Спасибо получено:
0 раз в 0 сообщении
Очков репутации: 1

Добавить очки репутацииУменьшить очки репутации

Здравствуйте.
Как найти ближайшую точку к началу координат, если поверхность задана уравнением
[math]mathsf{z} = mathsf{a} left( mathsf{y} +1 right) div left( mathsf{x} mathsf{y} + mathsf{y} +1 right)[/math]

Вернуться к началу

Профиль  

Cпасибо сказано 

Pirinchily

Заголовок сообщения: Re: Ближайшая точка к началу координат

СообщениеДобавлено: 08 май 2023, 22:38 

Надо решать задачу :

Найти

[math]min left( sqrt{x^2+y^2+z^2} right)[/math], при удовлетворения

условия [math]z= frac{ aleft( y+1 right) }{ xy+y+1 }[/math]

Вернуться к началу

Профиль  

Cпасибо сказано 

За это сообщение пользователю Pirinchily “Спасибо” сказали:
zuster

 Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
Доказать что точка а устранимая особая точка

в форуме Комплексный анализ и Операционное исчисление

Dr_Zet

3

65

19 май 2023, 16:34

Точка

в форуме Дискуссионные математические проблемы

VIKTORVIKTOR

0

381

20 июн 2017, 10:43

Точка

в форуме Размышления по поводу и без

mihmih

48

1242

12 сен 2017, 02:08

Три Плоскости и точка

в форуме Аналитическая геометрия и Векторная алгебра

Olenka_S

8

601

09 май 2015, 15:08

Точка безубыточности

в форуме Экономика и Финансы

walker_k

0

304

01 мар 2019, 15:44

Точка и квадрат

в форуме Геометрия

Morody

6

236

26 сен 2020, 10:26

Точка из P_0 между 0.05 и 0.1

в форуме Функциональный анализ, Топология и Дифференциальная геометрия

KirillSavitsky

1

409

23 май 2015, 20:36

Особая точка и её тип

в форуме Комплексный анализ и Операционное исчисление

Over77over

1

176

24 июл 2018, 21:47

Точка экстремума

в форуме Начала анализа и Другие разделы школьной математики

VladGreen

2

283

18 мар 2018, 11:45

Точка в диапазоне

в форуме Геометрия

Kilovatra

3

136

27 авг 2021, 13:28

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

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

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

Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru

Русская поддержка phpBB

Given a list of points on the 2-D plane and an integer K. The task is to find K closest points to the origin and print them.
Note: The distance between two points on a plane is the Euclidean distance.

Examples: 

Input : point = [[3, 3], [5, -1], [-2, 4]], K = 2
Output : [[3, 3], [-2, 4]]
Square of Distance of origin from this point is 
(3, 3) = 18
(5, -1) = 26
(-2, 4) = 20
So the closest two points are [3, 3], [-2, 4].

Input : point = [[1, 3], [-2, 2]], K  = 1
Output : [[-2, 2]]
Square of Distance of origin from this point is
(1, 3) = 10
(-2, 2) = 8 
So the closest point to origin is (-2, 2)

Approach: The idea is to calculate the Euclidean distance from the origin for every given point and sort the array according to the Euclidean distance found. Print the first k closest points from the list.

Algorithm : 
Consider two points with coordinates as (x1, y1) and (x2, y2) respectively. The Euclidean distance between these two points will be: 

√{(x2-x1)2 + (y2-y1)2}
  1. Sort the points by distance using the Euclidean distance formula.
  2. Select first K points from the list
  3. Print the points obtained in any order.

Note: 

  • In multimap we can directly store the value of {(x2-x1)2 + (y2-y1)2} instead of its square root because of the following property : If sqrt(x) < sqrt(y) the x < y
  • Because of this, we have reduced the time complexity (Time complexity of the square root of an integer is O(√ n) ) 

Below is the implementation of the above approach: 

C++

#include<bits/stdc++.h>

using namespace std;

void pClosest(vector<vector<int>> pts, int k)

{

    multimap<int, int> mp;

    for(int i = 0; i < pts.size(); i++)

    {

        int x = pts[i][0], y = pts[i][1];

        mp.insert({(x * x) + (y * y) , i});

    }

    for(auto it = mp.begin();

             it != mp.end() && k > 0;

             it++, k--)

        cout << "[" << pts[it->second][0] << ", "

             << pts[it->second][1] << "]" << "n";

}

int main()

{

    vector<vector<int>> points = { { 3, 3 },

                                   { 5, -1 },

                                   { -2, 4 } };

    int K = 2;

    pClosest(points, K);

    return 0;

}

Java

import java.util.*;

class GFG{

static void pClosest(int [][]pts, int k)

{

    int n = pts.length;

    int[] distance = new int[n];

    for(int i = 0; i < n; i++)

    {

        int x = pts[i][0], y = pts[i][1];

        distance[i] = (x * x) + (y * y);

    }

    Arrays.sort(distance);

    int distk = distance[k - 1];

    for(int i = 0; i < n; i++)

    {

        int x = pts[i][0], y = pts[i][1];

        int dist = (x * x) + (y * y);

        if (dist <= distk)

            System.out.println("[" + x + ", " + y + "]");

    }

}

public static void main (String[] args)

{

    int points[][] = { { 3, 3 },

                       { 5, -1 },

                       { -2, 4 } };

    int K = 2;

    pClosest(points, K);

}

}

Python3

def pClosest(points, K):

    points.sort(key = lambda K: K[0]**2 + K[1]**2)

    return points[:K]

points = [[3, 3], [5, -1], [-2, 4]]

K = 2

print(pClosest(points, K))

C#

using System;

class GFG{

static void pClosest(int [,]pts,

                     int k)

{

  int n = pts.GetLength(0);

  int[] distance = new int[n];

  for(int i = 0; i < n; i++)

  {

    int x = pts[i, 0],

        y = pts[i, 1];

    distance[i] = (x * x) +

                  (y * y);

  }

  Array.Sort(distance);

  int distk = distance[k - 1];

  for(int i = 0; i < n; i++)

  {

    int x = pts[i, 0],

        y = pts[i, 1];

    int dist = (x * x) +

               (y * y);

    if (dist <= distk)

      Console.WriteLine("[" + x +

                        ", " + y + "]");

  }

}

public static void Main (string[] args)

{

  int [,]points = {{3, 3},

                   {5, -1},

                   {-2, 4}};

  int K = 2;

  pClosest(points, K);

}

}

Javascript

<script>

function pClosest(pts,k)

{

    let n = pts.length;

    let distance = new Array(n);

    for(let i = 0; i < n; i++)

    {

        let x = pts[i][0], y = pts[i][1];

        distance[i] = (x * x) + (y * y);

    }

    distance.sort(function(a,b){return a-b;});

    let distk = distance[k - 1];

    for(let i = 0; i < n; i++)

    {

        let x = pts[i][0], y = pts[i][1];

        let dist = (x * x) + (y * y);

        if (dist <= distk)

            document.write("[" + x + ", " + y + "]<br>");

    }

}

let points = [[3, 3], [5, -1], [-2, 4]];

let K = 2;

pClosest(points, K);

</script>

Complexity Analysis: 

  • Time Complexity: O(n log n). 
    Time complexity to find the distance from the origin for every point is O(n) and to sort the array is O(n log n)
  • Space Complexity: O(n). 
    As we are making an array to store distance from the origin for each point.

Last Updated :
03 Oct, 2022

Like Article

Save Article

Помогите с заданием пожалуйста!
Даны действительные числа x0, y0, x1, y1, x2, y2, x3, y3 . На плоскости заданы точки A(x1, y1), B(x2,y2) и C(x3, y3) . Определить, какая из этих точек является ближайшей к началу координат.

Вот мои попытки, что то не получается.. выводиться только точка С

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            double x0, y0, x1, y1, x2, y2, x3, y3, r1, r2, r3, minR;
            string min;
            x0 = 0;
            y0 = 0;
            Console.WriteLine("Точка А");
            Console.WriteLine("Введите значение x1");
            x1 = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Введите значение y1");
            y1 = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Точка B");
            Console.WriteLine("Введите значение x2");
            x2 = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Введите значение y2");
            y2 = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Точка C");
            Console.WriteLine("Введите значение x3");
            x3 = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Введите значение y3");
            y3 = Convert.ToDouble(Console.ReadLine());
            r1 = Math.Pow((Math.Pow((x0 - x1), 2) + Math.Pow((y0 - y1), 2)), 0.5);
            r2 = Math.Pow((Math.Pow((x0 - x2), 2) + Math.Pow((y0 - y2), 2)), 0.5);
            r3 = Math.Pow((Math.Pow((x0 - x3), 2) + Math.Pow((y0 - y3), 2)), 0.5);
            minR = 0;
            min = "0";
 
            if (r1 > minR)
            {
                min = "A";
            }
            if (r2 > minR)
            {
                min = "B";
            }
            if (r3 > minR)
            {
                min = "C";
            }
            if ((r1 == r2) && (r1 == minR))
            {
                min = "A,B";
            }
            if ((r2 == r3) && (r2 == minR))
            {
                min = "B,C";
            }
            if ((r1 == r3) && (r1 == minR))
            {
                min = "A,C";
            }
            if ((r1 == r2) && (r2 == r3) && (r1 == minR))
            {
                min = "A,B,C";
            }
            Console.WriteLine("Ответ:");
            Console.WriteLine("Наименьшее расстояние до начала координат от точки " + min);
            Console.ReadKey();
        }
    }
}

Visual studio c# 2010 express

Код к задаче: «Найти ближайшую точку к началу координат»

junk1114

Найти ближайшую точку в системе координат?

Есть таблица в БД с координатами в формате 55.888755,37.430337 и сами заданные координаты в таком же формате. Как найти ближайшие координаты к заданным координатам? Интересен сам алгоритм, а не код конечно=)


  • Вопрос задан

    более трёх лет назад

  • 7757 просмотров

1) Берем массив с точками
2) Берем заданную точку
3) Находим расстояние между точками
4) ???
5) Profit!!1

PS
По ссылке формула для координат на плоскости. Если нужно с учетом искривления земли -> гугл.

Пригласить эксперта

Напишу алгоритм “в лоб”.
Пройтись по каждой точке в БД – найти расстояние между двумя точками (между заданной точкой и точкой в базе);
Среди этих значений найти минимальное.

Если точек много (очень много), то поиск можно сузить применяя сравнение по hashcode.


  • Показать ещё
    Загружается…

23 мая 2023, в 20:04

7000 руб./за проект

23 мая 2023, в 19:34

10000 руб./за проект

23 мая 2023, в 19:03

750 руб./за проект

Минуточку внимания

Добавить комментарий