Решение уравнений в частных производных с использованием C#

StackOverflow https://stackoverflow.com/questions/1452255

Вопрос

Я работаю над проектом (C# и .NET Framework), который требует от меня решения некоторых уравнений в частных производных.Существуют ли какие-либо конкретные библиотеки на основе .NET Framework, которые я мог бы увидеть и которые могли бы упростить мою работу?

Я работал с MATLab, и решение уравнений в частных производных там очень простое.Как я могу решить эту проблему?

Это было полезно?

Решение

Вы можете решить задачу в MATLAB и использовать Компилятор MATLAB + Набор инструментов Builder NE чтобы создать сборку .NET, которая связана с остальной частью вашего приложения.

Другие советы

Зависит от того, какие PDE вы хотите решить и как вы хотите к ним подойти.

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

Линейный эллиптический (стационарная диффузия), параболический (переходная диффузия) и гиперболический (F = MA динамический) PDE требуют несколько разных подходов.

Все три этих УЧП могут использовать классическую конечную разность, конечный элемент (взвешенный остаток) или граничный элемент (функции Грина) для создания системной матрицы, которую вы хотите решить.Общие нелинейные УЧП, вероятно, лучше всего анализировать с помощью метода конечных элементов/взвешенных остатков.

Но параболические и гиперболические PDF-файлы превратятся в связанные наборы ОДУ, как только вы их дискретизируете.Вам нужно выполнить переходную интеграцию, чтобы неоднократно решать эволюцию во времени.Параболические ОДУ имеют первый порядок по времени;гиперболические ОДУ имеют второй порядок по времени.

Я изучаю CUDA и NVIDIA.Возможно, вы захотите изучить привязки CUDA для вашего языка.

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

ОБНОВЛЯТЬ:Недавно я узнал о Фонд Microsoft Solver.Сам я этим не занимался, но, возможно, разработчикам C# это поможет решить эту проблему.

Еще одно предложение АлгЛиб .Мне это нравится, потому что в отличие от комплексных библиотек, где вам нужно найти то, что вам нужно, в AlgLib все алгоритмы разделены и часто предлагаются на нескольких языках (включая C# в большинстве/во всех случаях).Что касается исчисления, AlgLib охватывает:

        Euler's method
        Runge-Kutta method
        Runge-Kutta method for a system of ODEs
        Bulirsch-Stoer method for a system of ODEs

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

Проверить http://www.mathdotnet.com/About.aspx, там может быть то, что вам нужно.Однако я подозреваю, что вам следует получить лучшую библиотеку, соответствующую требованиям вашего приложения, а затем связать ее с вашим .net-приложением.

Вы, вероятно, обнаружите, что для подобных вещей (за исключением случаев, когда вы изучаете язык или математику) существует ряд заранее подготовленных библиотек.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top