Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Оганичения на линейные уравнения
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Математика и Физика
RHnd
Имеем невырожденную матрицу A 6x6. Произвольно назначаем вектор Y 6x1 так, чтоб корни полинома, образуемого этим вектором, имели действительную часть меньше r0. Требуется найти X: X*A=Y. Решал эту задачу в матлабе просто: R=[желаемые корни]; Y=poly®; X=inv(A)*Y;
Теперь появилось ограничение на вектор X - первые три компоненты (x(1), x(2), x(3)) должны быть одного знака, например, больше нуля - не принципиально. В идеале, все компоненты вектора X должны быть одного знака.
Как решать?
fontp
обычно ограничения на линейные уравнения приводят к linear programming.

Только где ж они у Вас линейные, если речь пошла о корнях?
shasik
Цитата(RHnd @ Jul 29 2008, 16:44) *
Как решать?
Можно например погуглить по "симплекс-метод". Глобальный путь решения в общем виде.
RHnd
Ну сами-то уравнения линейные. Если бы Y был фиксированным, то да, симплекс метод. Но вот как включить в симплекс метод то условие, что корни полинома, образованного Y, должны лежать левее определенной точки - я не знаю.
shasik
Цитата(RHnd @ Jul 29 2008, 16:44) *
Произвольно назначаем вектор Y

Если Y произвольный, и нужно найти в общем случае "произвольное" решение и
Цитата(RHnd @ Jul 29 2008, 21:15) *
Если бы Y был фиксированным, то да, симплекс метод.

то можно поменять местами X и Y. Т.е. сначала выбрать "красивые" корни исходной системы, а потом решить обратную задачу.
ЗЫ: подобную формулировку видел у экономистов в какой-то книге посвященной оптимизации. Нужно будет поискать этот бук.
RHnd
Цитата(shasik @ Jul 29 2008, 22:27) *
Если Y произвольный, и нужно найти в общем случае "произвольное" решение и

то можно поменять местами X и Y. Т.е. сначала выбрать "красивые" корни исходной системы, а потом решить обратную задачу.
ЗЫ: подобную формулировку видел у экономистов в какой-то книге посвященной оптимизации. Нужно будет поискать этот бук.


Как только мы выбираем красивые корни, мы фиксируем Y. А при зафиксированном Y задача имеет однозначное решение X=inv(A)*Y. Именно так она и решалось до ввода ограничений. А как теперь решать -непонятно. И симплекс я не вижу как сюда подключить. sad.gif
shasik
Цитата(RHnd @ Jul 29 2008, 22:52) *
Как только мы выбираем красивые корни, мы фиксируем Y. А при зафиксированном Y задача имеет однозначное решение X=inv(A)*Y. Именно так она и решалось до ввода ограничений. А как теперь решать -непонятно. И симплекс я не вижу как сюда подключить. sad.gif

А при "произвольном" выборе Y или корней R ситуация разве другая будет? Тоже имеем однозначное решение (или не имеем вовсе).
1. Записиваем 12 (2х6) условий относительно R: Yi однозначно определяются Ri, а следовательно определяются и Xi. Т.о. имеем 6 условий для самих R Re( R )<R0 и еще 6 X(Y(R0)))>0. Одно но: система то получается нелинейной. А здесь другие уже способы решения.
2. Древний как жизнь способ (ради стеба):
Код
пока (решение_не_подходит)
{
   Генерировать_по_Random'y_решение();
}
Imath
RHnd

Все-таки я не понял, у Вас Y - это вектор или полином?
Если полином, то приведите его вид, и главное как Вы потом на него матрицу умножаете?

И еще. Прямое уравнение должно иметь такой вид: A*X=Y, иначе запись X=inv(A)*Y - неверна.
Матричное умножение некоммутативно.
fontp
У него Y в отношении линейной задачи вектор. Но он ещё и полином, c другой стороны.

Если взять 10 (5 пар) переменных R(i)

Rre(i) + iRim(i)

для корней. Выразить через корни коэффициенты Y(j) как обычно

например Y(0) = R(0)*R(1)*R(2)*R(3)*R(4)
Y(1) = Cумма четвёрок(R(0)*R(1)*R(2)*R(3)+R(1)*R(2)*R(3)*R(4)...))
.....
Y(2) = Cумма троек
Y(3) = Сумма двоек
Y(4) = R(0)+R(1)+R(2)+R(3)+R(4)
Y(5) = 1 (старший коэффициент произвольно можно взять = 1)
и т.д.

ввести EPS (максимум действительных частей корней)
Потом записать

MIN (EPS( R,X ))
Ax=y
X(0)>0
x(1)>0

Rre(i)<EPS

