2014 dxdy logo

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

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




 
 Решение системы НЕЛИНЕЙНЫХ уравнений в MATLAB
Сообщение08.03.2008, 23:27 
Здравствуйте!!!

Мне необходимо решить систему нелинейных уравнений в Matlab. Система имеет 2 особенности:

1) Количество уравнений довольно большое (от 30 и более);
2) Необходима высокая точность результатов (мне известны истинные значения и необходимо их же получить с помощью fsolve в Matlab)

Проблема в том, что функция fsolve не дает мне решений с требуемой точностью. Пробовал рассчитывать якобиан системы как вручную (путем задания формул), так и с помощью функции fsolve (расчет ведется внутри). К тому же, результат очень сильно зависит от начального приближения. Очень часто выдается сообщение, что итерационный процесс остановлен, т.к. результат сходится не к нулю функции, а к ее минимуму, хотя квадрат нормы всех функций системы очень мал.

Что вы мне посоветуете для повышения точности результатов работы функции fsolve? Может, есть еще какие-то функции для решения систем нелинейных уравнений? Буду признателен за любые советы и комментарии.

С уважением,

Dmitry

 
 
 
 
Сообщение08.03.2008, 23:32 
Аватара пользователя
Какие уравнения тут имеются в виду? Если алгебраические, то можно попробовать решить систему точно (или хотя бы упростить) с помощью базисов Грёбнера. Но я не уверен, что матлаб умеет с ними работать - нужен пакет символьных вычислений, например, Maple или Singular.

 
 
 
 
Сообщение09.03.2008, 00:08 
Уравнения - алгебраические, но НЕЛИНЕЙНЫЕ. Главная особенность - их довольно большое число.

Что касается символьных вычислений, то я пока их в Матлаб не пробовал, но думаю он вряд ли решит систему из 30-40 уравнений (30-40 неизвестных) в символьном виде. Должен быть способ увеличения точности при обычном задании функции. Или, наконец, другие функции для НЛ систем.

Если требуется, могу привести систему (сократив ее)

С уважением,

Dmitry

 
 
 
 
Сообщение09.03.2008, 00:23 
Аватара пользователя
Вы слово НЕЛИНЕЙНЫЕ в каждом сообщении будете повторять? Понятно, что о них идет речь, тем более что они в теме сообщения так выделены. Базисы Грёбнера как предоставляют аппарат для решения систем нелинейных алгебраических уравнений. И 30-40 переменных должно быть в пределах досягаемости (хотя все от системы зависит).

А системку приведите для примера.

 
 
 
 
Сообщение09.03.2008, 15:48 
$ 
\left\{ \begin{array}{l} 

$$\sum\limits_{j=1}^N Yex_j_k X_j\ - a_k \sum\limits_{j=1}^N Xex_j X_j\   -  c_k \sum\limits_{j=1}^N X_j^2\  - \sum\limits_{j=1}^N Y_j X_j\   - \frac 1 N  ( \sum\limits_{j=1}^N X_j ) ( \sum\limits_{j=1}^N Yex_j_k\ -  a_k \sum\limits_{j=1}^N Xex_j\ - c_k \sum\limits_{j=1}^N X_j\  - \sum\limits_{j=1}^N Y_j )\  = 0 \   ,  \\  
\sum\limits_{j=1}^N Yex_j_k Xex_j\ - a_k \sum\limits_{j=1}^N Xex_j^2\   -  c_k \sum\limits_{j=1}^N X_j Xex_j\  - \sum\limits_{j=1}^N Y_j Xex_j\   - \frac 1 N  ( \sum\limits_{j=1}^N Xex_j ) ( \sum\limits_{j=1}^N Yex_j_k\ -  a_k \sum\limits_{j=1}^N Xex_j\ - c_k \sum\limits_{j=1}^N X_j\  - \sum\limits_{j=1}^N Y_j )\  = 0 \   ,    k = 1,...., M \\   

\sum\limits_{k=1}^M Yex_j_k\ - Xex_j \sum\limits_{k=1}^M a_k\   -  X_j \sum\limits_{k=1}^M c_k \  - M Y_j - \frac 1 N  \sum\limits_{k=1}^M \   (\sum\limits_{j=1}^N Yex_j_k\ -  a_k \sum\limits_{j=1}^N Xex_j\ - c_k \sum\limits_{j=1}^N X_j\  - \sum\limits_{j=1}^N Y_j )\  = 0 \   ,\\ 

\sum\limits_{k=1}^M Yex_j_k c_k\ - Xex_j \sum\limits_{k=1}^M a_k c_k\   -  X_j \sum\limits_{k=1}^M c_k^2 \  - Y_j \sum\limits_{k=1}^M c_k \   - \frac 1 N  (\sum\limits_{k=1}^M c_k \  ( \sum\limits_{j=1}^N Yex_j_k\ -  a_k \sum\limits_{j=1}^N Xex_j\ - c_k \sum\limits_{j=1}^N X_j\  - \sum\limits_{j=1}^N Y_j ))\  = 0 \   ,\\ 

\end{array} \right. 
$


1-е уравнение: (всего M уравнений, соответствующих разным k)
2-е уравнение: (всего M уравнений, соответствующих разным k)
3-е уравнение: (всего N уравнений, соответствующих разным j)
4-е уравнение: (всего N уравнений, соответствующих разным j)

Всего имеем 2M+2N уравнений, которые надо решить

Известные величины:

$  1) Xex_j; j = 1,... N  $
$ 2) Yex_j_k;  j = 1,..., N ; k = 1,..., M $

