Как найти точку пересечения параболы и прямой
Перейти к содержимому

Как найти точку пересечения параболы и прямой

  • автор:

Найти точки пересечения параболы и прямой

Author24 — интернет-сервис помощи студентам

Найти точки пересечения параболы и прямой
Не понимаю почему программа работает некоректно. Код компилируется и работает, но программа выдает.

Найти точки пересечения прямой с окружностью
Даны координаты центра (x,y) и радиус R, и коэффициенты А, В и С нормального уравнения прямой.

Найти точки пересечения прямой с осями координат
Найти точки пересечения прямой a * x + b * y + c = 0 с осями координат, или выдать соответствующее.

Точки пересечения окружности и прямой
Необходимо создать программу которая находит точки пересечения окружности и прямой. Причем я задаю.

Как найти точки пересечения параболы и окружности?

Author24 — интернет-сервис помощи студентам

Здравствуйте, в вузе дали такую задачу. Надо найти точки пересечения окружности ((x — a)^2 + (y — b)^2 = r^2) и параболы (dx^2 + ex + f = y), при этом на ввод подаются все коэффициенты. Я пытался составить систему уравнений и в общем виде(так как коэффициенты неизвестны) найти корни, чтобы найти точки пересечения. Однако у меня ничего не получилось, я пришел к многочлену вида ax^4 + bx^3 + cx^2 + dx + e = 0. как у такого вообще найти корни? Подскажите, как решить, может я просто не то что-то делал? извините, если я тупой

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Найти точки пересечения параболы и прямой
Объясните пожалуйста что не так в этой программе #include "stdafx.h" #include <iostream>.

Найти точки пересечения параболы и прямой
Не понимаю почему программа работает некоректно. Код компилируется и работает, но программа выдает.

Найти точки пересечения луча и окружности
Given a sphere of radius sphereRadius, center point is sphereCenter and a ray with origin rayStart.

Найти точки пересечения гиперболы и окружности
Нужно найти точки пересечения гиперболы и окружности. Если смотреть с матиматической точки зрения.

2105 / 1192 / 496
Регистрация: 11.10.2018
Сообщений: 6,000

Такую систему как у Вас на картинке по определению решить невозможно, потому что неизвестных слишком много. Для 2-ух уравнений(система) нужно оставить переменные x и y и остальные задать. Вам же это сказано в задании. Это будут 0, 1 или 2 точки пересечения параболы и окружности. Посмотрите примеры в Интернете.
Вам нужно задать все коэффициенты, кроме x и y и нарисовать картинку.

3293 / 1510 / 476
Регистрация: 01.06.2021
Сообщений: 5,112

ЦитатаСообщение от Lokoput Посмотреть сообщение

ax^4 + bx^3 + cx^2 + dx + e = 0. как у такого вообще найти корни?

легко находится численными методами, ведь в этом уравнении неизвестен только x

Добавлено через 1 минуту
Lokoput, можно найти даже точное решение, но оно будет большим

Заблокирован

Я так понимаю, надо написать алгоритм общего решения уравнений 4 степени? Это круто и тянет на курсач.

3293 / 1510 / 476
Регистрация: 01.06.2021
Сообщений: 5,112

ЦитатаСообщение от Verevkin Посмотреть сообщение

Это круто и тянет на курсач.

Это решение можно получить в любой СКА , а потом просто вставить в код (но будет много букафф)

Solve[a*x^4 + b*x^3 + c*x^2 + d*x + e == 0, x]
solve(a*x^4 + b*x^3 + c*x^2 + d*x + e = 0, x, explicit)
solve(a*x^4 + b*x^3 + c*x^2 + d*x + e, x);

Заблокирован
Я так понимаю, надо написать алгоритм общего решения уравнений 4 степени?

ЦитатаСообщение от Royal_X Посмотреть сообщение

Это решение можно получить в любой СКА , а потом просто вставить в код (но будет много букафф)

Ну это ж задача по С++, т.е. надо самостоятельно вывести все выкладки а потом по ним написать код, т.е. отладить функцию, принимающую на вход параметры окружности (центр, радиус) и параболы (a, b, c), и выдающую на выходе массив точек пересечения — от 0 до 4 корней уравнения.

Я это так понимаю.

3293 / 1510 / 476
Регистрация: 01.06.2021
Сообщений: 5,112

Verevkin, да, но на курсач это не тянет. Я ж говорю, что можно просто скопировать решение из СКА и вставить в код. Максимум придется немного отформатировать вставленный код, чтобы он соответствовал синтаксису С++. Кстати, можно даже не делать никаких проверок, а подключать и вычислять в комплексных числах. На выходе уже потом разбираться, если корень вещественный, то это точка пересечения.

Заблокирован

ЦитатаСообщение от Royal_X Посмотреть сообщение

да, но на курсач это не тянет.
Ну, для МФТИ слабовато, канешна. А для мухосранского заборостроительного университета — сойдёт!
случайный прохожий
2951 / 1962 / 608
Регистрация: 20.07.2013
Сообщений: 5,189

Лучший ответ

Сообщение было отмечено Volga_ как решение

Решение

