Анон, возникла задача решить 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 и сидите в нём, как загоне. Нормальным людям не мешайте. Сажа.
>>350413ПНХ.
>>350410 (OP)>Что посоветуете? R, очевидно же. Там полно крайне годных способов решать любые дифуры, самый простой пример https://cran.r-project.org/web/packages/deSolve/index.html а пистон, что пистон, не нужон. >>350413>Слишком много математико-быдла в последнее время.Дебил закукарекал.
>>350410 (OP)>>350413Семен Семеныч, ну как же так.
У тебя жесткое ограничение на язык - пистон?Пистон не знаю, в numpy нету численных методов PDE? Другие либы искал? На крайняк можно поискать либы на C, они вроде без проблем к пистону биндятся.>Кодить неявную разностную схему самому леньПопробуй найти готовый и проверенный C-подобный псевдокод, если остальное не катит.Кстати, выбор метода построения расчётной сетки может значительно повлиять на точность. Отдельный пункт заморачиваться - если оно надо(долго считает для требуемой точности). По той же причине может возникнуть необходимость в параллелизации. В общем, геморроя может возникнуть море, если самому с нуля реализовывать.
>>350422В питоне ещё больше. извини, но R и питон - это сорта говна, но если питон ещё можно юзать, то с r - вообще пиздец. Так что спасибо, но нет.
>>350430>У тебя жесткое ограничение на язык - пистон?Нет, у меня ограничение на платность, и желательно минимум кода писать. На си минимум кода вообще редко когда бывает и обычно всё приходится делать руками, на ++ чуть получше, но всё равно пиздец.>В общем, геморроя может возникнуть море, если самому с нуля реализовывать.Это да.>Пистон не знаю, в numpy нету численных методов PDE?Только ode. Но если взять стационарный случай, то задача решается аналитически (получилась пикрил).>Другие либы искал?искал. Не понятно как ими пользоваться. Сетку какую-то генерить из 3д модели, потом ещё куча малопонятных действий и тд. Слишком сложно для такой простой задачи.>На крайняк можно поискать либы на C, они вроде без проблем к пистону биндятся.гимор ещё тот.
>>350435>На си минимум кода вообще редко когда бывает и обычно всё приходится делать руками, на ++ чуть получше, но всё равно пиздец.Это если ты будешь инструментами "из коробки" всё делать, как привык в других языках. Для C и крестов огромное кол-во бесплатных библиотек и фреймворков(Boost к примеру - но это эталон качества, остальное может быть гораздо хуже по продуманности/гибкости/качеству реализации), реализующих всё, что требуется и даже больше в т.ч. то, что поставляется "в коробке" с другими средствами разработки.Я это к тому говорю, что поглубже покопать в сторону либ на C/C++ вполне может быть вариантом, который решит проблему.Ещё FORTRAN забыл - на нём куча математического софта/библиотек, но это пиздец в плане языка. Да и вроде на C как минимум всё то же самое должно быть.
>>350410 (OP)Через что V(x) зависит от x? Ведь насколь мне помнится R - константа, или я что-то путают?
>>350464через ускорение g, которое omega^2*(centrifuge radius - x)
чем maxima не угодила?
>>350479такой же пиздец как и матлабпитон давно вытеснил все клоны матлаб, и должен уметь решать урчп тоже
>>350491Там всё довольно элементарно. Програмить толком нельзя, да, но вот вбить систему уравнений и вывести решение для нужной переменной - запросто.
>>350410 (OP)>геометрииЕсли у тебя одномерная по координате задача, то тут немного геометрий может быть: конечный интервал, полубесконечный интервал, бесконечный интервал.
>>350498Это да, но в будущем можно лулзов ради решить трёхмерную задачу.
>>350505Я к тому, что эта одномерная задача вполне может решаться аналитически.
>>350507Может. просто я видимо не умею решать дифуры даже с помощью вольфрамальфы: как оказалось, моё решение для стационарного случая оказалось неверным (на самом деле решала вольфрамальфа, но вот симпи при проверке говорит что неверно).
перепроверил, очень странно1 При подстановке аналитического решения для ст случая в ст уравнение оно почему-то не обращается в тождество.Т.е. я задал программе решить уравнение, она его решила, выдала жуткую функцию, я подставил эту функцию в уравнение, приказал упростить, но результат так и остался уравнением вместо true2 Решение ведёт себя странно, не так как я хотел. Должно расти у нуля, а растёт вдали от нуля. Если поменять знак перед дивергенцией на минус, то будет расти у нуля, но я перепроверил, перед дивергенцией знак должен быть +.Минус у нас сидит в скорости, потому что она направлена против оси х, так и должно быть.3 Численное моделирование нестационарного уравнения в одном программном пакете дало очень странное линейно возрастающее со временем решение, у которого концентрация вдоль пространственной оси не меняется.??????
>>350721Написанное уравнение называется уравнением Масона-Вивера (https://en.wikipedia.org/wiki/Mason%E2%80%93Weaver_equation), судя по выводу, приведённому в википедии, моё уравнение верное. Граничные условия я такие не юзал, надо попробовать, но даже без них уже какая-то хуйня идёт.
Нашёл вот ещё чтоhttp://www.analyticalultracentrifugation.com/lammeqsolutions.htm
https://arhivach.org/thread/158470/
https://github.com/svn2github/UltraScan3/blob/master/utils/us_lamm_astfvm.h
>>350518Какая нахуй альфа? Ручками решай! Совсем обленились со своими калькуляторами.
>>350797такими темпами в альфе будут уравнения решать типа a*x+b=c
>>350797>>350840Сам-то знаешь урматы, решишь любое? А то толстовато как-то получается.
>>350845Ептить, если встречу незнакомый урмат ручками сначала поработаю, если не получится то в книжку полякова загляну если и там нет, то тогда да, численно.
>>350859А если человек, допустим, не осилил/не задавался целью научиться методам решения урматов? Не учился на математика/физика, забивал хуи на этот предмет?
>>350873Найти математика/физика и поинтересоваться за данный урмат.
>>350987Мат. пакет/справочник по урматам гораздо хуже математика/физика в этом плане? Если речь идёт об аналитическом решении.Что скажешь насчёт численных решений - там вроде тоже подводных камней много, правильно? Тоже лучше поинтересоваться?
>>350797Толсто. Альфа выдаёт навороченное решение со спецфункциями. Я такое хуй знает сколько выводить буду, ведь основной метод решение дифуров - это подбор подстановки, для этого перебирают все известные решающему подстановки в надежде, что какая-то сильно упростит уравнение, после чего процесс повторяют до тех пор, пока уравнение не сведётся к какому-либо уже известному (а уже известные - это просто выражения свойств функций), после разворачивают обратно. Делать этот процесс ручками - себя не уважать. Либо используешь уже существующие решения, либо годы пишешь и отлаживаешь своё, после чего устраиваешься в wolfram inc. и тянки начинают течь при одном упоминании твоей зарплаты.
>>350873Тогда остается только страдать и расплачиваться за проебанное время. Потому и не выходит даже с калькулятором, что мозги не используются, а все что получается - это "скопирую ка я это в альфу, нахуя мне математику знать". Если задача нужна по работе - то идти к началькину и увольняться из-за профнепригодности. Если для личных целей - учить все что пропустил.>>351025>навороченное решение со спецфункциямиВо-первых, чего такого навороченного в спецфункциях, лол? Во-вторых - вот и нехуй тупые калькуляторы для примитивных задач решать.>ведь основной метод решение дифуров - это подбор подстановкиВсе понятно. Страдай.
>>350991Когда как. Численные методы отдельная большая область со своими проблемами .
>>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^2D=(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Задачу написал, раз ты такой спец по дифурам, решить её для тебя труда не составит.
>>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)
>>351072Лол. Такой типичный студенто-развод. Он разагрился и ничего тебе решать не будет. Попробуй dxdy, там скорее всего подскажут.
>>351076>Он разагрился и ничего тебе решать не будет.Это очевидно. Зато гонора поубавит.
>>351080Бесплатно решать что-то в 2016, насмешил.
>>351072знак k какой?
>>351066>без ручного прорешивания кучи примеровРучное прорешивание примеров - самый простой и удобный способ подтянуть знания. Что посоветовать - тут честно не скажу. Обычно хорошие сборники задач имеют перед каждой главой всю нужную теорию, без воды и прочего говна, но я уже и не помню по чем я сам учился.Калькулятор для таких вещей полезен чуть менее чем никогда, так как он туп, а ИИ не существует. Да, он может помочь, упростить раскладки, если с умом пользоваться, но не более.>Что такого зазорного не знатьСовершенно ничего зазорного, ты прав. Давай проведу аналогию:Что такого зазорного не быть оперным певцом? Что такого замечательного в ежедневных тренировках, задрачиваниях и упражнениях? Да, Паваротти молодцом был, почет ему, а как же быть простым смертным?Что такого зазорного не уметь управлять самолетом? Что замечательного в задрачивании бесконечных часов за симуляторами, потом налетывать реальное время и проебывания килотонны бабла на всю эту хуйню? Да, всякие выпускники летных академий могут ..., но как быть простым смертным?Ответ - никак. Или учиться, или нанимать профессионала. Первое дольше, второе дороже.>>351072Домашки в /un.П*ское уравнение, переменные разделяются. Что тебе еще надо? Чуть сложнее теплопроводности, но подозреваю, что решается аналогично. Тем более выше ссылка на википедию с разжеванной схожей задачей.
>>351104>Домашки в /un.В ун боюсь таким не занимаются.>переменные разделяются.Я переменные разделил, но у меня в итоге зависимость от времени вымерла.мимодруой анон
>>351110вроде должно остаться уравненьице вроде a`+v a = 0, как и в мазоне вивере
Опчик ты как там? Решил дифуру по наводкам назло всем способным и трудолюбивым математикам?
>>351103>k=2/9deltarho/mur^2omega^2deltarho>=0mu>=0r>=0omega>=02>09>0=> k>0>>351110>>351835Eсли выкинуть зависимость от времени, то получится ОДУ. Решив данное ОДУ получим стационарный случай, но я даже его решить не смог сколько не ковырялся в матпакете, получается экспоненциальный рост концентрации с удалением от дальнего конца пробирки, что бред - >>350435 . Численное решение тоже получается бредовым.>>351113не встречал
>>351842k>=0 вернеепри k=0 седиментации нет и концентрация одинакова везде
bump