2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Помогите с системой нелинейных уравнений в MatLab
Сообщение11.10.2011, 11:42 


10/10/11
5
Есть система из 4х нелинейных тригонометрических уравнений с 4мя неизвестными. В уравнения входят комплексные числа, однако корни должны быть вещественными. Пример таких уравнений приведен ниже.

Цитата:
eq1 = (((Zl*sin(Tl))/(Zs*sin(Ts)/cos(Ts)) + cos(Tl))/(1i*Zl*sin(Tl))) - 0.06081/(-0.0105*1i);

eq2 = ((((Zl*sin(2.17*Tl))/(Zs*sin(2.17*Ts)/cos(2.17*Ts)) + cos(2.17*Tl))/(1i*Zl*sin(2.17*Tl))) - 0.00034395/(-0.0031*1i));

eq3 = ((2*cos(Tl) + 2*Zl*sin(Tl)/(Zs*sin(Ts)/cos(Ts)) + 1i*Zl*sin(Tl)/50 + 50*cos(Tl)/(1i*Zs*sin(Ts)/cos(Ts)) + 1i*50*sin(Tl)/Zl + 50*(Zl*sin(Tl)/(Zs*sin(Ts)/cos(Ts) + cos(Tl))/(1i*Zs*sin(Ts)/cos(Ts))))/((2*Zl*sin(Tl) - 1i*50*cos(Tl) - 1i*50*(Zl*sin(Tl)/(Zs*sin(Ts)/cos(Ts)) + cos(Tl)))/(Zs*sin(Ts)/cos(Ts) + 2*cos(Tl) + 1i*sin(Tl)*(Zl/50 + 50/Zl))) + 3.14/2);

eq4 = ((2*cos(2.17*Tl) + 2*Zl*sin(2.17*Tl)/(Zs*sin(2.17*Ts)/cos(2.17*Ts)) + 1i*Zl*sin(2.17*Tl)/50 + 50*cos(2.17*Tl)/(1i*Zs*sin(2.17*Ts)/cos(2.17*Ts)) + 1i*50*sin(2.17*Tl)/Zl + 50*(Zl*sin(2.17*Tl)/(Zs*sin(2.17*Ts)/cos(2.17*Ts) + cos(2.17*Tl))/(1i*Zs*sin(2.17*Ts)/cos(2.17*Ts))))/((2*Zl*sin(2.17*Tl) - 1i*50*cos(2.17*Tl) - 1i*50*(Zl*sin(2.17*Tl)/(Zs*sin(2.17*Ts)/cos(2.17*Ts)) + cos(2.17*Tl)))/(Zs*sin(2.17*Ts)/cos(2.17*Ts) + 2*cos(2.17*Tl) + 1i*sin(2.17*Tl)*(Zl/50 + 50/Zl))) + 3*3.14/2);


В MatLab я небольшой специалист и как её эффективно решать (ни solve, ни что либо еще мне не помогает), идей пока нет. Подскажите, пожалуйста. Заранее спасибо.

 Профиль  
                  
 
 Re: Помогите с системой нелинейных уравнений в MatLab
Сообщение11.10.2011, 15:30 
Экс-модератор
Аватара пользователя


23/12/05
12050
Мне кажется, тут прежде чем решать можно что-то поупращать в записи. Например: вместо $\sin(T_s)/\cos(T_s)$ сразу написать $\tg(T_s)$, да и не стоит подставлять числа, типа $3.14$ вместо $\pi$ - матлаб знает эту константу, а потом воспользоваться функцией fsolve() - посмотрите документацию по функции, там есть примеры

 Профиль  
                  
 
 Re: Помогите с системой нелинейных уравнений в MatLab
Сообщение11.10.2011, 17:32 


10/10/11
5
Спасибо. Упростив выражение я попробовал fsolve(). Проблема в том, что не смотря на начальное приближение, он находит всегда комплексные корни. Мне же нужны вещественные, поскольку комплексные в данном случае не имеют физического смысла. Можно как-нибудь это ограничить? Искал в документации, но не нашел.

 Профиль  
                  
 
 Re: Помогите с системой нелинейных уравнений в MatLab
Сообщение11.10.2011, 19:04 
Экс-модератор
Аватара пользователя


23/12/05
12050
а велика ли комплексная часть? может это просто погрешность вычисления?

 Профиль  
                  
 
 Re: Помогите с системой нелинейных уравнений в MatLab
Сообщение13.10.2011, 18:17 


28/10/09
35
А нули у функции есть?
Решения нужны все или хотя бы одно?
Я бы для начал свернул max(abs) и минимум поискал fminsearch.
В матлабе есть ещё целый модуль для глобальной оптимизации, но я им не пользовался, не знаю что там и как.

 Профиль  
                  
 
 Re: Помогите с системой нелинейных уравнений в MatLab
Сообщение16.10.2011, 10:14 


10/10/11
5
photon в сообщении #491671 писал(а):
а велика ли комплексная часть? может это просто погрешность вычисления?


Обычно, мнимая часть достаточно велика. Так, например:
Цитата:
0.0038 - 0.1571i
-1.4448 - 1.5110i
-0.5790 - 0.0146i
-1.5716 + 0.0000i

И хотелось бы отсеивать отрицательные и комплексные корни каким-то образом. Потому что не смотря на чисто вещественное первое приближение ответ по виду получается такой, как приведено выше.

