Dmil 0 10 октября, 2022 Опубликовано 10 октября, 2022 · Жалоба Пробую рассчитать прототип double terminated LC ladder filter. Процедура включает сначала расчёт отражения p(s) * p(-s), затем надо зная этот полином получить p(s). Предлагается найти корни полинома, взять лежащие в левой полуплоскости и из них собрать p(s). И вот тут возникает проблема, связанная видимо с особенностью либо расположения корней, либо с алгоритмами поиска корней. Пример: p(s) p(-s) = -s^6 + 0.36. Ожидается результат: (s^3 + 0.6) (-s^3 + 0.6), отсюда p(s) = s^3 + 0.6 Пробуем в Octave: pp = [0.36 0 0 0 0 0 -1]; r = roots( pp ) -1.1856 + 0i -0.5928 + 1.0268i -0.5928 - 1.0268i 0.5928 + 1.0268i 0.5928 - 1.0268i 1.1856 + 0i p = poly( [r(1) r(2) r(3)] ) p = 1.0000 2.3713 2.8114 1.6667 Пробовал другой метод поиска корней, Laguerre, корни немного другие, но всё равно результирующий полином также неправильный. Как можно решить данную задачу? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
looser 8 10 октября, 2022 Опубликовано 10 октября, 2022 · Жалоба Для начала нужно к-ты развернуть. Старшая степень слева. Ну и дальше все понятно. корни [-1 0 0 0 0.6] не являются первым тремя корнями [-1 0 0 0 0 0 0.36]. Более того. Корней у последнего полинома в левой пп 4. Вернее, 3,4 лежат на мнимой оси. Кактотаг. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dmil 0 10 октября, 2022 Опубликовано 10 октября, 2022 (изменено) · Жалоба Quote Для начала нужно к-ты развернуть. Старшая степень слева. Да, верно, просто экспериментировал, и не то написал, а когда заметил, отредактировать уже было нельзя. В общем, нашел как решается задача. Просто оказалось, что решений может быть несколько, а книжка, из которой брался пример, показывает только одно, отсюда и возникло затруднение. Изменено 10 октября, 2022 пользователем Dmil Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться