Pergunta

Eu estou trabalhando em um projeto (C # e .NET Framework), que me obriga a resolver algumas equações diferenciais parciais. Existem quaisquer bibliotecas específicos baseados em .NET Framework que eu pudesse ver e fazer o meu trabalho mais simples?

Eu tenho trabalhado com Matlab e resolução de equações diferenciais parciais é muito simples lá. Como posso resolver este problema?

Foi útil?

Solução

Você poderia resolver o problema no MATLAB e usar o MATLAB compilador + < a href = "http://www.mathworks.co.uk/products/netbuilder/" rel = "nofollow noreferrer"> Builder NE toolbox para criar um .NET assembly que liga ao resto da sua aplicação.

Outras dicas

Depende do que PDEs você quer resolver e como você deseja aproximar-se deles.

Cada abordagem que eu conheço vai exigir álgebra linear. Você vai querer encontrar um pacote de boas matriz para .NET, o melhor que você pode encontrar, um que pode lidar com matricies esparsas eficiente.

elípticas linear (difusão de estado estacionário), parabólicos (difusão transitória), e hiperbólicas (F = ma) PDEs dinâmicas requerem ligeiramente diferentes abordagens.

Todos os três destes PDEs pode usar diferença clássica finita, elementos finitos (ponderada residual), ou elementos de contorno (funções de Green) para criar a matriz do sistema que você gostaria de resolver. PDEs geral não lineares, provavelmente, melhor são atacados usando uma técnica residual de elementos finitos / ponderada.

Mas os PDFs parabólicas e hiperbólicas vai se transformar em conjuntos acoplados de ODEs uma vez que você discretizar eles. Você tem que fazer a integração transitória para resolver repetidamente a evolução no tempo. ODEs parabólicos são de primeira ordem no tempo; ODEs hiperbólicas são de segunda ordem no tempo.

Eu estou aprendendo sobre CUDA e NVIDIA. Você pode querer olhar para ligações CUDA para seu idioma.

Todos estes são grandes tópicos para si mesmos. Por favor Google para algumas fontes, porque não é possível dar mais do que uma visão superficial aqui.

UPDATE: Eu recentemente tomou conhecimento do Microsoft Solver Foundation . Eu não olhei para ele mesmo, mas talvez seria útil para desenvolvedores de C # para resolver este problema.

Outra sugestão é AlgLib . I como este, porque ao contrário de bibliotecas abrangentes onde você tem que encontrar o que precisa, AlgLib tem todos os algoritmos separados e, muitas vezes oferecido em vários idiomas (incluindo C #, na maioria / todos os casos). Em relação de cálculo tampas AlgLib:

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

Uma palavra de cautela, no entanto ... no check estes algoritmo em AlgLib, notei que eles não estavam mais suportadas (por AlgLib), porque suas licenças podem ser sejam incompatíveis com a licença de AlgLib (que é GPL, eu acredito).

Confira http://www.mathdotnet.com/About.aspx , ele pode ter o que você precisa. No entanto, eu suspeito que você deve obter a melhor biblioteca para você requisitos de aplicação, e, em seguida, a interface para o aplicativo .net ..

Você provavelmente vai achar que com coisas como esta (exceto onde você está usando para aprender qualquer língua ou a matemática), há uma série de bibliotecas pré enlatados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top