Геометрия: скалярные и векторные произведения
Для удобства необходимо создать классы для хранения базовых примитивов (точка, вектор, отрезок, прямая) и определить необходимые для них операторы.
Упражнения
A: Расстояние между двумя точками
0 0
1 1
1.4142135623730951
B: Полярный угол точки
0.982793723247329
C: Угол между векторами
Даны четыре числа: координаты двух невырожденных векторов.
2 1
3 5
0.5667292175235064
3 3
-3 -3
3.141592653589793
D: Площадь треугольника
Даны координаты трёх точек, которые могут лежать на одной прямой и даже совпадать.
1 0
2 4
5 2
0 0
0 0
0 0
E: Классификация векторов
Даны четыре числа: координаты двух ненулевых векторов. Если эти вектора коллинеарны, выведите 1. Если эти вектора перпендикулярны, выведите 2. Иначе выведите 0.
1 1
2 2
0 1
1 0
1 2
2 1
F: Три точки
Программа получает на вход шесть чисел: координаты трех точек.
0 0
1 1
2 2
G: Принадлежность точки лучу
Программа получает на вход шесть чисел: координаты точки и координаты начала и конца вектора. Проверьте, принадлежит ли данная точка лучу, задаваемому данным вектором.
1 6
3 7
5 8
H: Принадлежность точки отрезку
Программа получает на вход шесть чисел: координаты точки и координаты концов отрезка. Проверьте, принадлежит ли данная точка данному отрезку.
3 3
1 2
5 4
I: Расстояние от точки до луча
Дано шесть чисел: координаты точки, координаты начала и конца вектора.
2 1
1 1
0 2
J: Расстояние от точки до отрезка
Дано шесть чисел: координаты точки и координаты двух концов отрезка.
0 4
2 3
2 5
K: Принадлежит ли точка углу
Дан угол AOB (O — вершина угла, A и B — точки на сторонах) и точка P. Определите, принадлежит ли точка P углу AOB (включая его стороны: лучи OA и OB).
Программа получает на вход координаты точек A, O, B, P. Все координаты — целые, не превосходят 100 по модулю. Точки A, O, B не лежат на одной прямой.
0 1
0 0
1 0
1 1
1 0
0 0
0 1
-1 -1
L: Пересекаются ли два луча
Даны два луча: AB и CD (A и C — вершины лучей, B и D лежат на лучах). Проверьте, пересекаются ли они.
Программа получает на вход координаты точек A, B, C, D. Все координаты — целые, не превосходят 100 по модулю.
0 1
1 2
1 -1
1 0
0 0
1 0
0 1
1 2
M: Пересекаются ли два отрезка
Даны два отрезка AB и CD. Проверьте, пересекаются ли они.
Программа получает на вход координаты точек A, B, C, D. Все координаты — целые, не превосходят 100 по модулю.
5 1
2 6
1 1
7 8
Угол между векторами
Формат ввода
Четыре числа — координаты двух ненулевых векторов.
Формат вывода
Одно число — величина неориентированного угла между ними с точностью до пятого знака после запятой
Ввод
2 1 3 5
Вывод
0.56672921752350635000
1 2 3 4 5 6 7 8 9 10 11
import math x1,y1,x2,y2 = map(int,input().split()) t = (x1*x2+y1*y2)/(((x1*x1+y1*y1)**0.5)*((x2*x2+y2*y2)*0.5)) if t 0: t = -t q = 1.5707963267 - round(math.acos(t),6) w = round(math.acos(t),6) if q w: print(q) else: print(w)
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Евклидово расстояние между векторами
Реализовать функцию, которая принимает координаты двух заданных n векторов и возвращать расстояние.

Расчет кодового расстояния между векторами
Разработайте на Python функцию codedist (a, b), где a, b — битовые строки произвольной длины.
Угол между векторами
Входные данные Четыре числа — координаты двух невырожденных (т.е. ненулевых) векторов. .
Даны 2 стороны и угол между ними и 2 стороны и угол. являются ли эти треугольники равными?
Даны две стороны а1, b1 и угол между ними alpha1 одного треугольника, две стороны a2, b2 и угол.
Поиск угла между векторами
написать алгоритм поиска угла между векторами в пространстве r2
291 / 193 / 104
Регистрация: 14.11.2017
Сообщений: 489

Сообщение было отмечено Abricos47 как решение
Решение
1 2 3 4 5 6 7 8
from math import sqrt, acos ax, ay, bx, by = map(int, input().split()) ma = sqrt(ax * ax + ay * ay) mb = sqrt(bx * bx + by * by) sc = ax * bx + ay * by res = acos(sc / ma / mb) print("".format(res=round(res, 5)))
найти угол между вектором и осями координат

