2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Mathematica и сист. нелинейных уравненией (не по зубам?)
Сообщение13.03.2013, 11:36 
Аватара пользователя


13/03/13
28
Здравствуйте. Вот такая задача:
Код:
t = 1000;
x168 = 1;
NSolve[{t*x168*x169 + t*x168*x179 + t*x168*x174 + t*x168*x172 +
    t*2*x168*x181 + t*2*x168*x171 + t*3*x168*x183 + t*2*x168*x177 +
    t*4*x168*x178 + t*6*x168*x182 + t*x168*x170 + t*x168*x180 +
    t*5*x168*x173 + t*3*x168*x185 - 3*x179 - 4*x184 - 2*x172 - x171 -
    2*x178 - x182 - 3*x170 - x180 - 3*x185 == 0,
  t*x169*x172 + t*x171*x169 + t*x169*x183 + t*x169*x178 +
    t*5*x169*x176 + t*x169*x168 + t*2*x169*x170 + t*3*x169*x180 +
    t*2*x169*x173 + t*x169*x175 + t*2*x169*x185 + t*x169*x177 -
    4*x184 - 2*x181 - x171 - 2*x183 - 2*x176 - 2*x168 - 2*x182 -
    x170 - 2*x180 - x175 - x185 == 0,
  t*2*x170*x171 + t*x170*x183 + t*x170*x169 + t*2*x170*x168 +
    t*x170*x182 + t*4*x170*x172 + t*4*x170*x181 + t*4*x170*x175 +
    t*4*x170*x185 + t*x170*x177 + t*3*x170*x176 + t*x170*x174 +
    t*x170*x178 + t*x170*x173 - 2*x169 - 2*x172 - x185 - 3*x177 -
    3*x184 - 3*x174 - x178 - x180 == 0,
  t*4*x171*x172 + t*2*x171*x181 + t*4*x171*x178 + t*2*x171*x175 +
    t*6*x171*x185 + t*x171*x177 + t*x171*x176 + t*2*x171*x184 +
    t*x171*x174 + t*2*x171*x170 + t*x171*x180 + t*6*x171*x183 +
    t*2*x171*x169 + t*x171*x168 + t*3*x171*x182 - x181 - 4*x178 -
    2*x175 - x177 - x176 - 2*x174 - 3*x180 - x183 - x169 - x179 -
    x168 == 0,
  t*x172*x175 + t*3*x172*x185 + t*x172*x177 + t*2*x172*x176 +
    t*3*x172*x184 + t*2*x172*x178 + t*x4*x172*x183 + t*3*x172*x179 +
    x172*x168 + t*4*x172*x182 - x173 - x185 - x177 - 2*x184 - 2*x174 -
     x178 - x169 - 2*x179 - 4*x168 - 2*x182 - x170 - x181 == 0,
  t*2*x173*x171 + t*3*x173*x183 + t*x173*x169 + t*x173*x179 +
    t*x173*x168 + t*2*x173*x182 + t*3*x173*x170 + t*x173*x181 +
    t*2*x173*x185 + t*x173*x177 + t*x173*x176 + t*x173*x184 +
    t*x173*x174 - 3*x180 - 4*x178 - x171 - 2*x169 - x179 - x168 -
    x182 - 2*x170 - x172 - 3*x181 - 3*x185 - 2*x176 - x184 - 3*x174 ==
    0,
  t*4*x174*x175 + t*4*x174*x177 + t*3*x174*x184 + t*x174*x180 +
    t*5*x174*x173 + t*2*x174*x183 + t*2*x174*x168 + t*5*x174*x182 +
    t*5*x174*x172 + t*x174*x181 + t*4*x174*x171 - x177 - x176 - x184 -
     x170 - x180 - 3*x179 - 2*x168 - 2*x182 - 2*x172 - x171 == 0,
  t*4*x175*x170 + t*2*x175*x180 + t*x175*x173 + t*3*x178*x175 +
    t*2*x175*x183 + t*x175*x169 + t*2*x175*x179 + t*4*x175*x182 +
    t*6*x175*x172 + t*2*x175*x171 + t*x175*x177 + t*2*x175*x176 +
    t*x175*x184 - x170 - x180 - x173 - 3*x178 - 2*x183 - 2*x179 -
    2*x168 - x182 - x172 - x181 - x171 - 3*x185 - x176 == 0,
  t*3*x176*x177 + t*x176*x168 + t*x176*x182 + t*3*x176*x170 +
    t*x176*x180 + t*2*x176*x173 + t*x176*x175 + t*2*x176*x185 +
    t*2*x176*x179 + t*3*x176*x178 + t*2*x176*x184 + t*3*x176*x174 +
    t*x176*x172 + t*3*x176*x181 + t*2*x176*x171 + t*3*x176*x169 -
    x177 - 2*x168 - x182 - 3*x170 - x180 - x185 - x178 - x184 -
    x174 - 2*x172 - x181 - 3*x171 == 0,
  t*x177*x168 + t*2*x177*x182 + t*x177*x170 + t*x177*x180 +
    t*2*x177*x173 + t*2*x177*x175 + t*x177*x169 + t*2*x177*x179 +
    t*3*x177*x176 + t*4*x177*x184 + t*3*x177*x181 + t*x177*x183 +
    t*4*x177*x178 - 4*x168 - 2*x170 - x175 - 2*x185 - 3*x179 - x176 -
    x184 - 2*x174 - 2*x172 - 2*x178 == 0,
  t*2*x178*x179 + t*2*x178*x176 + t*2*x178*x168 + t*2*x178*x184 +
    t*2*x178*x182 + t*5*x178*x174 + t*x178*x170 + t*2*x178*x177 +
    t*x178*x181 + t*3*x178*x173 + t*x178*x171 + t*2*x178*x175 +
    t*x178*x183 + t*x178*x185 + t*2*x178*x169 + t*x178*x172 +
    t*x178*x180 - 2*x179 - x176 - 3*x168 - 3*x170 - x177 - 2*x181 -
    2*x171 - 2*x175 - x183 - x185 - x169 - x172 - x180 == 0,
  t*2*x179*x176 + t*x179*x184 + t*3*x179*x174 + t*2*x179*x171 +
    t*2*x179*x169 + t*2*x179*x178 + t*x179*x168 + t*2*x179*x182 +
    t*x179*x170 + t*2*x179*x173 + t*2*x179*x175 + t*3*x179*x185 -
    x176 - x184 - x174 - 4*x172 - x181 - 2*x171 - 2*x183 - x169 -
    x178 - 2*x182 - 2*x180 - 4*x173 - x175 - x185 - x177 == 0,
  t*4*x180*x181 + t*3*x180*x171 + t*3*x180*x183 + t*3*x180*x179 +
    t*6*x180*x168 + t*x180*x182 + t*2*x180*x170 + t*2*x180*x178 +
    t*3*x180*x173 + t*x180*x175 + t*x180*x185 + t*2*x180*x177 +
    t*2*x180*x176 + t*x180*x184 + t*x180*x174 + t*2*x180*x172 - x181 -
     x171 - x183 - x169 - x179 - 2*x168 - 2*x182 - x178 - 2*x173 -
    x185 - 3*x176 - 3*x184 - x172 == 0,
  t*4*x181*x178 + t*4*x181*x173 + t*2*x181*x175 + t*4*x181*x185 +
    t*3*x181*x177 + t*4*x181*x176 + t*2*x181*x174 + t*2*x181*x172 +
    t*x181*x180 + t*x181*x171 + t*2*x181*x183 + t*x181*x169 +
    t*3*x181*x179 + t*x181*x168 + t*3*x181*x182 + t*x181*x170 -
    2*x185 - x177 - x176 - 4*x184 - 2*x174 - 4*x172 - 3*x180 -
    3*x171 - x183 - x170 == 0,
  t*3*x182*x183 + t*4*x182*x169 + t*x182*x179 + t*x182*x168 +
    t*3*x182*x174 + t*3*x182*x172 + t*x182*x171 + t*x182*x185 +
    t*x182*x177 + t*x182*x176 + t*x182*x178 + t*x182*x170 +
    t*3*x182*x173 + t*x182*x175 - x168 - x172 - 4*x181 - 2*x171 -
    5*x185 - 2*x176 - x178 - 3*x170 - 2*x180 - x175 == 0,
  t*x183*x174 + t*5*x183*x181 + t*2*x183*x178 + t*2*x183*x177 +
    t*2*x183*x182 + t*x183*x170 + t*x183*x180 + t*2*x183*x173 +
    t*x183*x169 + t*3*x183*x179 + t*x183*x168 - x174 - 2*x181 -
    3*x171 - x178 - x177 - 2*x184 - 2*x170 - x173 - x169 - 2*x179 -
    4*x168 == 0,
  t*2*x184*x185 + t*3*x184*x177 + t*x184*x176 + t*4*x184*x182 +
    t*3*x184*x180 + t*2*x184*x173 + t*2*x184*x175 + t*2*x184*x169 +
    t*2*x184*x179 + t*5*x184*x172 + t*3*x184*x181 + t*2*x184*x171 +
    t*5*x184*x183 - x185 - x176 - 2*x180 - x173 - x175 - x178 - x172 -
     x181 - x171 - 3*x183 == 0,
  t*4*x185*x182 + t*x185*x170 + t*x185*x180 + t*2*x185*x173 +
    t*3*x185*x175 + t*4*x185*x178 + t*5*x185*x169 + t*4*x185*x179 +
    t*2*x185*x184 + t*x185*x181 + t*x185*x183 + t*4*x185*x177 +
    t*x185*x176 - x182 - x170 - 2*x180 - 2*x175 - 2*x178 - 2*x169 -
    2*x184 - x174 - x172 - x183 - 3*x176 == 0},
{x169, x170, x171, x172, x173, x174, x175, x176, x177, x178, x179,
  x180, x181, x182, x183, x184, x185},
WorkingPrecision -> MachinePrecision]