Незвестные величины:

$  1) X_j; j = 1,... N  $
$  2) Y_j;  j = 1,..., N  $
$  3) a_k, c_k; k = 1,.., M $

Вскго 2M+2N неизвестных (= числу уравнений - система определенная)

С уважением,

Dmitry

 
 
 
 Частные производные
Сообщение14.03.2008, 18:19 
Здравствуйте!!!

$ 
\left\

$$ E = \sum\limits_{j=1}^J\sum\limits_{k=1}^K  \left(   \frac {\(Yex_j_k - a_k Xex_j +  a_k Z_k (\sum\limits_{i=1}^N g_i_j X_i)\ - Y_j - b_k}  {Yex_j_k} \right) ^2  \\ 

1) $\frac{\partial E}{\partial a_k}$  =  2 \sum\limits_{j=1}^J\sum\limits_{k=1}^K   \frac {\( (Yex_j_k - a_k Xex_j +  a_k Z_k (\sum\limits_{i=1}^N g_i_j X_i) \ - Y_j - b_k ) (-Xex_j + Z_k \sum\limits_{i=1}^N g_i_j X_i \ )  }  {(Yex_j_k)^2}  \\ 


2) $\frac{\partial E}{\partial b_k}$  =  2 \sum\limits_{j=1}^J\sum\limits_{k=1}^K   \frac {\( (Yex_j_k - a_k Xex_j +  a_k Z_k (\sum\limits_{i=1}^N g_i_j X_i) \ - Y_j - b_k ) (-1)  }  {(Yex_j_k)^2}  \\ 

3) $\frac{\partial E}{\partial Z_k}$  =  2 \sum\limits_{j=1}^J\sum\limits_{k=1}^K   \frac {\( (Yex_j_k - a_k Xex_j +  a_k Z_k (\sum\limits_{i=1}^N g_i_j X_i) \ - Y_j - b_k ) (a_k \sum\limits_{i=1}^N g_i_j X_i \ )  }  {(Yex_j_k)^2}  \\ 


4) $\frac{\partial E}{\partial Y_j}$  =  2 \sum\limits_{j=1}^J\sum\limits_{k=1}^K   \frac {\( (Yex_j_k - a_k Xex_j +  a_k Z_k (\sum\limits_{i=1}^N g_i_j X_i) \ - Y_j - b_k ) (-1)  }  {(Yex_j_k)^2}  \\ 

5) $\frac{\partial E}{\partial X_i}$  =  2 \sum\limits_{j=1}^J\sum\limits_{k=1}^K   \frac {\( (Yex_j_k - a_k Xex_j +  a_k Z_k (\sum\limits_{i=1}^N g_i_j X_i) \ - Y_j - b_k ) (a_k Z_k \sum\limits_{i=1}^N g_i_j \ )  }  {(Yex_j_k)^2}  \\ 

 \right. 
$

Меня интересует, правильно ли вычислены эти частные производные (немного смущает двойная сумма в исходном выражении для E) и во всех ли случаях эти формулы (если они верны) работают (не накладывается ли ограничения на равномерную, абсолютную сходимость исходного ряда E и т.д.)?

Заранее благодарю

С уважением

Dmitry

 
 
 
 
Сообщение14.03.2008, 18:53 
Аватара пользователя
Сразу могу сказать, что 1)-4) неправильно. Может быть, 5) тоже неправильно, подробно лень разбирать.
Что неправильно: слева стоит свободная переменная ( k в $a_k$, $b_k$ и $Z_k$, j в $Y_j$), а справа эти переменные связаны, т.к. по ним идёт суммирование. Т.е. Вы путаете индекс переменной, по которой производится дифференцирование, с индексом, по которому производится сумирование справа. По-моему, $\sum\limits_{k=1}^K$ и т.п. справа нужно опустить, но вроде ещё ошибки есть...

 
 
 
 
