Анон, возникла задача решить PDE в пистоне. Задача одномерная, 2 переменные: координата и время, от которых зависит концентрация C. Уравнение вида С(x,t)_t=Ddelta C(x,t) + div (C(x,t)V(x)) (процесс - диффузия частиц в вязкой жидкости, первый член описывает диффузию (используем коэффициент диффузии по формуле Эйнштейна-Сазерленда), второй - движение под действием силы (конкретно - центробежной силы при седиментации в центрифуге) с устоявшейся скоростью (закон Стокса, https://en.wikipedia.org/wiki/Stokes'_law )). Цель - определить распределение частиц по размерам в растворе после t секунд в центрифуге при известном начальном распределении и геометрии. Пробирку будем моделировать как одномерный цилиндр бесконечного радиуса, начальное условие - все концентрации равны, граничные условия - скорость частиц на дальней от центра стенке равна 0. Температуру считаем комнатной. Я правильно сформулировал задачу?
Похоже, что уравнение не решается аналитически и остаются только численные методы (я вообще не нашёл ни одной статьи или книги, где эта задача разобрана, хотя задаче больше чем век и она практически важная, может я плохо искал?). Ну или я просто не умею решать дифуры.
Кодить неявную разностную схему самому лень, с явной могут быть проблемы на дальнем конце пробирки, где частицы скапливаются, концентрация сильно меняется, и будет нужен малый шаг, неплохо бы освоить какую-нибудь библиотеку (не обязательно методом сеток), которая всё чёрную работу сделает за меня, а чтобы от меня требовалось только забить уравнение и задать граничные и начальные условия.
>>350410 (OP) Слишком много математико-быдла в последнее время. Создавайте свой долбоёбский /math и сидите в нём, как загоне. Нормальным людям не мешайте. Сажа.
У тебя жесткое ограничение на язык - пистон? Пистон не знаю, в numpy нету численных методов PDE? Другие либы искал? На крайняк можно поискать либы на C, они вроде без проблем к пистону биндятся. >Кодить неявную разностную схему самому лень Попробуй найти готовый и проверенный C-подобный псевдокод, если остальное не катит. Кстати, выбор метода построения расчётной сетки может значительно повлиять на точность. Отдельный пункт заморачиваться - если оно надо(долго считает для требуемой точности). По той же причине может возникнуть необходимость в параллелизации. В общем, геморроя может возникнуть море, если самому с нуля реализовывать.
>>350430 >У тебя жесткое ограничение на язык - пистон? Нет, у меня ограничение на платность, и желательно минимум кода писать. На си минимум кода вообще редко когда бывает и обычно всё приходится делать руками, на ++ чуть получше, но всё равно пиздец.
>В общем, геморроя может возникнуть море, если самому с нуля реализовывать. Это да.
>Пистон не знаю, в numpy нету численных методов PDE? Только ode. Но если взять стационарный случай, то задача решается аналитически (получилась пикрил).
>Другие либы искал? искал. Не понятно как ими пользоваться. Сетку какую-то генерить из 3д модели, потом ещё куча малопонятных действий и тд. Слишком сложно для такой простой задачи. >На крайняк можно поискать либы на C, они вроде без проблем к пистону биндятся. гимор ещё тот.
>>350435 >На си минимум кода вообще редко когда бывает и обычно всё приходится делать руками, на ++ чуть получше, но всё равно пиздец. Это если ты будешь инструментами "из коробки" всё делать, как привык в других языках. Для C и крестов огромное кол-во бесплатных библиотек и фреймворков(Boost к примеру - но это эталон качества, остальное может быть гораздо хуже по продуманности/гибкости/качеству реализации), реализующих всё, что требуется и даже больше в т.ч. то, что поставляется "в коробке" с другими средствами разработки. Я это к тому говорю, что поглубже покопать в сторону либ на C/C++ вполне может быть вариантом, который решит проблему. Ещё FORTRAN забыл - на нём куча математического софта/библиотек, но это пиздец в плане языка. Да и вроде на C как минимум всё то же самое должно быть.
>>350491 Там всё довольно элементарно. Програмить толком нельзя, да, но вот вбить систему уравнений и вывести решение для нужной переменной - запросто.
>>350410 (OP) >геометрии Если у тебя одномерная по координате задача, то тут немного геометрий может быть: конечный интервал, полубесконечный интервал, бесконечный интервал.
>>350507 Может. просто я видимо не умею решать дифуры даже с помощью вольфрамальфы: как оказалось, моё решение для стационарного случая оказалось неверным (на самом деле решала вольфрамальфа, но вот симпи при проверке говорит что неверно).
перепроверил, очень странно 1 При подстановке аналитического решения для ст случая в ст уравнение оно почему-то не обращается в тождество. Т.е. я задал программе решить уравнение, она его решила, выдала жуткую функцию, я подставил эту функцию в уравнение, приказал упростить, но результат так и остался уравнением вместо true 2 Решение ведёт себя странно, не так как я хотел. Должно расти у нуля, а растёт вдали от нуля. Если поменять знак перед дивергенцией на минус, то будет расти у нуля, но я перепроверил, перед дивергенцией знак должен быть +. Минус у нас сидит в скорости, потому что она направлена против оси х, так и должно быть. 3 Численное моделирование нестационарного уравнения в одном программном пакете дало очень странное линейно возрастающее со временем решение, у которого концентрация вдоль пространственной оси не меняется.
>>350721 Написанное уравнение называется уравнением Масона-Вивера (https://en.wikipedia.org/wiki/Mason%E2%80%93Weaver_equation), судя по выводу, приведённому в википедии, моё уравнение верное. Граничные условия я такие не юзал, надо попробовать, но даже без них уже какая-то хуйня идёт.
>>350845 Ептить, если встречу незнакомый урмат ручками сначала поработаю, если не получится то в книжку полякова загляну если и там нет, то тогда да, численно.
>>350859 А если человек, допустим, не осилил/не задавался целью научиться методам решения урматов? Не учился на математика/физика, забивал хуи на этот предмет?
>>350987 Мат. пакет/справочник по урматам гораздо хуже математика/физика в этом плане? Если речь идёт об аналитическом решении. Что скажешь насчёт численных решений - там вроде тоже подводных камней много, правильно? Тоже лучше поинтересоваться?
>>350797 Толсто. Альфа выдаёт навороченное решение со спецфункциями. Я такое хуй знает сколько выводить буду, ведь основной метод решение дифуров - это подбор подстановки, для этого перебирают все известные решающему подстановки в надежде, что какая-то сильно упростит уравнение, после чего процесс повторяют до тех пор, пока уравнение не сведётся к какому-либо уже известному (а уже известные - это просто выражения свойств функций), после разворачивают обратно. Делать этот процесс ручками - себя не уважать. Либо используешь уже существующие решения, либо годы пишешь и отлаживаешь своё, после чего устраиваешься в wolfram inc. и тянки начинают течь при одном упоминании твоей зарплаты.
>>350873 Тогда остается только страдать и расплачиваться за проебанное время. Потому и не выходит даже с калькулятором, что мозги не используются, а все что получается - это "скопирую ка я это в альфу, нахуя мне математику знать". Если задача нужна по работе - то идти к началькину и увольняться из-за профнепригодности. Если для личных целей - учить все что пропустил.
>>351025 >навороченное решение со спецфункциями Во-первых, чего такого навороченного в спецфункциях, лол? Во-вторых - вот и нехуй тупые калькуляторы для примитивных задач решать. >ведь основной метод решение дифуров - это подбор подстановки Все понятно. Страдай.
>>351062 >Тогда остается только страдать и расплачиваться за проебанное время. А как вариант подтянуть знания по PDE на концептуальном/качественном уровне(т.е. без ручного прорешивания кучи примеров), чтобы калькулятор/справочник можно было использовать с толком? Что-нибудь посоветуешь?
>тупые калькуляторы для примитивных задач PDE для большинства - это непросто. Что такого зазорного не знать, как решаются конкретные PDE? Что такого замечательного в зазубривании кучи методов для решения частных случаев? Может, кто-то химик/биолог/инженер/погромист, даже математики могут увлекаться "абстрактными гамалогиями" и в рот не ебать каково решение заданного PDE из тех, для которых решение известно.
А вообще всё это напоминает IT-шные ASM vs C, C++ vs Python, console vs GUI. Да, ты молодец и почёт тебе, если ты осилил и умеешь в PDE, но как быть с простыми смертными?
>>351062 Ну раз уж ты такой спец по дифурам ... реши мне тогда уравнение аналитически в декартовых координатах. d С(x,t)/d t=d2 C(x,t)/d x^2 + d C(x,t)/d xV(x) + d V/d x C(x,t) V(x)=-k(R-x) k=2/9deltarho/mur^2omega^2 D=(k_BT/(6pirmu)) удобно выделить SedFr=k/D граничные условия Dd С(x,t)/d x+V(x)C(x,t)==0 при x=0 и x=l (длина пробирки) Начальные условия С(x,0)=С_0
Но перед применением граничных и начальных условий использовать условие lim_{SedFr->0}{C(x,t)}=C_0
Задачу написал, раз ты такой спец по дифурам, решить её для тебя труда не составит.
>>351066 >без ручного прорешивания кучи примеров Ручное прорешивание примеров - самый простой и удобный способ подтянуть знания. Что посоветовать - тут честно не скажу. Обычно хорошие сборники задач имеют перед каждой главой всю нужную теорию, без воды и прочего говна, но я уже и не помню по чем я сам учился. Калькулятор для таких вещей полезен чуть менее чем никогда, так как он туп, а ИИ не существует. Да, он может помочь, упростить раскладки, если с умом пользоваться, но не более.
>Что такого зазорного не знать Совершенно ничего зазорного, ты прав. Давай проведу аналогию: Что такого зазорного не быть оперным певцом? Что такого замечательного в ежедневных тренировках, задрачиваниях и упражнениях? Да, Паваротти молодцом был, почет ему, а как же быть простым смертным? Что такого зазорного не уметь управлять самолетом? Что замечательного в задрачивании бесконечных часов за симуляторами, потом налетывать реальное время и проебывания килотонны бабла на всю эту хуйню? Да, всякие выпускники летных академий могут ..., но как быть простым смертным?
Ответ - никак. Или учиться, или нанимать профессионала. Первое дольше, второе дороже.
>>351072 Домашки в /un. П*ское уравнение, переменные разделяются. Что тебе еще надо? Чуть сложнее теплопроводности, но подозреваю, что решается аналогично. Тем более выше ссылка на википедию с разжеванной схожей задачей.
>>351104 >Домашки в /un. В ун боюсь таким не занимаются. >переменные разделяются. Я переменные разделил, но у меня в итоге зависимость от времени вымерла. мимодруой анон
>>351110 >>351835 Eсли выкинуть зависимость от времени, то получится ОДУ. Решив данное ОДУ получим стационарный случай, но я даже его решить не смог сколько не ковырялся в матпакете, получается экспоненциальный рост концентрации с удалением от дальнего конца пробирки, что бред - >>350435 . Численное решение тоже получается бредовым.
Цель - определить распределение частиц по размерам в растворе после t секунд в центрифуге при известном начальном распределении и геометрии. Пробирку будем моделировать как одномерный цилиндр бесконечного радиуса, начальное условие - все концентрации равны, граничные условия - скорость частиц на дальней от центра стенке равна 0. Температуру считаем комнатной. Я правильно сформулировал задачу?
Похоже, что уравнение не решается аналитически и остаются только численные методы (я вообще не нашёл ни одной статьи или книги, где эта задача разобрана, хотя задаче больше чем век и она практически важная, может я плохо искал?). Ну или я просто не умею решать дифуры.
Кодить неявную разностную схему самому лень, с явной могут быть проблемы на дальнем конце пробирки, где частицы скапливаются, концентрация сильно меняется, и будет нужен малый шаг, неплохо бы освоить какую-нибудь библиотеку (не обязательно методом сеток), которая всё чёрную работу сделает за меня, а чтобы от меня требовалось только забить уравнение и задать граничные и начальные условия.
Что посоветуете?