За 30 часов решение не было найдено. Загрубил точность. Очередная попытка. Через 12 часов произошел сбой. Что именно произошло не знаю. Компьютер ночью сам перезагрузился.
Как ведёт себя программа, если задача не имеет решения?
Как мне это победить? Научите, пожалуйста. Опыта применения Mathematica нет совсем.
Мне вполне хватило бы для начала получить значения иксов с точностью до 1 %.
Беспокоит то, что программа загружает процессор от силы на 20%. Из 8 ядер (4 физических) работает большую часть времени одно.

 Профиль  
                  
 
 Re: Mathematica и сист. нелинейных уравненией (не по зубам?)
Сообщение13.03.2013, 18:14 


08/03/12
60
Для численных расчетов используйте MatLab. В Mathematica лучше ограничиться символьными вычислениями, у нее для этого интерфейс удобнее.

 Профиль  
                  
 
 Re: Mathematica и сист. нелинейных уравненией (не по зубам?)
Сообщение13.03.2013, 20:16 
Аватара пользователя


15/01/06
200
Во-первых, что за параметр x4 системе уравнений? Во-вторых, так задумано, что уравнений больше, чем переменных?
Если Математика не может найти решения, то вести себя может по-разному - и ругаться, и бесконечно долго что-то делать и выдавать ответ с отсутствием решения.

 Профиль  
                  
 
 Re: Mathematica и сист. нелинейных уравненией (не по зубам?)