Сообщение14.03.2008, 23:31 
Спасибо за ответ!!!

$ 
\left\


1) $\frac{\partial E}{\partial a_k}$  =  2 \sum\limits_{j=1}^J  \frac {\( (Yex_j_k - a_k Xex_j +  a_k Z_k (\sum\limits_{i=1}^N g_i_j X_i) \ - Y_j - b_k ) (-Xex_j + Z_k \sum\limits_{i=1}^N g_i_j X_i \ )  }  {(Yex_j_k)^2}  \\ 


2) $\frac{\partial E}{\partial b_k}$  =  2 \sum\limits_{j=1}^J  \frac {\( (Yex_j_k - a_k Xex_j +  a_k Z_k (\sum\limits_{i=1}^N g_i_j X_i) \ - Y_j - b_k ) (-1)  }  {(Yex_j_k)^2}  \\ 

3) $\frac{\partial E}{\partial Z_k}$  =  2 \sum\limits_{j=1}^J  \frac {\( (Yex_j_k - a_k Xex_j +  a_k Z_k (\sum\limits_{i=1}^N g_i_j X_i) \ - Y_j - b_k ) (a_k \sum\limits_{i=1}^N g_i_j X_i \ )  }  {(Yex_j_k)^2}  \\ 


4) $\frac{\partial E}{\partial Y_j}$  =  2 \sum\limits_{k=1}^K   \frac {\( (Yex_j_k - a_k Xex_j +  a_k Z_k (\sum\limits_{i=1}^N g_i_j X_i) \ - Y_j - b_k ) (-1)  }  {(Yex_j_k)^2}  \\ 

5) $\frac{\partial E}{\partial X_i}$  =  2 \sum\limits_{j=1}^J\sum\limits_{k=1}^K   \frac {\( (Yex_j_k - a_k Xex_j +  a_k Z_k (\sum\limits_{i=1}^N g_i_j X_i) \ - Y_j - b_k ) (a_k Z_k  g_i_j \ )  }  {(Yex_j_k)^2}  \\ 

 \right. 
$

Что еще вы имели в виду, говоря, что есть еще ошибки? Правильны ли мои корректировки?

С уважением,

Dmitry

 
 
 
 
Сообщение15.03.2008, 01:13 
Аватара пользователя
Dmitrii
нажмите на своем сообщении кнопочку Изображение и отредактируйте его.

Добавлено спустя 43 минуты 43 секунды:

Dmitrii
не нужно дублировать существующие сообщения. Просто отредактируйте верхнее сообщение.

Добавлено спустя 2 минуты 7 секунд:

А по существу задачи, зачем вам вообще понадобилось считать производные самому? Почему бы не довериться в этом вопрос компьютеру? Тем более, что вы потом все равно будете решать эту систему на компе.

 
 
 
 
Сообщение18.03.2008, 17:03 
Аватара пользователя
А на значения переменных какие ограничения накладываются?

 
 
 
 
Сообщение19.03.2008, 00:27 
Уважаемый maxal!!!

Указанная здесь система была мною задана не совсем точно - она приведена обновленная и в окончательном виде по ссылке: http://dxdy.ru/viewtopic.php?t=12466. Там, кстати, мы (я и участники) уже обсуждали некоторые вопросы, связанные с ней.

Буду вам очень признателен за помощь (см. ссылку выше!!!)

С уважением,

Dmitry

 
 
 
 
Сообщение19.03.2008, 00:33 
Благодарю всех за помощь (в т.ч. посредством личных сообщений)!!!

Суть задачи, приведшей ко всем этим уравнениям, следующая: есть экспериментальные данные (Yex - двумерный массив, Xex - одномерный массив) и некоторый физический закон, позволяющий найти эти данные путем расчета, но с неизвестными параметрами: a, Z, b, X, Y (формулы для расчета записана в числителе E и отнимается от Yex). Эти параметры надо опрелить так, чтобы минимизировать величину E, указанную вами и мной в начале. Но что более важно - необходимо, чтобы ОТНОСИТЕЛЬНАЯ погрешность между любой парой экспериментальных данных (Yex) и расчетных (полученных с использованием a, Z, b, X, Y) была меньше 10% (заданный фиксированный порог).

Задача осложняется последним обстоятельством (необходимостью сделать отн. пог. меньше 10%), а также наличием пропусков в исходных экспериментальных значениях Yex..

Для решения задачи я нахожу частные проихзводные по неизвестным параметрам, приравниваю их к нулю, нахожу оптимальные значения параметров и по ним нахожу расчетные значения и сопоставляю с экспериментальными. Пропуски заполняю методом средних, регрессией, а также учетом динамики других непропущенных значений (для даной задачи это имеет смысл).

--------------------------------------------------------------------------------------------------------------------------

В связи с этим несколько вопросов:

1) На ваш взгляд, правильно ли (оптимально ли) выбран критерий для минимизации- выражение E (с учетом 10% ограничения)?

