[Ответить в тред] Ответить в тред

03/04/16 - Набор в модераторы 03.04 по 8.04
26/03/16 - Конкурс: Помоги гомункулу обрести семью!
15/10/15 - Набор в модераторы 15.10 по 17.10



[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 46 | 3 | 8
Назад Вниз Каталог Обновить

Решение PDE (уравнения в частных производных) в пистоне Аноним 22/03/16 Втр 13:13:59  350410  
14586416392970.png (70Кб, 475x492)
14586416392981.png (1Кб, 171x47)
14586416392982.png (0Кб, 93x45)
Анон, возникла задача решить 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. Температуру считаем комнатной. Я правильно сформулировал задачу?

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

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

Что посоветуете?
Аноним 22/03/16 Втр 13:29:11  350413
>>350410 (OP)
Слишком много математико-быдла в последнее время. Создавайте свой долбоёбский /math и сидите в нём, как загоне. Нормальным людям не мешайте. Сажа.
Аноним 22/03/16 Втр 14:02:54  350420
>>350413
ПНХ.
Аноним 22/03/16 Втр 14:07:07  350422
14586448274190.jpg (60Кб, 600x433)
>>350410 (OP)
>Что посоветуете?
R, очевидно же. Там полно крайне годных способов решать любые дифуры, самый простой пример https://cran.r-project.org/web/packages/deSolve/index.html а пистон, что пистон, не нужон.
>>350413
>Слишком много математико-быдла в последнее время.
Дебил закукарекал.
Аноним 22/03/16 Втр 14:22:15  350425
>>350410 (OP)
>>350413
Семен Семеныч, ну как же так.
Аноним 22/03/16 Втр 14:50:38  350430
У тебя жесткое ограничение на язык - пистон?
Пистон не знаю, в numpy нету численных методов PDE? Другие либы искал? На крайняк можно поискать либы на C, они вроде без проблем к пистону биндятся.
>Кодить неявную разностную схему самому лень
Попробуй найти готовый и проверенный C-подобный псевдокод, если остальное не катит.
Кстати, выбор метода построения расчётной сетки может значительно повлиять на точность. Отдельный пункт заморачиваться - если оно надо(долго считает для требуемой точности). По той же причине может возникнуть необходимость в параллелизации. В общем, геморроя может возникнуть море, если самому с нуля реализовывать.
Аноним 22/03/16 Втр 14:54:13  350431
>>350422
В питоне ещё больше. извини, но R и питон - это сорта говна, но если питон ещё можно юзать, то с r - вообще пиздец. Так что спасибо, но нет.
Аноним 22/03/16 Втр 15:08:21  350435
14586485017880.gif (1Кб, 412x46)
>>350430
>У тебя жесткое ограничение на язык - пистон?
Нет, у меня ограничение на платность, и желательно минимум кода писать. На си минимум кода вообще редко когда бывает и обычно всё приходится делать руками, на ++ чуть получше, но всё равно пиздец.

>В общем, геморроя может возникнуть море, если самому с нуля реализовывать.
Это да.

>Пистон не знаю, в numpy нету численных методов PDE?
Только ode. Но если взять стационарный случай, то задача решается аналитически (получилась пикрил).

>Другие либы искал?
искал. Не понятно как ими пользоваться. Сетку какую-то генерить из 3д модели, потом ещё куча малопонятных действий и тд. Слишком сложно для такой простой задачи.
>На крайняк можно поискать либы на C, они вроде без проблем к пистону биндятся.
гимор ещё тот.
Аноним 22/03/16 Втр 15:31:50  350442
>>350435
>На си минимум кода вообще редко когда бывает и обычно всё приходится делать руками, на ++ чуть получше, но всё равно пиздец.
Это если ты будешь инструментами "из коробки" всё делать, как привык в других языках. Для C и крестов огромное кол-во бесплатных библиотек и фреймворков(Boost к примеру - но это эталон качества, остальное может быть гораздо хуже по продуманности/гибкости/качеству реализации), реализующих всё, что требуется и даже больше в т.ч. то, что поставляется "в коробке" с другими средствами разработки.
Я это к тому говорю, что поглубже покопать в сторону либ на C/C++ вполне может быть вариантом, который решит проблему.
Ещё FORTRAN забыл - на нём куча математического софта/библиотек, но это пиздец в плане языка. Да и вроде на C как минимум всё то же самое должно быть.
Аноним 22/03/16 Втр 17:14:15  350464
>>350410 (OP)
Через что V(x) зависит от x? Ведь насколь мне помнится R - константа, или я что-то путают?
Аноним 22/03/16 Втр 17:48:03  350478
>>350464
через ускорение g, которое omega^2*(centrifuge radius - x)
Аноним 22/03/16 Втр 17:49:18  350479
чем maxima не угодила?
Аноним 22/03/16 Втр 18:01:14  350491
>>350479
такой же пиздец как и матлаб
питон давно вытеснил все клоны матлаб, и должен уметь решать урчп тоже
Аноним 22/03/16 Втр 18:05:24  350493
>>350491
Там всё довольно элементарно. Програмить толком нельзя, да, но вот вбить систему уравнений и вывести решение для нужной переменной - запросто.
Аноним 22/03/16 Втр 18:11:42  350498
>>350410 (OP)
>геометрии
Если у тебя одномерная по координате задача, то тут немного геометрий может быть: конечный интервал, полубесконечный интервал, бесконечный интервал.
Аноним 22/03/16 Втр 18:22:44  350505
>>350498
Это да, но в будущем можно лулзов ради решить трёхмерную задачу.
Аноним 22/03/16 Втр 18:25:40  350507
>>350505
Я к тому, что эта одномерная задача вполне может решаться аналитически.
Аноним 22/03/16 Втр 19:01:37  350518
>>350507
Может. просто я видимо не умею решать дифуры даже с помощью вольфрамальфы: как оказалось, моё решение для стационарного случая оказалось неверным (на самом деле решала вольфрамальфа, но вот симпи при проверке говорит что неверно).
Аноним 23/03/16 Срд 12:12:07  350721
перепроверил, очень странно
1 При подстановке аналитического решения для ст случая в ст уравнение оно почему-то не обращается в тождество.
Т.е. я задал программе решить уравнение, она его решила, выдала жуткую функцию, я подставил эту функцию в уравнение, приказал упростить, но результат так и остался уравнением вместо true
2 Решение ведёт себя странно, не так как я хотел. Должно расти у нуля, а растёт вдали от нуля. Если поменять знак перед дивергенцией на минус, то будет расти у нуля, но я перепроверил, перед дивергенцией знак должен быть +.
Минус у нас сидит в скорости, потому что она направлена против оси х, так и должно быть.
3 Численное моделирование нестационарного уравнения в одном программном пакете дало очень странное линейно возрастающее со временем решение, у которого концентрация вдоль пространственной оси не меняется.

??????
Аноним 23/03/16 Срд 13:06:44  350727
>>350721
Написанное уравнение называется уравнением Масона-Вивера (https://en.wikipedia.org/wiki/Mason%E2%80%93Weaver_equation), судя по выводу, приведённому в википедии, моё уравнение верное. Граничные условия я такие не юзал, надо попробовать, но даже без них уже какая-то хуйня идёт.
Аноним 23/03/16 Срд 13:20:26  350731
Нашёл вот ещё что
http://www.analyticalultracentrifugation.com/lammeqsolutions.htm
Аноним 23/03/16 Срд 13:22:04  350732
https://arhivach.org/thread/158470/
Аноним 23/03/16 Срд 15:02:17  350762
https://github.com/svn2github/UltraScan3/blob/master/utils/us_lamm_astfvm.h
Аноним 23/03/16 Срд 17:49:16  350797
>>350518
Какая нахуй альфа? Ручками решай! Совсем обленились со своими калькуляторами.
Аноним 23/03/16 Срд 21:39:07  350840
>>350797
такими темпами в альфе будут уравнения решать типа a*x+b=c
Аноним 23/03/16 Срд 22:05:42  350845
>>350797
>>350840
Сам-то знаешь урматы, решишь любое? А то толстовато как-то получается.
Аноним 23/03/16 Срд 23:17:03  350859
>>350845
Ептить, если встречу незнакомый урмат ручками сначала поработаю, если не получится то в книжку полякова загляну если и там нет, то тогда да, численно.
Аноним 24/03/16 Чтв 00:29:58  350873
>>350859
А если человек, допустим, не осилил/не задавался целью научиться методам решения урматов? Не учился на математика/физика, забивал хуи на этот предмет?
Аноним 24/03/16 Чтв 12:26:01  350987
>>350873
Найти математика/физика и поинтересоваться за данный урмат.
Аноним 24/03/16 Чтв 12:34:34  350991
>>350987
Мат. пакет/справочник по урматам гораздо хуже математика/физика в этом плане? Если речь идёт об аналитическом решении.
Что скажешь насчёт численных решений - там вроде тоже подводных камней много, правильно? Тоже лучше поинтересоваться?
Аноним 24/03/16 Чтв 14:33:43  351025
>>350797
Толсто. Альфа выдаёт навороченное решение со спецфункциями. Я такое хуй знает сколько выводить буду, ведь основной метод решение дифуров - это подбор подстановки, для этого перебирают все известные решающему подстановки в надежде, что какая-то сильно упростит уравнение, после чего процесс повторяют до тех пор, пока уравнение не сведётся к какому-либо уже известному (а уже известные - это просто выражения свойств функций), после разворачивают обратно. Делать этот процесс ручками - себя не уважать. Либо используешь уже существующие решения, либо годы пишешь и отлаживаешь своё, после чего устраиваешься в wolfram inc. и тянки начинают течь при одном упоминании твоей зарплаты.

Аноним 24/03/16 Чтв 16:11:54  351062
>>350873
Тогда остается только страдать и расплачиваться за проебанное время. Потому и не выходит даже с калькулятором, что мозги не используются, а все что получается - это "скопирую ка я это в альфу, нахуя мне математику знать". Если задача нужна по работе - то идти к началькину и увольняться из-за профнепригодности. Если для личных целей - учить все что пропустил.

>>351025
>навороченное решение со спецфункциями
Во-первых, чего такого навороченного в спецфункциях, лол? Во-вторых - вот и нехуй тупые калькуляторы для примитивных задач решать.
>ведь основной метод решение дифуров - это подбор подстановки
Все понятно. Страдай.
Аноним 24/03/16 Чтв 16:17:42  351064
>>350991
Когда как. Численные методы отдельная большая область со своими проблемами .
Аноним 24/03/16 Чтв 16:34:51  351066
>>351062
>Тогда остается только страдать и расплачиваться за проебанное время.
А как вариант подтянуть знания по PDE на концептуальном/качественном уровне(т.е. без ручного прорешивания кучи примеров), чтобы калькулятор/справочник можно было использовать с толком? Что-нибудь посоветуешь?

>тупые калькуляторы для примитивных задач
PDE для большинства - это непросто. Что такого зазорного не знать, как решаются конкретные PDE?
Что такого замечательного в зазубривании кучи методов для решения частных случаев?
Может, кто-то химик/биолог/инженер/погромист, даже математики могут увлекаться "абстрактными гамалогиями" и в рот не ебать каково решение заданного PDE из тех, для которых решение известно.

А вообще всё это напоминает IT-шные ASM vs C, C++ vs Python, console vs GUI. Да, ты молодец и почёт тебе, если ты осилил и умеешь в PDE, но как быть с простыми смертными?
Аноним 24/03/16 Чтв 16:46:23  351072
>>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/9
deltarho/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

Задачу написал, раз ты такой спец по дифурам, решить её для тебя труда не составит.
Аноним 24/03/16 Чтв 16:49:52  351074
>>351072
Немного не так
d С(x,t)/d t=D*d2 C(x,t)/d x^2 + d C(x,t)/d xV(x) + d V/d x C(x,t)
Аноним 24/03/16 Чтв 16:55:15  351076
>>351072
Лол. Такой типичный студенто-развод. Он разагрился и ничего тебе решать не будет. Попробуй dxdy, там скорее всего подскажут.
Аноним 24/03/16 Чтв 17:03:55  351080
>>351076
>Он разагрился и ничего тебе решать не будет.
Это очевидно. Зато гонора поубавит.
Аноним 24/03/16 Чтв 17:06:08  351081
>>351080
Бесплатно решать что-то в 2016, насмешил.
Аноним 24/03/16 Чтв 18:08:54  351103
>>351072
знак k какой?
Аноним 24/03/16 Чтв 18:09:15  351104
>>351066
>без ручного прорешивания кучи примеров
Ручное прорешивание примеров - самый простой и удобный способ подтянуть знания. Что посоветовать - тут честно не скажу. Обычно хорошие сборники задач имеют перед каждой главой всю нужную теорию, без воды и прочего говна, но я уже и не помню по чем я сам учился.
Калькулятор для таких вещей полезен чуть менее чем никогда, так как он туп, а ИИ не существует. Да, он может помочь, упростить раскладки, если с умом пользоваться, но не более.

>Что такого зазорного не знать
Совершенно ничего зазорного, ты прав. Давай проведу аналогию:
Что такого зазорного не быть оперным певцом? Что такого замечательного в ежедневных тренировках, задрачиваниях и упражнениях? Да, Паваротти молодцом был, почет ему, а как же быть простым смертным?
Что такого зазорного не уметь управлять самолетом? Что замечательного в задрачивании бесконечных часов за симуляторами, потом налетывать реальное время и проебывания килотонны бабла на всю эту хуйню? Да, всякие выпускники летных академий могут ..., но как быть простым смертным?

Ответ - никак. Или учиться, или нанимать профессионала. Первое дольше, второе дороже.

>>351072
Домашки в /un.
П*ское уравнение, переменные разделяются. Что тебе еще надо? Чуть сложнее теплопроводности, но подозреваю, что решается аналогично. Тем более выше ссылка на википедию с разжеванной схожей задачей.
Аноним 24/03/16 Чтв 18:18:26  351110
>>351104
>Домашки в /un.
В ун боюсь таким не занимаются.
>переменные разделяются.
Я переменные разделил, но у меня в итоге зависимость от времени вымерла.
мимодруой анон
Аноним 24/03/16 Чтв 18:32:02  351113
>>351110
вроде должно остаться уравненьице вроде a`+v a = 0, как и в мазоне вивере
Аноним 28/03/16 Пнд 10:13:40  351835
Опчик ты как там? Решил дифуру по наводкам назло всем способным и трудолюбивым математикам?
Аноним 28/03/16 Пнд 12:05:15  351842
>>351103
>k=2/9deltarho/mur^2omega^2
deltarho>=0
mu>=0
r>=0
omega>=0
2>0
9>0

=> k>0

>>351110
>>351835
Eсли выкинуть зависимость от времени, то получится ОДУ. Решив данное ОДУ получим стационарный случай, но я даже его решить не смог сколько не ковырялся в матпакете, получается экспоненциальный рост концентрации с удалением от дальнего конца пробирки, что бред - >>350435 . Численное решение тоже получается бредовым.

>>351113
не встречал
Аноним 28/03/16 Пнд 12:44:51  351844
>>351842
k>=0 вернее
при k=0 седиментации нет и концентрация одинакова везде
Аноним 30/03/16 Срд 15:38:53  352361
bump

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 46 | 3 | 8
Назад Вверх Каталог Обновить

Топ тредов