Сообщение14.03.2013, 11:13 
Аватара пользователя


13/03/13
28
Leierkastenmann , ну и глаз у Вас! Как у снайпера.
Leierkastenmann в сообщении #695145 писал(а):
Во-первых, что за параметр x4 в системе уравнений?

Опечатка. Я данные из базы mySQL беру. Уравнения написал для быстроты и надёжности скриптом. Потом просто скопипастил, извините, в Mathematica. Когда ничего не вышло, подумал, что не корректный ввод. Вводил повторно вручную. Так ошибка и получилась. Всё поправил и оставил на ночь считать. Через 9 часов результатов пока не видно.
Leierkastenmann в сообщении #695145 писал(а):
Во-вторых, так задумано, что уравнений больше, чем переменных?

Ну это модель объекта и все они описывают его состояние.
Leierkastenmann , Вы полагаете, что можно что-то сократить?
Значения искомых должны лежать в диапазоне от 0 до 1. Если это ограничение как-то ввести, поможет?

Вообще я расстроен. Нужно решить 20 подобных систем для начала. А тут на тебе! :-(

 Профиль  
                  
 
 Re: Mathematica и сист. нелинейных уравненией (не по зубам?)
Сообщение14.03.2013, 19:56 
Аватара пользователя


15/01/06
200
altestudent, результат вовсе и не обязан быть даже после исправления ошибки. Конечно, упростить было бы неплохо, даже продвинутые проги не всегда могут решать задачу поставленную в лоб, а чуть причешешь ее, и уже что-то можно получить. Но в вашем конкретном случае я бы не стал заниматься упрощениями для того, чтобы снова применить метод NSolve. Ведь вы же не гарантируете, что существует решение этой системы уравнений? Поэтому я для начала бы численно прощупал почву, например использовав довольно быстро и неплохо работающий метод NMinimize, например, вот так
Код:
NMinimize[{Abs[-28 + 1988 x169 + 2976 x170 + 3000 x169 x170 +
    2978 x171 + 3000 x169 x171 + 4000 x170 x171 + 976 x172 +
    1000 x169 x172 + 4000 x170 x172 + 4000 x171 x172 + 5990 x173 +
    3000 x169 x173 + 4000 x170 x173 + 2000 x171 x173 + 2982 x174 +
    1000 x170 x174 + 5000 x171 x174 + 5000 x172 x174 +
    6000 x173 x174 - 11 x175 + 2000 x169 x175 + 8000 x170 x175 +
    4000 x171 x175 + 7000 x172 x175 + 1000 x173 x175 +
    4000 x174 x175 + 980 x176 + 8000 x169 x176 + 6000 x170 x176 +
    3000 x171 x176 + 3000 x172 x176 + 3000 x173 x176 +
    3000 x174 x176 + 3000 x175 x176 + 2989 x177 + 2000 x169 x177 +
    2000 x170 x177 + 1000 x171 x177 + 1000 x172 x177 +
    3000 x173 x177 + 4000 x174 x177 + 3000 x175 x177 +
    6000 x176 x177 + 5975 x178 + 3000 x169 x178 + 2000 x170 x178 +
    5000 x171 x178 + 3000 x172 x178 + 3000 x173 x178 +
    5000 x174 x178 + 5000 x175 x178 + 5000 x176 x178 +
    6000 x177 x178 + 1980 x179 + 2000 x169 x179 + 1000 x170 x179 +
    2000 x171 x179 + 3000 x172 x179 + 3000 x173 x179 +
    3000 x174 x179 + 4000 x175 x179 + 4000 x176 x179 +
    2000 x177 x179 + 4000 x178 x179 + 6975 x180 + 3000 x169 x180 +
    2000 x170 x180 + 4000 x171 x180 + 2000 x172 x180 +
    3000 x173 x180 + 2000 x174 x180 + 3000 x175 x180 +
    3000 x176 x180 + 3000 x177 x180 + 3000 x178 x180 +
    3000 x179 x180 + 2980 x181 + 1000 x169 x181 + 5000 x170 x181 +
    3000 x171 x181 + 2000 x172 x181 + 5000 x173 x181 +
    3000 x174 x181 + 2000 x175 x181 + 7000 x176 x181 +
    6000 x177 x181 + 5000 x178 x181 + 3000 x179 x181 +
    5000 x180 x181 + 6985 x182 + 4000 x169 x182 + 2000 x170 x182 +
    4000 x171 x182 + 7000 x172 x182 + 5000 x173 x182 +
    8000 x174 x182 + 5000 x175 x182 + 2000 x176 x182 +
    3000 x177 x182 + 3000 x178 x182 + 3000 x179 x182 +
    1000 x180 x182 + 3000 x181 x182 + 3986 x183 + 2000 x169 x183 +
    2000 x170 x183 + 6000 x171 x183 + 1000 x172 x183 +
    5000 x173 x183 + 3000 x174 x183 + 2000 x175 x183 +
    3000 x177 x183 + 3000 x178 x183 + 3000 x179 x183 +
    4000 x180 x183 + 7000 x181 x183 + 5000 x182 x183 - 29 x184 +
    2000 x169 x184 + 4000 x171 x184 + 8000 x172 x184 +
    3000 x173 x184 + 3000 x174 x184 + 3000 x175 x184 +
    3000 x176 x184 + 7000 x177 x184 + 2000 x178 x184 +
    3000 x179 x184 + 4000 x180 x184 + 3000 x181 x184 +
    4000 x182 x184 + 5000 x183 x184 + 2974 x185 + 7000 x169 x185 +
    5000 x170 x185 + 6000 x171 x185 + 3000 x172 x185 +
    4000 x173 x185 + 3000 x175 x185 + 3000 x176 x185 +
    4000 x177 x185 + 5000 x178 x185 + 7000 x179 x185 +
    2000 x180 x185 + 5000 x181 x185 + 5000 x182 x185 +
    1000 x183 x185 + 4000 x184 x185],
  x169 >= 0, x170 >= 0, x171 >= 0, x172 >= 0, x173 >= 0, x174 >= 0,
  x175 >= 0, x176 >= 0, x177 >= 0, x178 >= 0, x179 >= 0, x180 >= 0,
  x181 >= 0, x182 >= 0, x183 >= 0, x184 >= 0, x185 >= 0,
  x169 <= 1, x170 <= 1, x171 <= 1, x172 <= 1, x173 <= 1, x174 <= 1,
  x175 <= 1, x176 <= 1, x177 <= 1, x178 <= 1, x179 <= 1, x180 <= 1,
  x181 <= 1, x182 <= 1, x183 <= 1, x184 <= 1, x185 <= 1
  }, {x169, x170, x171, x172, x173, x174, x175, x176, x177, x178,
  x179, x180, x181, x182, x183, x184, x185}]

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

P.S. Я в вашей системе уравнений х4 просто убрал. Если это не так, то минимизируемую функцию надо подкорректировать.

 Профиль  
                  
 
 Re: Mathematica и сист. нелинейных уравненией (не по зубам?)
Сообщение15.03.2013, 13:08 
Аватара пользователя


13/03/13
28
CBst в сообщении #695095 писал(а):
Для численных расчетов используйте MatLab. В Mathematica лучше ограничиться символьными вычислениями, у нее для этого интерфейс удобнее.

Спасибо, CBst, MatLab разобрался с системой за 10 минут. Правда результат не обрадовал.
А Mathematica хоть и не такая шустрая как Matlab (в этом конкретном случае), но гараздо дружелюбнее.

-- 15.03.2013, 11:34 --

Leierkastenmann в сообщении #695684 писал(а):
результат вовсе и не обязан быть даже после исправления ошибки

Так оно и есть:
"Warning: Explicit solution could not be found."
Leierkastenmann в сообщении #695684 писал(а):
не получим все возможные решения системы, но по крайней мере хоть что-то можно будет понять.

Уважаемый Leierkastenmann, вот такой результат дал предложенный Вами метод.
Код:
{0.0000261353, {x169 -> 2.51393*10^-6, x170 -> 3.77411*10^-6,
  x171 -> 0.00138428, x172 -> 0.00230449, x173 -> 0.000555124,
  x174 -> 3.79621*10^-6, x175 -> 0.00195515, x176 -> 0.00212827,
  x177 -> 0.000218191, x178 -> 0.0000149227, x179 -> 0.0000381033,
  x180 -> 0.0000263548, x181 -> 3.73819*10^-6, x182 -> 0.00214434,
  x183 -> 9.80171*10^-7, x184 -> 0.000851659, x185 -> 3.75642*10^-6}}

Составляя систему уравнений я полагал, что значения Х-ов будут различаться максимум в разы.

 Профиль  
                  
 
 Re: Mathematica и сист. нелинейных уравненией (не по зубам?)
Сообщение15.03.2013, 14:57 
Аватара пользователя


13/03/13
28
Но тут не значения. Как с этим быть? Да, математик из меня как из известного материала пуля.
Вариант первый - модель не верна. Дальше понятно что делать.
Вариант второй. Есть некий неучтенный фактор. Можно ли его вычислить и таким образом сбалансировать систему?
Что это за фактор в реальности можно будет потом сообразить. Идти как бы с обеих сторон. Окружать проблему.

 Профиль  
                  
 
 Re: Mathematica и сист. нелинейных уравненией (не по зубам?)
Сообщение15.03.2013, 18:02 
Аватара пользователя


13/03/13
28
Нет, нет.
Leierkastenmann , спасибо.
Всё что мне нужно, Вы мне уже сказали.
Остается сообразить:-)

 Профиль  
                  
 
 Re: Mathematica и сист. нелинейных уравненией (не по зубам?)