С учетом того, что длина окружности имеет конечное значение, можно искать точки пересечения (ТП) с помощью перебора (точек окружности).
Только есть нюанс — нужно либо подбирать точность eps (см. код), либо не учитывать (лишние) точки, которые находятся «рядом» с ТП и могут выдаваться за них.

1 2 3 4 5 6 7 8 9
double func_circl (double x, double y, double a, double b, double r) { return (x - a) * (x - a) + (y - b) * (y - b) - r * r; } //--------------------------------------------------------------------------- double func_parab (double x, double y, double d, double e, double f) { return d * x * x + e * x + f - y; }

«Основной» код:

1 2 3 4 5 6 7 8 9 10
double a = 0, b = 0, r = 10, d = 1, e = 2, f = -12; double x, y, step = 0.001, eps = 0.02, pi = 3.14159265; for (double i = 0; i  2 * pi; i += step) { x = a - r * sin(i); y = b + r * cos(i); if (fabs(func_circl(x, y, a, b, r) - func_parab(x, y, d, e, f))  eps) // выводим x и y }

Ответ, полученный для указанных выше (в коде) значений параметров:

(-5,61336622605206; 8,27587576104294) (-2,84603361290035; -9,58645360257073) (0,743387066152499; -9,97233050344187) (3,72020961452022; 9,28224328619065)

Скриншот из GeoGebra (для проверки):

Эксперт CЭксперт С++

5175 / 2897 / 1501
Регистрация: 14.12.2018
Сообщений: 5,233
Записей в блоге: 1
Или найти все значения х в интервале [a-r; a+r] для |(x-a) 2 +(y-b) 2 -r 2 |

1 2 3 4 5 6
for (double x = a - r; x  a + r; x += dx) { double y = c * x * x + d * x + e; if (fabs((x - a) * (x - a) + (y - b) * (y - b) - r * r)  eps) // выводим (x, y) }

случайный прохожий
2951 / 1962 / 608
Регистрация: 20.07.2013
Сообщений: 5,189

Подправил код, чтобы не учитывались лишние точки.
Проверял на следующих значениях eps: 0.1, 0.01, 0.005 и 0.002.

Еще раз замечу (уточню), что значение eps не должно быть слишком маленьким (например, при eps = 0.001 не все точки «выдаются») или слишком большим (тут точно сказать не могу, зависит, скорей всего, от близости друг к другу точек пересечения).
Но лишние точки вроде как не должны выдаваться, скорее наоборот (какой-то результат можно пропустить при «неправильном» выборе значения eps).
Короче, если нужна точность результата, а не простота (реализации), лучше использовать численные методы (хотя они могут быть тоже легки в реализации) или точное решение, как уже было сказано выше другими людьми.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
double a = 0, b = 0, r = 10, d = 1, e = 2, f = -12; double x, y, step = 1e-4, eps = 5e-3, pi = 3.14159265, tmp = a; for (double i = 0; i  2 * pi; i += step) { x = a - r * sin(i); y = b + r * cos(i); if (fabs(func_circl(x, y, a, b, r) - func_parab(x, y, d, e, f))  eps) { if (fabs(tmp - x) > eps) // выводим x и y tmp = x; } }

Возможно еще, что строка кода №14 должна срабатывать (лишь) при положительном условии предыдущего if (строка №11), но могу ошибаться. Разницу (если она есть) обнаружить не удалось.

Результаты (для указанного кода) получены следующие:

(-5,61253861041009; 8,27643705628551) (-2,84890942084923; -9,58559936111438) (0,739398074612505; -9,97262706047205) (3,72020961452692; 9,28224328618796)

Добавлено через 38 минут
Volga_, скажу немного по поводу твоего кода (хотя для данной исходной задачи это не имеет значения) — если парабола будет иметь другой вид («горизонтальный» с соответствующей формулой, что уже из «области фантазий»), то может возникнуть ситуация вроде «для одинаковых значений x есть разные значения y (и не все они будут учтены)» касаемо точек пересечения. Скажем так, мысли вслух. Но твое решение в любом случае вполне хорошее (более оптимальное), я до него не догадался (так как хотел учесть именно особенность наличия окружности).

Доступ к сервису временно запрещён

С вашего IP-адреса одновременно поступает очень много запросов.
Такое поведение показалось подозрительным, поэтому мы временно закрыли доступ к сайту.
Возможно, на вашем устройстве есть программы, которые отправляют запросы без вашего ведома.

Что мне делать?

Напишите в службу поддержки через форму обратной связи.
Подробно опишите ситуацию — поможем разобраться, что случилось, и подскажем, как действовать дальше.

Алгебра 7а и 7в класс (23.04.2020)

— Сегодня на уроке мы будем находить точки пересечения параболы и прямой.

— Мы с вами умеем строить график линейной и квадратичной функции.

— Давайте повторим, что является графиком линейной функции? А что является графиком квадратичной функции?

— Итак, для построения прямой достаточно двух точек. Для построения параболы нам необходимо семь точек.

Изучение темы :

Задание : Найти точки пересечения параболы у=х 2 и прямой у=х + 2.

— Записываем в тетрадь:

у=х 2 – квадратичная функция, график- парабола, ветви направлены вверх.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *