На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> пересечение эллипсов , найти точки пересечения
    Здравствуйте, просба разшарить задачку.

    Есть два эллипса.
    Первый с центром в начале координат, а=2, b=4;
    Центр второго (0,2), а=3, b=1;

    Важен не конечный результат, а последовательность решения.
      Есть идея влоб. Умнее пока ничего не придумал.

      1. Записываешь уравнения эллипсов.
      2. Потом вписываешь их в прямоугольники.
      3. Если прямоугольники не пересекаются,
      3а. Значит точки пересечения нет
      4. Иначе, нахдишь ту, область в которой присутсвуют пересечение( это будет 2 диапазона - один для х другой для у)
      5. Если в лоб, то перебираешь все возможные значения х и у с заланной точностью, подставляя их в уравнения, и проверяя, лежат ли эти токи на элипсе.
      (если какая то то ка х1 y1 удовлетворяет обоим уравнения, то это решение).
      Если не в лоб то нужно как умно сдлать перебор, возможно, используя половинное деление, но тут надо очень думать_)))
        Система из нелинейных уравнений решается итерационно. Метод Ньютона Есть нюанс: находит только одно решение, т.е. точку пересечения, но сходится к ближайшему. Поэтому надо взять два начальных приближения.
          Внимание ОШИБКА
          cx = 1;
          cy = 2;
          должно бить
          cx = 0;
          cy = 2;
          оставил другим цветом для примера



          незачем било создавать несколько тем
          пересечение эллипсов
          там я ответил как решить в любих параметрах радиуса и координат центра

          ExpandedWrap disabled
            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 сам найдеш

          илюстрация твоего примера
          user posted image

          прикреплю файл с формулой (програма Wolfram Mathematica)

          Прикреплённый файлПрикреплённый файлEllipseAndEllipse.rar (31,81 Кбайт, скачиваний: 76)
          Сообщение отредактировано: Mishamp -
            Цитата GrinEd @
            Есть идея влоб. Умнее пока ничего не придумал.

            4. Иначе, нахдишь ту, область в которой присутсвуют пересечение( это будет 2 диапазона - один для х другой для у)
            5. Если в лоб, то перебираешь все возможные значения х и у с заланной точностью, подставляя их в уравнения, и проверяя, лежат ли эти токи на элипсе.
            (если какая то то ка х1 y1 удовлетворяет обоим уравнения, то это решение).
            Если не в лоб то нужно как умно сдлать перебор, возможно, используя половинное деление, но тут надо очень думать_)))

            Ти представляеш что область бесконечна
            тоесть тебе уйдет достатточно много времени чтоби найти такие точки, таким сспособом

            Добавлено
            Цитата Аэтерос @
            Система из нелинейных уравнений решается итерационно. Метод Ньютона Есть нюанс: находит только одно решение, т.е. точку пересечения, но сходится к ближайшему. Поэтому надо взять два начальных приближения.

            тоже незачем итерационие методи
            там хоть и не линейное но степень 4, а ето формула Феррари
              ой извени центр сместил (1,2)
              неувидел
              вот исправлен
              в етом случаи моя формула превращается в уравненния


              ExpandedWrap disabled
                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}

              user posted image

              Прикреплённый файлПрикреплённый файлEllipseAndEllipse.rar (31,4 Кбайт, скачиваний: 70)
              1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0272 ]   [ 18 queries used ]   [ Generated: 17.05.24, 09:31 GMT ]