2014 dxdy logo

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

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




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


02/08/07
92
Здравствуйте!!!

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

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

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

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

С уважением,

Dmitry

 Профиль  
                  
 
 
Сообщение08.03.2008, 23:32 
Модератор
Аватара пользователя


11/01/06
5702
Какие уравнения тут имеются в виду? Если алгебраические, то можно попробовать решить систему точно (или хотя бы упростить) с помощью базисов Грёбнера. Но я не уверен, что матлаб умеет с ними работать - нужен пакет символьных вычислений, например, Maple или Singular.

 Профиль  
                  
 
 
Сообщение09.03.2008, 00:08 


02/08/07
92
Уравнения - алгебраические, но НЕЛИНЕЙНЫЕ. Главная особенность - их довольно большое число.

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

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

С уважением,

Dmitry

 Профиль  
                  
 
 
Сообщение09.03.2008, 00:23 
Модератор
Аватара пользователя


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

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

 Профиль  
                  
 
 
Сообщение09.03.2008, 15:48 


02/08/07
92
$ 
\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 


02/08/07
92
Здравствуйте!!!

$ 
\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 
Заслуженный участник
Аватара пользователя


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

 Профиль  
                  
 
 
Сообщение14.03.2008, 23:31 


02/08/07
92
Спасибо за ответ!!!

$ 
\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 
Модератор
Аватара пользователя


11/01/06
5702
Dmitrii
нажмите на своем сообщении кнопочку Изображение и отредактируйте его.

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

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

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

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

 Профиль  
                  
 
 
Сообщение18.03.2008, 17:03 
Модератор
Аватара пользователя


11/01/06
5702
А на значения переменных какие ограничения накладываются?

 Профиль  
                  
 
 
Сообщение19.03.2008, 00:27 


02/08/07
92
Уважаемый maxal!!!

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

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

С уважением,

Dmitry

 Профиль  
                  
 
 
Сообщение19.03.2008, 00:33 


02/08/07
92
Благодарю всех за помощь (в т.ч. посредством личных сообщений)!!!

Суть задачи, приведшей ко всем этим уравнениям, следующая: есть экспериментальные данные (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 


17/03/08
40
МИФИ, каф. Прикладная математика.
Уважаемый, почему бы Вам не проделать это в Мапле и не перенести потом на Матлаб? функция перевода в Мапле есть.

 Профиль  
                  
 
 
Сообщение30.03.2008, 01:40 


02/08/07
92
Здравствуйте!!!

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

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

С уважением

Dmitry

 Профиль  
                  
 
 
Сообщение14.04.2008, 00:27 
Модератор
Аватара пользователя


11/01/06
5702
Посмотрите по ссылкам приведенным тут: viewtopic.php?t=13448
Там указаны в частности и готовые программы для решения систем полиномиальных уравнений.

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

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

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



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

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


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

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