-- 16.10.2011, 11:22 --

Reyn в сообщении #492200 писал(а):
А нули у функции есть?
Решения нужны все или хотя бы одно?
Я бы для начал свернул max(abs) и минимум поискал fminsearch.


Решение системы нужно хотя бы одно (для четырех переменных), но вещественное положительное. Почитал описание функций, но все-таки не совсем понимаю - поясните пожалуйста. Вы предлагает max(abs) где употребить? В описании входных функций? И потом искать минимум по четырем переменным? Заранее спасибо за разъяснения.

 Профиль  
                  
 
 Re: Помогите с системой нелинейных уравнений в MatLab
Сообщение16.10.2011, 23:50 
Экс-модератор
Аватара пользователя


23/12/05
12050
Toivo в сообщении #493034 писал(а):
Цитата:
0.0038 - 0.1571i
-1.4448 - 1.5110i
-0.5790 - 0.0146i
-1.5716 + 0.0000i


Э-э, а последний результат Вам чем не угодил?

 Профиль  
                  
 
 Re: Помогите с системой нелинейных уравнений в MatLab
Сообщение17.10.2011, 16:01 


10/10/11
5
photon в сообщении #493261 писал(а):
Toivo в сообщении #493034 писал(а):
Цитата:
0.0038 - 0.1571i
-1.4448 - 1.5110i
-0.5790 - 0.0146i
-1.5716 + 0.0000i


Э-э, а последний результат Вам чем не угодил?


Там четыре переменные и все четыре корня должны быть вещественными. А так с последним корнем все в порядке. Только с остальными тремя - не очень :)

 Профиль  
                  
 
 Re: Помогите с системой нелинейных уравнений в MatLab
Сообщение18.10.2011, 00:51 
Заслуженный участник


15/05/05
3445
USA
Toivo в сообщении #493034 писал(а):
Потому что не смотря на чисто вещественное первое приближение ответ по виду получается такой, как приведено выше.
У Вас есть проблема с постановкой задачи. Попробую объяснить

Существует стандартный прием - переход от комплексной системы из N уравнений к вещественной системе из 2*N уравнений.
Примитивный пример:
- решается комплексное уравнение $a + b x = 0$.
- вводим замену $a = a_r + j a_i ; b = b_r + j b_i; x = x_r + j x_i$
- получаем систему
$a_r + b_r x_r - b_i x_i = 0$
$a_i + b_i x_r + b_r x_i = 0$

Но если нужны только вещественные решения, то есть $x_i = 0$, то система становится переопределенной:
$a_r + b_r x_r = 0$
$a_i + b_i x_r = 0$
Легко видеть, что она имеет точное решение только при определенных значениях параметров $a_r, a_i, b_r, b_i$.

То же самое происходит и в Вашем случае. У Вас 4 комплексных уравнения для 4 комплексных неизвестных $Ts, Tl, Zs, Zl$ . Ей соответствует система из 8 вещественных уравнений с 8 вещественными неизвестными $Ts_r, Ts_i, Tl_r, Tl_i, Zs_r, Zs_i, Zl_r, Zl_i$. Если нужны только вещественные решения, то $Ts_i = 0, Tl_i = 0, Zs_i = 0, Zl_i = 0$.

То есть Вы хотите решить переопределенную систему из 8 вещественных уравнений с 4 вещественными неизвестными $Ts_r, Tl_r, Zs_r, Zl_r$.

 Профиль  
                  
 
 Re: Помогите с системой нелинейных уравнений в MatLab
Сообщение25.10.2011, 10:51 


10/10/11
5
Yuri Gendelman в сообщении #493687 писал(а):
Toivo в сообщении #493034 писал(а):
Потому что не смотря на чисто вещественное первое приближение ответ по виду получается такой, как приведено выше.
У Вас есть проблема с постановкой задачи. Попробую объяснить


Огромное спасибо. С системой вроде разобрался. Теперь остался вопрос - как найти хорошие начальные приближения для поиска решений?

 Профиль  
                  
 
 Re: Помогите с системой нелинейных уравнений в MatLab
Сообщение25.10.2011, 14:27 
Заслуженный участник


15/05/05
3445
USA
Toivo в сообщении #495863 писал(а):
...как найти хорошие начальные приближения для поиска решений?
Никаких общих формальных правил нет.
- Обычно пробуют несколько (вплоть до "много") разных начальных приближений.
- Если задача - прикладная, то учитывается физический смысл.
- Иногда удается сначала решить очень упрошенный вариант исходной системы и использовать его как нач.прибл.
- Если интуиция совсем ничего не подсказывает, то вспоминают преферанс ("хода нет - ходи с бубей") и задают начальное приближение (0, 0, ...) или (1, 1, ...).


Дополнительное замечание.

Вернусь к своему примеру:
Цитата:
Но если нужны только вещественные решения, то есть $x_i = 0$, то система становится переопределенной:
$a_r + b_r x_r = 0$
$a_i + b_i x_r = 0$
Легко видеть, что она имеет точное решение только при определенных значениях параметров $a_r, a_i, b_r, b_i$.
Решение $x_r = - \frac {a_r }{ b_r} = - \frac {a_i}{ b_i}$ существует при условии $a_r b_i = a_i b_r$.
То есть, мы нашли:
а) вещественное решение;
б) соотношения между параметрами, при котором вещественное решение существует.

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

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

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

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



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

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


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

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