Сообщение15.03.2013, 20:46 
Аватара пользователя


15/01/06
200
altestudent, а какой результат выдал матлаб, что он вас не порадовал?

 Профиль  
                  
 
 Re: Mathematica и сист. нелинейных уравненией (не по зубам?)
Сообщение19.03.2013, 14:39 
Аватара пользователя


13/03/13
28
Ответ MatLab'a - решение в явном виде не возможно.

 Профиль  
                  
 
 Re: Mathematica и сист. нелинейных уравненией (не по зубам?)
Сообщение19.03.2013, 16:30 
Аватара пользователя


13/03/13
28
подскажите пожалуйста, как записать задачу, чтоб Nsolve искала решение системы для неизвестных, где неизвестные - только целые числа. Например 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, или 10.

 Профиль  
                  
 
 Re: Mathematica и сист. нелинейных уравненией (не по зубам?)
Сообщение19.03.2013, 19:59 
Аватара пользователя


15/01/06
200
Если любые целые числа, то достаточно написать, например, так:
Код:
NSolve[{x + y == 2, x - y == 0.1}, {x, y}, Integers]

Если же целые числа из определенного диапазона, то в систему уравнений надо добавить еще неравенства для всех переменных.

 Профиль  
                  
 
 Re: Mathematica и сист. нелинейных уравненией (не по зубам?)
