2 / 1 / 1
Регистрация: 15.11.2019
Сообщений: 19
|
|||||||||||
1 | |||||||||||
Matlab 2014 Решение системы уравнений в matlab. Не сходится решение28.01.2020, 12:30. Показов 3846. Ответов 18
Метки нет (Все метки)
Здравствуйте! решаю такую сичтему уравнений (уравнения Кирхгофа применительно к задаче гидравлики для определения расходов). Решение выводится, однако вылазит сообщение, что задача не сошлась за 1100 итераций. При этом ответы зависят от приближения. Помогите пожалуйста разобраться с fsolve, или может есть другой способ решить их в матлабе?
Вот функция
0
|
28.01.2020, 12:30 | |
Ответы с готовыми решениями:
18
Решение системы дифференциальных уравнений в MATLAB Исследовать совместность и найти общее решение и одно частное решение системы уравнений. Решение не было найдено. Решение системы уравнений Решение скалярных уравнений в пакете Matlab |
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
|
|
28.01.2020, 14:33 | 2 |
Похоже Ваша система не имеет решения.
Причина скорее всего в том, что указаны неправильные данные в ZZ, Cycles, HH_v. Особенно подозрителен Cycles. При отсутствии описания задачи больше сказать ничего не могу
1
|
2 / 1 / 1
Регистрация: 15.11.2019
Сообщений: 19
|
|||||||||||
28.01.2020, 15:21 [ТС] | 3 | ||||||||||
Спасибо, что откликнулись! Ошибки пока что найти не удалось. Cycles действительно не до конца верный,но если всё таки решите помочь, в полном коде я оставил как мне кажется подробные комментарии. С правильным вручную введённым Cycles тоже не работает.
Я прилагаю изображение со схемой замещения гидравлической сети. В неё чёрными цифрами отмечены сопротивлекния, красными - ветви, синими - контуры(циклы). Каждое сопротивление и напорный элемент задаются соседними контурами. В коде выделяются узлы и контуры для составления уравнений. Уравнения по какой то причине не решаются. Законы Кирхкофа для гидравлической сети 1)Сколько втекает в узел, столько и вытекает 2)сумма падений напора на замкнутом контуре равняется сумме напоров напорных элементов. Последовательные сопротивления в ветви складываются Полный код
Функция из пакета по теории графов
0
|
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
|
|
28.01.2020, 16:06 | 4 |
Сообщение было отмечено kirill1g как решение
Решение
У Вас в упрощенном виде решения нет, а Вы приводите усложненный вариант получения матрицы Cycles.
При этом не знаете, какой она должна быть. Представьте Вы пытаетесь заставить работать код непонятно как работающий и неизвестно что должный получить в результате. По моему вероятность успеха ничтожна, а если что-то получиться то возможно случайно. У Вас есть трезвая мысль Следовательно перетоки имеют направление (как и ток в эл.схеме), а Вы на схеме направления (расчетные) не поставили. А помните как в 1-ом законе Кирхгофа - втекающие с плюсом, вытекающие с минусом (ну или наоборот, но не в этом дело - главное разные знаки. У Вас Вспомните правила умножения матриц. Кроме этого выражение Возведение в квадрат "съедает" знак, а если Вы помните 2-ой закон Кирхгофа, то знаки падений напряжения на сопротивлениях крайне важны PS А приспособление метода узловых потенциалов не проще было бы?
1
|
2 / 1 / 1
Регистрация: 15.11.2019
Сообщений: 19
|
|
28.01.2020, 16:55 [ТС] | 5 |
Матрицу cycles я задавал вручную, и при этом также решения не было.
По поводу направлений мне казалось что знаки выберутся автоматически по первому закону, а во втором они везде в квадрате, и направление течения на перепад напора(напряжения) влиять не будет. При этом знаки напорных элементов учитываются( забыл указать направление, каждый контур рассматривал по часовой стрелке). Нужно хорошенько обдумать это, вы заставили меня усомниться. О методе узловых потенциалов не слышал, по крайней мере под таким названием. Расскажите пожалуйста, чем он может помочь и в чём заключается?
0
|
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
|
|
29.01.2020, 07:30 | 6 |
Ну конечно, в MATLABe Бессонов зашит и как только MATLAB услышит Ваши мысли о 1-ом законе Кирхгофа, он сразу знаки правильно расставит.
Это тянет на великое "открытие" и шнобелевксую премию. Как люди раньше не догадались, что при изменении направления течения жидкости в трубе перепад давлений на концах сохраняется. Интересно а в этом случае как жидкость узнает в какую сторону ей течь по направлению уменьшения давления или навстречу. Думать всегда полезно, и главное попробовать немного вручную посчитать (или посмотреть в отладчике MATLABa) и посмотреть что получается. А так как в мультфильме "Вовка в тридевятом царстве" засунул в печку что попало и как попало - вот тебе и пирожки. Только пирожки сразу видно что фигня, а тут еще и понять это надо. Вы ТОЭ не изучали?
1
|
2 / 1 / 1
Регистрация: 15.11.2019
Сообщений: 19
|
|
29.01.2020, 12:47 [ТС] | 7 |
ТОЭ изучал, но как непрофильный предмет, видать и прозевал.
Вы правы, я действительно не знал, чего хочу получить. Опирался на результаты аналогичной проги в маткаде, которая, как мне казалось, опробирована и не один серьёзный проект на ней рассчитывался, но пока ломал голову и сравнивал результаты, заметил что падения напоров в параллельных ветвях там различны, и соответственно расходы определяются ошибочно. Решил более простую схему. Вы правы, знаки играют роль. Сравнил с результатом расчёта по заведомо верному методу. Почему не сделал так раньше - не знаю. Был уставший и мозг автоматически отбрасывал эту идею. Если интересно, объясню свою ошибку. По первому закону всё действительно подобралось бы, но по второму естественно нет. Я руководствовался ошибочной логикой о том, что контур для записи уравнения по второму закону рассматривается как бы отдельно от остальной сети, а в таком контуре падение напора(всё с одним знаком +) равно приросту напора(со знаками + или - в зависимости от направления действия). Спасибо большое, вы очень помогли. Пойду пытаться автоматизировать выбор направления потока в ветвях.
0
|
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
|
|
29.01.2020, 13:42 | 8 |
Обязательно на схеме расставьте предварительные (расчетные) направления перетоков в ветвях. Если в результате расчета получите отрицательную величину перетока, то значит не угадали с направлением перетока.
Это обязательное требование при расчете эл.цепей, да и гидравлических тоже. В этом Вы не правы. Если Все перетоки связанные с узлом все складывать без учета направления(знака) то сумма будет равна только в одном случае, когда все перетоки равны нулю. Поэтому в матрице Cycles должны быть 1(втекает), 0(в этот узел не попадает), -1(вытекает). Тогда все будет получаться. В MATLABe есть функция sign(x) для определения знака числа х. У Вас должно быть что-то типа F(num_ur_Q+1:num_ur_Q+num_ur_H)=sign(Q).*Q.^2*ZZ-HH_v; А совпадение или встречка обхода контура и направления перетока отображаться знаком в ZZ
0
|
416 / 200 / 69
Регистрация: 20.01.2019
Сообщений: 714
|
|
29.01.2020, 13:52 | 9 |
0
|
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
|
|
29.01.2020, 14:15 | 10 |
0
|
2 / 1 / 1
Регистрация: 15.11.2019
Сообщений: 19
|
|||||||||||
31.01.2020, 08:34 [ТС] | 11 | ||||||||||
Делал-делал, и сделал, только вот не решается всё равно. Решил вбить систему для такой схемы вручную, и всё равно сходимость не достигается. При этом простая системка работает и решение её даёт верный результат. Несколько часов пытался ошибку найти и никак не получается. Помогите пожалуйста, может ошибку заметите, или я опять что то не учитываю.
Прилагаю код программы и функции под спойлером. Также прилагаю изображения простой и сложной схем с обозначенными направлениями потоков, пронумерованными вевями. (Ветви пронумерованы красным цветом на сложной схеме). Закомментировваны уравнения для простой схемы. Программа Кликните здесь для просмотра всего текста
Функция Кликните здесь для просмотра всего текста
0
|
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
|
||||||
31.01.2020, 13:05 | 12 | |||||
Сообщение было отмечено kirill1g как решение
Решение
Конечно, Вам уже писал
Тоже самое необходимо делать и для описания нагрузочной характеристики насосов. В Вашей схеме гидронасос в 3-ей ветви работает в режиме двигателя, те переток происходит против направления стрелки.
1
|
574 / 363 / 186
Регистрация: 11.01.2019
Сообщений: 1,220
|
|
31.01.2020, 13:16 | 13 |
Сообщение было отмечено kirill1g как решение
Решение
kirill1g, крокодил не ловится, не решить задачку... Вероятно причина в отсутствии знака в уравнениях давления. Потери давления на участках (см."гугл") вместо Z*Q^2 должны быть Z*|Q|*Q, чтоб знак учитывался. Давление, как и сила, имеют направление действия.
Добавлено через 4 минуты ну вот, зря старался)
1
|
2 / 1 / 1
Регистрация: 15.11.2019
Сообщений: 19
|
|
31.01.2020, 16:03 [ТС] | 14 |
Эх, знал бы ты сколько я голову ломал! Спасибо тебе! Если для тебя очевидно, разъясни ещё пожалуйста, нужно ли также заменять квадраты неизвестных расходжов в слагаемых, отвечающих за действие напорных элементов? Если тебе не очевидно то думаю сам соображу, просто бошка не варит уже под конец дня)
Добавлено через 15 минут Извините, что на ты обратился. Ещё не заметил второй ответ. Спасибо обоим! Добавлено через 1 минуту А, так в том ответе который я не заметил и был ответ на только что заданный вопрос. Добавлено через 2 минуты Спасибо, что обратили внимание. Но всё же в данном случае не так важно. Задача - универсальный код для сетей любой сложности.
0
|
574 / 363 / 186
Регистрация: 11.01.2019
Сообщений: 1,220
|
|
31.01.2020, 16:45 | 15 |
kirill1g, расскажите о результатах, когда справитесь
0
|
5407 / 2762 / 558
Регистрация: 07.11.2019
Сообщений: 4,510
|
|
31.01.2020, 22:05 | 16 |
0
|
2 / 1 / 1
Регистрация: 15.11.2019
Сообщений: 19
|
|
03.02.2020, 07:31 [ТС] | 17 |
Погуглил, действительно, это бы несколько ускорило счёт, не знаю вот только, есть ли в этом необходимость. Не знал, что такое существует, спасибо за замечание!
Добавлено через 47 секунд Выложу готовую программу в эту тему
0
|
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
|
|
03.02.2020, 08:16 | 18 |
В коде #12 это уже было сделано
Слабое звено для автоматизации в данном подходе это составление контурных уравнений.
0
|
2 / 1 / 1
Регистрация: 15.11.2019
Сообщений: 19
|
|
03.02.2020, 14:08 [ТС] | 19 |
Спасибо большое всем за помощь! Вот программка, придумать сеть чтобы она её не решила я не сумел. Проверка на простых сетях сходится с ручным решением другим методом.
0
|
03.02.2020, 14:08 | |
03.02.2020, 14:08 | |
Помогаю со студенческими работами здесь
19
Решение систем дифференциальных уравнений в MATLAB Решение систем дифференциальных уравнений в MATLAB Решение системы нелинейных уравнений 8 уравнений – 8 неизвестных переменных Решение системы нелинейных уравнений (для двух уравнений) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |