Entityda biblioteca de álgebra simbólica:
Parece mais legal do que em python. É feito de forma simples, é muito divertido. Convido você sob o corte!
Sobre Jupyter
É como um IDE para criar cadernos interativos. Em vez de executar todo o código de uma vez em ambientes familiares, aqui você o executa em partes, salvando os estados das variáveis. É muito conveniente para pesquisas e scripts simples “calcular algo”.
Sobre dotnet / interativo
Este projeto apenas permite que você insira Dotnet em Júpiter. Ou seja, você pode literalmente escrever
E obter os resultados do código imediatamente.
E alguns dos chips funcionam fora da caixa
Sobre AngouriMath
É uma biblioteca de álgebra simbólica relativamente pequena para .NET para trabalhar com expressões matemáticas. Claro, você pode trabalhar com expressões matemáticas em uma linha, mas isso nem sempre é conveniente / bonito.
Todas as expressões matemáticas de uma forma ou de outra herdam de uma classe
Entityque possui um método Latexiseque retorna uma string. Portanto, tudo o que resta é representá-lo.
Incorporando latech
Temos a capacidade de registrar nossa própria inferência para nossos tipos, que é o que eu faço:
let magic() =
let register (value : ILatexiseable) = $@"
<script src='https://polyfill.io/v3/polyfill.min.js?features=es6'></script>
<script id='MathJax-script' async src='https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js'></script>
\[{value.Latexise()}\]
"
Formatter.Register<ILatexiseable>(register, "text/html")
(Habr por algum motivo não suporta F #)
Ou seja, simplesmente registramos que o tipo
ILatexiseabledeve ser mostrado no formato html, e o próprio código será gerado por nossa função. Para renderizar, usei o MathJax, embora provavelmente faça sentido armazenar o script js em cache, mas isso é para atualizações futuras.
Bem, isso é tudo, agora todas as expressões herdadas dessa interface serão lindamente renderizadas. É assim que fica em C #:
O que exatamente está acontecendo aqui?
1. extension-
2.
3.
ToEntity(),
2.
3.
Como Júpiter se destina a pequenos pedaços de código que não precisam seguir nenhum requisito de design, F # é mais adequado para isso. Portanto, como fica claro na captura de tela no início do artigo, também é compatível. Por exemplo, é assim que a solução para a equação da escola se parece:
Planos futuros
Sou um grande fã do .NET, mas também adoro o Jupyter. Portanto, Interactive me deixou muito feliz e me apressei em fazer o suporte interativo para AngouriMath para exibir expressões em LaTeX. Mas além disso - mais interessante. Estou pensando em fazer algo do tipo
Entity.Plot()que exibiria imediatamente o gráfico da função. Para casos de uso simples, a coisa é realmente necessária, eu acho.
Se quiser experimentar sem instalar nada do necessário, você pode dar uma olhada aqui:
Obrigado pela atenção! Essa é uma nota curta.
Links
1. Jupyter - um ambiente de navegador conveniente para programação interativa
2. .NET Interactive - algo muito brilhante graças ao qual você pode usar o dotnet no Jupiter
3. AngouriMath - uma biblioteca matemática para a qual escrevi um wrapper para latech
4. MyBinder - uma demonstração para preguiçosos