Сообщение20.03.2013, 01:41 
Аватара пользователя


13/03/13
28
Спасибо, Leierkastenmann,
Код:
NSolve[{x1 + y1 == 2, x2 - y2 == 0.1}, {x, y}, Integers]

Значит, если х - целые числа в диапазоне от 0 до 9, а y- десятичные в диапазоне от 0 до 1, то запись в mathematica будет иметь следующий вид:
Код:
NSolve[{
x1 + y1 == 2,
x2 - y2 == 0.1,
x1 + 3*y2 == 8,
x2 +y1 == 5.9,
х1>=0,
x2>=0,
x1<=9,
x2<=9,
y1>0,
y2>0,
y1<=1,
y2<=1
}, {{x}, Integers, y}]

Так, нет?
Как указать, что xx - Integers, а yy - нет?

-- 20.03.2013, 00:04 --

И, если позволите, дальше.
Mathematica даст результат вида:
Код:
{
{x1->2, x2->3,y1->5,y2->6},
{x1->2, x2->3,y1->5,y2->6},
{x1->5, x2->1,y1->7,y2->6},
...
}

Положим вариантов решений будет N (совсем много). Будут ли выведены все решения? Или есть у программы ограничения - не выводит более 50, например, хотя решений 1000. Как тогда быть?

