|
|
  |
Оганичения на линейные уравнения, Как решать? |
|
|
|
Jul 29 2008, 18:27
|

Местный
  
Группа: Свой
Сообщений: 319
Регистрация: 3-09-05
Из: Беларусь, Новополоцк
Пользователь №: 8 188

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

Местный
  
Группа: Свой
Сообщений: 319
Регистрация: 3-09-05
Из: Беларусь, Новополоцк
Пользователь №: 8 188

|
Цитата(RHnd @ Jul 29 2008, 22:52)  Как только мы выбираем красивые корни, мы фиксируем Y. А при зафиксированном Y задача имеет однозначное решение X=inv(A)*Y. Именно так она и решалось до ввода ограничений. А как теперь решать -непонятно. И симплекс я не вижу как сюда подключить.  А при "произвольном" выборе Y или корней R ситуация разве другая будет? Тоже имеем однозначное решение (или не имеем вовсе). 1. Записиваем 12 (2х6) условий относительно R: Yi однозначно определяются Ri, а следовательно определяются и Xi. Т.о. имеем 6 условий для самих R Re( R )<R0 и еще 6 X(Y(R0)))>0. Одно но: система то получается нелинейной. А здесь другие уже способы решения. 2. Древний как жизнь способ (ради стеба): Код пока (решение_не_подходит) { Генерировать_по_Random'y_решение(); }
|
|
|
|
|
Jul 30 2008, 05:29
|
Группа: Новичок
Сообщений: 3
Регистрация: 13-09-06
Пользователь №: 20 332

|
RHnd
Все-таки я не понял, у Вас Y - это вектор или полином? Если полином, то приведите его вид, и главное как Вы потом на него матрицу умножаете?
И еще. Прямое уравнение должно иметь такой вид: A*X=Y, иначе запись X=inv(A)*Y - неверна. Матричное умножение некоммутативно.
|
|
|
|
|
Jul 30 2008, 06:41
|
Знающий
   
Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997

|
Вариант с рэндомом был попробован в первую очередь.  Получилось, что для real(Ri)<-1 решения находится быстро, а вот для real(Ri)<-10 - решение так и не нашлось. Кстати, похожая ситуация и просто с нахождением полинома. Т.е. генерируем рандомно коеффициенты полинома, ищем корни. Сгенерировать такой полином, чтоб все корни меньше -10 - не удалось. Цитата(fontp @ Jul 30 2008, 10:16)  Соответственно это задача при строгой постановке - оптимизационная задача программирования нелинейного размерности 16. Тут не до симплекса :-) Так и есть. Только там не 5 пар корней - комплексные должны быть комплексно сопряжены, коеффициенты полинома - действительные числа. И как подступаться к такой задаче?
|
|
|
|
|
Jul 30 2008, 06:57
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
Цитата(RHnd @ Jul 30 2008, 10:41)  Так и есть. Только там не 5 пар корней - комплексные должны быть комплексно сопряжены, коеффициенты полинома - действительные числа. И как подступаться к такой задаче? Это да, 2 пары комплексно сопряжённых и 1 - действительный. Всего 5 А как вообще решаются нелинейные оптимизационные задачи в общем случае? Да никак! :-) В смысле запускают какой нибудь метод наименьшего спуска по градиенту, но ничего гарантировать нельзя про сходимость. т.е вообще ничего, но что-то то получится, может сгодится ? Теоретически строго решаются только линейные, квадратичные и некоторые выпуклые задачи. В вашем случае хорошо бы постараться вводя новые дополнительные переменные "вложить" линейную задачу по X(может и симплекс) во внешнюю нелинейную, по которой делать итерации наискорейшего спуска по градиенту, но в рамках ограничений Возможно использовать готовые программы симплекса вообще не получится, не знаю. Тогда нужно разбираться в деталях как устроена итерация симплекс методa. Имея какое-то решение, Вы должны сделать шаг в известном направлении (градиента), но длина этого шага должна определяться условиями положительности X(i) (ограничениями на положительность Х). Это всё логика симплекс-итерации
|
|
|
|
|
Jul 30 2008, 06:58
|
Местный
  
Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961

|
Цитата(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
|
|
|
|
|
Jul 30 2008, 10:05
|
Знающий
   
Группа: Свой
Сообщений: 518
Регистрация: 12-04-07
Из: Санкт-Петербург
Пользователь №: 26 997

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