2) Поскольку получающаяся система нелинейная и решается численными методами (я это делаю в Matlab), то есть вероятность плохой обусловленности якобиана. Для улучшения обусловленности я проводил нормировку якобиана по столбцам (делил элементы каждого столбца на евклидову норму столбца), получал решение и возвращался к исходному множеству путем домножения на матрицу, обратную матрице якобиана. Обусловленность улучшалась на 10 порядков. Может, есть какие-то еще способы улучшения обусловленности системы?

3) Пока мне не удается для всех случаев получить относительную погрешность в пределах 10%. Может, есть какие-то методы уточнения решения системы нелинейныхх уравнений? Например, я пробовал итерационное уточнение, но результат не сильно улучшался.

4) Какой, на ваш взгляд, оптимальный способ заполнения пропусков с учетом моего критерия (10% относительная погрешность между любой парой эксп. и расчетных данных)?

---------------------------------------------------------------------------------------------

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

Заранее признателен за компетентную помощь и советы.

С уважением,

Dmitry

 
 
 
 
Сообщение25.03.2008, 16:25 
Уважаемый, почему бы Вам не проделать это в Мапле и не перенести потом на Матлаб? функция перевода в Мапле есть.

 
 
 
 
Сообщение30.03.2008, 01:40 
Здравствуйте!!!

Riga, что именно вы предагаете в Maple проделать? С производными я уже давно разобрался, но, к сожалению, пока 10% критерий мне удовлетворить не удается.

Вопрос: имеет ли моя задача в общем случае решение для произвольных данных? Т.е. можно ли так подобрать параметры неизвестного закона, чтобы относительная погрешность между любой парой значений расчетных и экспериментальных данных была меньше заранее заданного числа (в данном случае 10%)?

С уважением

Dmitry

 
 
 
 
Сообщение14.04.2008, 00:27 
Аватара пользователя
Посмотрите по ссылкам приведенным тут: viewtopic.php?t=13448
Там указаны в частности и готовые программы для решения систем полиномиальных уравнений.

Добавлено спустя 6 минут 21 секунду:

 !  Dmitrii, темы объединены. Не заводите несколько тем по одному и тому же вопросу.

 
 
 [ Сообщений: 15 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group