Как средствами Mathematica обработать результат так, чтобы узнать какое количество решений n, в которых только x1 = 2 , а сколько решений, где х1=2 и y2=7. Ну и дальше разные варианты сортировки.
Я знаю как это реализовать средствами php, но не хотелось бы городить огород. В программе наверняка такие возможности есть.

 Профиль  
                  
 
 Re: Mathematica и сист. нелинейных уравненией (не по зубам?)
Сообщение20.03.2013, 19:53 
Аватара пользователя


15/01/06
200
altestudent в сообщении #698541 писал(а):
Значит, если х - целые числа в диапазоне от 0 до 9, а y- десятичные в диапазоне от 0 до 1, то запись в mathematica будет иметь следующий вид:
Код:
NSolve[{
x1 + y1 == 2,
x2 - y2 == 0.1,
x1 + 3*y2 == 8,
x2 +y1 == 5.9,
х1>=0,
x2>=0,
x1<=9,
x2<=9,
y1>0,
y2>0,
y1<=1,
y2<=1
}, {{x}, Integers, y}]

Так, нет?
Как указать, что xx - Integers, а yy - нет?


Не совсем так. Немного напутано с переменными, вот так правильней будет:
Код:
NSolve[{x1 + y1 == 2, x2 - y2 == 0.1, x1 + 3*y2 == 8, x2 + y1 == 5.9,
  x1 >= 0, x2 >= 0, x1 <= 9, x2 <= 9, y1 > 0, y2 > 0, y1 <= 1,
  y2 <= 1, Element[x1, Integers], Element[x2, Integers]}, {x1, y1, x2,
   y2}]


-- Ср мар 20, 2013 20:12:53 --

А если решений будет очень много, то ничего страшного, математика либо выведет все, либо задаст вопрос, что-то типа "выводимое значение слишком большое, хотите ли вывести его полностью", ну и вы соглашаетесь или нет. Много вывести для нее не проблема, проблема для вас все это глазами смотреть. Обработать полученные решения можно, например так:
Код:
vars = {x1, y1, x2, y2};
sol = vars /.
   NSolve[{x1 + y1 == 2, x2^2 - y2 == 0.1, x1 + 3*y2 == 8,
     x2 + y1 == 5.9}, vars];
Count[sol, _?(#[[1]] < 0 && #[[2]] > 5 &)]

Вторая строчка кода делает решение простым списком значений без подстановок переменных (если решений не будет, то sol будет равен vars). Третья строчка считает решения по условиям, заданным во второй переменной метода, условия там можно писать какие угодно, с использованием своих каких-то функций и т.п. В данном случае я просто считаю количество решений, в которых x1 отрицательное, y1 более 5.

 Профиль  
                  
 
 Re: Mathematica и сист. нелинейных уравненией (не по зубам?)
Сообщение22.03.2013, 00:42 
Аватара пользователя


12/03/11
693
Я правильно понимаю, что речь идет о решении полиномиальных уравнений?
Если так, и если Вы работаете в поле $\mathbb{C}$, то многие вопросы можно разрешить методом базисов Гребнера.
В частности, вопрос совместности системы...

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group