Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.135.209.44] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте, просба разшарить задачку.
Есть два эллипса. Первый с центром в начале координат, а=2, b=4; Центр второго (0,2), а=3, b=1; Важен не конечный результат, а последовательность решения. |
Сообщ.
#2
,
|
|
|
Есть идея влоб. Умнее пока ничего не придумал.
1. Записываешь уравнения эллипсов. 2. Потом вписываешь их в прямоугольники. 3. Если прямоугольники не пересекаются, 3а. Значит точки пересечения нет 4. Иначе, нахдишь ту, область в которой присутсвуют пересечение( это будет 2 диапазона - один для х другой для у) 5. Если в лоб, то перебираешь все возможные значения х и у с заланной точностью, подставляя их в уравнения, и проверяя, лежат ли эти токи на элипсе. (если какая то то ка х1 y1 удовлетворяет обоим уравнения, то это решение). Если не в лоб то нужно как умно сдлать перебор, возможно, используя половинное деление, но тут надо очень думать_))) |
Сообщ.
#3
,
|
|
|
Система из нелинейных уравнений решается итерационно. Метод Ньютона Есть нюанс: находит только одно решение, т.е. точку пересечения, но сходится к ближайшему. Поэтому надо взять два начальных приближения.
|
Сообщ.
#4
,
|
|
|
Внимание ОШИБКА
cx = 1; cy = 2; должно бить cx = 0; cy = 2; оставил другим цветом для примера незачем било создавать несколько тем пересечение эллипсов там я ответил как решить в любих параметрах радиуса и координат центра In[1]:= cx = 1; cy = 2; r1x = 2; r1y = 4; r2x = 3; r2y = 1; In[7]:= cx2 = cx*cx; cy2 = cy*cy; r1x2 = r1x*r1x; r1y2 = r1y*r1y; r2x2 = r2x*r2x; r2y2 = r2y*r2y; RyRx = r2y2/r2x2 - r1y2/r1x2; In[14]:= z4 = -RyRx*RyRx; z3 = 4.0*cx*r2y2*RyRx/r2x2; z2 = -4.0*(cy2*r2x2*r2y2 + cx2*r2y2*r2y2)/(r2x2*r2x2) - 2.0*RyRx*((cx2/r2x2 - 1.0)*r2y2 - cy2 + r1y2); z1 = (4.0*cx*r2y2*(cy2*r2x2 + r1y2*r2x2 + (cx2 - r2x2)*r2y2))/(r2x2* r2x2); z0 = 4.0*cy2*r2y2 - (4.0*cx2*cy2*r2y2)/ r2x2 - ((r1y2 - cy2 + (cx2/r2x2 - 1.0)*r2y2))^2; In[19]:= z4 x^4 + z3 x^3 + z2 x^2 + z1 x + z0 == 0 sl = Solve[{z4 x^4 + z3 x^3 + z2 x^2 + z1 x + z0 == 0}, x] Out[19]= -109.235 + 8.49383 x + 84.5926 x^2 - 1.7284 x^3 - (1225 x^4)/ 81 == 0 Out[20]= {{x -> -1.81993}, {x -> -1.55055}, {x -> 1.32623}, {x -> 1.92996}} тоесть по формуле которую я написал бил получаєм уравненния -109.235 + 8.49383 x + 84.5926 x^2 - 1.7284 x^3 - (1225 x^4)/81 == 0 соответственно 4 координати X пересичениє {x -> -1.81993} {x -> -1.55055} {x -> 1.32623} {x -> 1.92996} координати Y сам найдеш илюстрация твоего примера прикреплю файл с формулой (програма Wolfram Mathematica) Прикреплённый файлEllipseAndEllipse.rar (31,81 Кбайт, скачиваний: 76) |
Сообщ.
#5
,
|
|
|
Цитата GrinEd @ Есть идея влоб. Умнее пока ничего не придумал. 4. Иначе, нахдишь ту, область в которой присутсвуют пересечение( это будет 2 диапазона - один для х другой для у) 5. Если в лоб, то перебираешь все возможные значения х и у с заланной точностью, подставляя их в уравнения, и проверяя, лежат ли эти токи на элипсе. (если какая то то ка х1 y1 удовлетворяет обоим уравнения, то это решение). Если не в лоб то нужно как умно сдлать перебор, возможно, используя половинное деление, но тут надо очень думать_))) Ти представляеш что область бесконечна тоесть тебе уйдет достатточно много времени чтоби найти такие точки, таким сспособом Добавлено Цитата Аэтерос @ Система из нелинейных уравнений решается итерационно. Метод Ньютона Есть нюанс: находит только одно решение, т.е. точку пересечения, но сходится к ближайшему. Поэтому надо взять два начальных приближения. тоже незачем итерационие методи там хоть и не линейное но степень 4, а ето формула Феррари |
Сообщ.
#6
,
|
|
|
ой извени центр сместил (1,2)
неувидел вот исправлен в етом случаи моя формула превращается в уравненния In[40]:= z4 x^4 + z3 x^3 + z2 x^2 + z1 x + z0 == 0 sl = Solve[{z4 x^4 + z3 x^3 + z2 x^2 + z1 x + z0 == 0}, x] Out[40]= -105. + 83.7778 x^2 - (1225 x^4)/81 == 0 {{x -> -1.90356}, {x -> -1.38421}, {x -> 1.38421}, {x -> 1.90356}} уровненния: -105. + 83.7778 x^2 - (1225 x^4)/81 == 0 легко решить вручну заменой (u = x^2) корни {x -> -1.90356} {x -> -1.38421} {x -> 1.38421} {x -> 1.90356} Прикреплённый файлEllipseAndEllipse.rar (31,4 Кбайт, скачиваний: 70) |