Полностью задача звучит так — построить плоскость по трем точкам и найти ее угол с осями координат. Для решения я строю нормаль к плоскости, нормирую ее и беру арксинус как написали в посте
Но то, что получается мало похоже на правду. Что я делаю не так?
import numpy as np import math import plotly.graph_objs as go points = [[6.5612, 5.3440, 2.4175], [1.2279, 6.1946, 4.5744], [9.1216, 9.3959, 2.6394]] p0, p1, p2 = points x0, y0, z0 = p0 x1, y1, z1 = p1 x2, y2, z2 = p2 ux, uy, uz = u = [x1-x0, y1-y0, z1-z0] vx, vy, vz = v = [x2-x0, y2-y0, z2-z0] u_cross_v = [uy*vz-uz*vy, uz*vx-ux*vz, ux*vy-uy*vx] n = np.cross(u, v) point = np.array(p0) normal = np.array(u_cross_v) nn = (points[1] + normal) d = -point.dot(normal) xx, yy = np.meshgrid(range(10), range(10)) zz = (-normal[0] * xx - normal[1] * yy - d) * 1. / normal[2] fig = go.Figure() fig.add_trace(go.Surface(z=zz, opacity=0.5)) fig.add_trace(go.Scatter3d(x=[x0, x1, x2], y=[y0, y1, y2], z=[z0, z1, z2], mode="lines", opacity=1.0)) fig.add_trace(go.Scatter3d(x=[nn[0], x1], y=[nn[1], y1], z=[nn[2], z1], mode="lines", opacity=1.0)) fig.show() nn = n / np.linalg.norm(n) angles = np.abs(np.arcsin(nn)) print("angles", angles) v=[] for i in angles: a=i * 180 / math.pi v.append(a) print("angles", v)
Результат angles [19.08435917574169, 14.857700717809104, 65.44817677698197]
(Решено) даны два вектора одинакового размера. найдите косинус угла между векторами , евклидово расстояние между векторами на python…
Внимание! Ответы искусственного интеллекта могут быть неточными. Не полагайтесь на них в медицине, юриспруденции, финансах и вопросах безопасности. При принятии важных решений всегда консультируйтесь с профильными специалистами.
Администрация сайта не несет ответственности за любой автоматически созданный контент. Если вы обнаружили ошибки, пожалуйста, сообщите об этом через кнопку «репорт» внизу ответа и мы примем соответствующие меры. Спасибо за вашу помощь в улучшении качества нашего сервиса.
Ответ нейросети:
Для нахождения косинуса угла между двумя векторами и евклидова расстояния между ними на Python можно использовать библиотеку numpy.
Для начала, импортируем библиотеку numpy:
import numpy as np
Затем, зададим два вектора одинакового размера. Представим их в виде одномерных массивов numpy:
vector1 = np.array([1, 2, 3]) vector2 = np.array([4, 5, 6])
Теперь можем вычислить косинус угла между векторами с помощью функции `cos` из библиотеки numpy:
cosine_angle = np.dot(vector1, vector2) / (np.linalg.norm(vector1) * np.linalg.norm(vector2))
— Функция `np.dot(vector1, vector2)` вычисляет скалярное произведение векторов.
— Функция `np.linalg.norm(vector)` вычисляет евклидову норму вектора.
Наконец, можем вычислить евклидово расстояние между векторами с помощью функции `norm` из библиотеки numpy:
euclidean_distance = np.linalg.norm(vector1 - vector2)
— Функция `vector1 — vector2` вычисляет разность векторов.
— Функция `np.linalg.norm(vector)` вычисляет евклидову норму вектора.
import numpy as np vector1 = np.array([1, 2, 3]) vector2 = np.array([4, 5, 6]) cosine_angle = np.dot(vector1, vector2) / (np.linalg.norm(vector1) * np.linalg.norm(vector2)) euclidean_distance = np.linalg.norm(vector1 - vector2) print("Косинус угла между векторами:", cosine_angle) print("Евклидово расстояние между векторами:", euclidean_distance)
Таким образом, мы нашли косинус угла между двумя векторами и евклидово расстояние между ними с использованием библиотеки numpy на языке Python.
Чтобы оставить комментарий, необходимо авторизоваться.
Задай любой вопрос нейросети!
она справится с любой поставленной задачей быстрее чем поиск в Яндекс.
Для того, чтобы задать вопрос нейросети, необходимо войти на сайт.
Последние вопросы
Последние вопросы:
(c) ChatGPT по русски 2023. Все права защищены. При обнаружении неправомерного контента пишите на [email protected]
Хотите задать любой вопрос нейросети?
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет»
Форма репорта неправомерного контента.
Обратная связь с администрацией проекта
Уведомление об использовании cookie файлов
Наш сайт, как и большинство других, использует файлы cookie и другие похожие технологии (пиксельные тэги и т. п.), чтобы предоставлять услуги, наиболее отвечающие Вашим интересам и потребностям, а также собирать статистическую и маркетинговую информацию для анализа и совершенствования наших услуг и сайтов.
При использовании данного сайта, вы подтверждаете свое согласие на использование файлов cookie и других похожих технологий в соответствии с настоящим Уведомлением.
Если Вы не согласны, чтобы мы использовали данный тип файлов, Вы должны соответствующим образом установить настройки Вашего браузера или не использовать наш сайт.
Обращаем Ваше внимание на то, что при блокировании или удалении cookie файлов, мы не можем гарантировать корректную работу нашего сайта в Вашем браузере.
Cookie файлы, которые сохраняются через веб-сайт, не содержат сведений, на основании которых можно Вас идентифицировать.
Что такое файл cookie и другие похожие технологии
Файл cookie представляет собой небольшой текстовый файл, сохраняемый на вашем компьютере, смартфоне или другом устройстве, которое Вы используете для посещения интернет-сайтов.
Некоторые посещаемые Вами страницы могут также собирать информацию, используя пиксельные тэги и веб-маяки, представляющие собой электронные изображения, называемые одно-пиксельными (1×1) или пустыми GIF-изображениями.
Файлы cookie могут размещаться на вашем устройстве нами («собственные» файлы cookie) или другими операторами (файлы cookie «третьих лиц»).
Мы используем два вида файлов cookie на сайте: «cookie сессии» и «постоянные cookie». Cookie сессии — это временные файлы, которые остаются на устройстве пока вы не покинете сайт. Постоянные cookie остаются на устройстве в течение длительного времени или пока вы вручную не удалите их (как долго cookie останется на вашем устройстве будет зависеть от продолжительности или «времени жизни» конкретного файла и настройки вашего браузера).
Cookie файлы бывают различных типов:
Необходимые. Эти файлы нужны для обеспечения правильной работы сайта, использования его функций. Отключение использования таких файлов приведет к падению производительности сайта, невозможности использовать его компоненты и сервисы.
Файлы cookie, относящиеся к производительности, эффективности и аналитике. Данные файлы позволяют анализировать взаимодействие посетителей с сайтом, оптимизировать содержание сайта, измерять эффективность рекламных кампаний, предоставляя информацию о количестве посетителей сайта, времени его использования, возникающих ошибках.
Функциональные файлы cookie запоминают пользователей, которые уже заходили на наш сайт, их индивидуальные параметры (такие как язык и регион, например) и предпочтения, и помогают индивидуализировать содержание сайта.
Рекламные файлы cookie определяют, какие сайты Вы посещали и как часто, какие ссылки Вы выбирали, что позволяет показывать Вам рекламные объявления, которые заинтересуют именно Вас.
Электронная почта. Мы также можем использовать технологии, позволяющие отслеживать, открывали ли вы, прочитали или переадресовывали определенные сообщения, отправленные нами на вашу электронную почту. Это необходимо, чтобы сделать наши средства коммуникации более полезными для пользователя. Если вы не желаете, чтобы мы получали сведения об этом, вам нужно аннулировать подписку посредством ссылки «Отписаться» («Unsubscribe»), находящейся внизу соответствующей электронной рассылки.
Кнопки доступа к социальным сетям. Они используются для того, чтобы пользователи могли поделиться ссылкой на страницу в социальных сетях или сделать электронную закладку. Данные кнопки являются ссылками на веб-сайты социальных сетей, принадлежащих третьим лицам, которые, в свою, очередь могут фиксировать информацию о вашей активности в интернете, в том числе на нашем сайте. Пожалуйста, ознакомьтесь с соответствующими условиями использования и политикой конфиденциальности таких сайтов для понимания того, как они используют ваши данные, и того, как можно отказаться от использования ими ваших данных или удалить их.
Сторонние веб-сервисы. Иногда на данном сайте мы используем сторонние веб-сервисы. Например, для отображения тех или иных элементов (изображения, видео, презентации и т. п.), организации опросов и т. п. Как и в случае с кнопками доступа к социальным сетям, мы не можем препятствовать сбору этими сайтами или внешними доменами информации о том, как вы используете содержание сайта.
Как управлять файлами cookie?
Большинство интернет-браузеров изначально настроены на автоматический прием файлов cookie.
В любое время Вы можете изменить настройки вашего браузера таким образом, чтобы блокировать файлы cookie или предупреждать вас о том, когда они будут отправляться к вам на устройство (обратитесь к руководству использования конкретного браузера). Отключение файлов cookie может повлиять на Вашу работу в интернете.
Если вы используете несколько устройств и (или) браузеров для доступа в интернет, соответствующие настройки должны быть изменены в каждом из них.
Заключительные положения
По собственному усмотрению мы можем периодически изменять настоящее Уведомление.
По возникающим вопросам с нами можно связаться, используя контакты, размещенные на нашем сайте.