то задача как видно нелинейна по R, линейна только по Х :-)
Что очевидно, поскольку задача нахождения коэффициентам полинома сугубо нелинейна по корням.
Соответственно это задача при строгой постановке - оптимизационная задача программирования нелинейного размерности 16. Тут не до симплекса :-)
RHnd
Вариант с рэндомом был попробован в первую очередь. smile.gif Получилось, что для real(Ri)<-1 решения находится быстро, а вот для real(Ri)<-10 - решение так и не нашлось.
Кстати, похожая ситуация и просто с нахождением полинома. Т.е. генерируем рандомно коеффициенты полинома, ищем корни. Сгенерировать такой полином, чтоб все корни меньше -10 - не удалось.

Цитата(fontp @ Jul 30 2008, 10:16) *
Соответственно это задача при строгой постановке - оптимизационная задача программирования нелинейного размерности 16. Тут не до симплекса :-)

Так и есть. Только там не 5 пар корней - комплексные должны быть комплексно сопряжены, коеффициенты полинома - действительные числа.
И как подступаться к такой задаче?
fontp
Цитата(RHnd @ Jul 30 2008, 10:41) *
Так и есть. Только там не 5 пар корней - комплексные должны быть комплексно сопряжены, коеффициенты полинома - действительные числа.
И как подступаться к такой задаче?


Это да, 2 пары комплексно сопряжённых и 1 - действительный. Всего 5

А как вообще решаются нелинейные оптимизационные задачи в общем случае? Да никак! :-)
В смысле запускают какой нибудь метод наименьшего спуска по градиенту, но ничего гарантировать нельзя про сходимость. т.е вообще ничего, но что-то то получится, может сгодится ? Теоретически строго решаются только линейные, квадратичные и некоторые выпуклые задачи.
В вашем случае хорошо бы постараться вводя новые дополнительные переменные "вложить" линейную задачу по X(может и симплекс) во внешнюю нелинейную, по которой делать итерации наискорейшего спуска по градиенту, но в рамках ограничений

Возможно использовать готовые программы симплекса вообще не получится, не знаю. Тогда нужно разбираться в деталях как устроена итерация симплекс методa. Имея какое-то решение, Вы должны сделать шаг в известном направлении (градиента), но длина этого шага должна определяться условиями положительности X(i) (ограничениями на положительность Х). Это всё логика симплекс-итерации
AndrewN
Цитата(RHnd @ Jul 29 2008, 22:52) *
Как только мы выбираем красивые корни, мы фиксируем Y. А при зафиксированном Y задача имеет однозначное решение X=inv(A)*Y. Именно так она и решалось до ввода ограничений. А как теперь решать -непонятно. И симплекс я не вижу как сюда подключить.

Симплекс подключить никак. Оптимизировать-то нечего, и причем тут симплекс? И, кстати,
после наложения ограничений, решение линейной системы остаётся единственным, другое
дело, удовлетворяет ли оно ограничениям (да - принимаем, нет - отбрасываем).

В том виде, в котором задача сейчас сформулирована, она является задачей на нахождение
ООФ, поскольку ОДЗ задана условием равенства знаков X. Иначе, из множества красивых
корней R выделить подмножество R', которое удовлетворяет условию равенства знаков
компонент Х. Это эквивалентно нахождению пересечения множества Y' для которых компоненты
Х одного знака с множеством Y" у которого корни R красивые.

Вообще, откуда взялась идея ограничить решения линейной системы? Правые части
ограничены, матрица коэффициентов системы, вероятно тоже не с потолка, так для чего ещё
и Х ограничивать? Можно подробно описать А, R, R0 и Y?

Для R тоже можно построить линейную систему, характеристическое уравнение с матрицей F,
решением которого будут R - собственные числа и соответствующие им собственные векторы.
С другой стороны, и правые части и решения исходной линейной системы можно представить
в базисе А, т.е. разложить собственным парам матрицы А. Если бы каким-то чудом удалось
объединить эти две собственных системы и выжать из них все подходящие R - но пока я не
вижу способа...

--
AN
RHnd
Цитата(AndrewN @ Jul 30 2008, 10:58) *
Вообще, откуда взялась идея ограничить решения линейной системы? Правые части
ограничены, матрица коэффициентов системы, вероятно тоже не с потолка, так для чего ещё
и Х ограничивать? Можно подробно описать А, R, R0 и Y?


Вектор X - настраиваемые коэфициенты имеющегося в системе регулятора. Матрица получается из описания системы и она такова, что Y=A*X - вектор, который образует характеристический полином замкнутой системы с регулятором. Отсюда и назначение корней этого полинома левее определенной границы. Но если первые три компоненты вектора X различны по знаку, то сам блок регулятора становится неустойчивым.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.