Entity
partir de la biblioteca de álgebra simbólica: se
ve mejor que en Python. Se hace de forma sencilla, es muy divertido. ¡Te invito bajo el corte!
Sobre Jupyter
Es como un IDE para crear cuadernos interactivos. En lugar de ejecutar todo el código a la vez en sus entornos habituales, aquí lo ejecuta en fragmentos, guardando los estados de las variables. Es muy conveniente para la investigación y los scripts simples "calcular algo".
Acerca de dotnet / interactive
Este proyecto solo le permite incrustar Dotnet en Jupiter. Es decir, puede escribir literalmente
Y obtener los resultados del código de inmediato.
Y algunos de los chips funcionan fuera de la caja
Acerca de AngouriMath
Es una biblioteca de álgebra simbólica relativamente pequeña para .NET para trabajar con expresiones matemáticas. Por supuesto, puede trabajar con expresiones matemáticas en una línea, pero esto no siempre es conveniente / atractivo.
Todas las expresiones matemáticas de alguna manera heredan de una clase
Entity
que tiene un método Latexise
que devuelve una cadena. Por lo tanto, todo lo que queda es rendirlo.
Incrustar latech
Tenemos la capacidad de registrar nuestra propia inferencia para nuestros tipos, que es lo que hago:
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 alguna razón no admite F #)
Es decir, simplemente registramos que el tipo
ILatexiseable
debe mostrarse en formato html, y el código en sí será generado por nuestra función. Para renderizar, tomé MathJax, aunque probablemente tenga sentido almacenar en caché el script js, pero esto es para futuras actualizaciones.
Bueno, eso es todo, ahora todas las expresiones heredadas de esta interfaz estarán bellamente renderizadas. Así es como se ve en C #:
Qué está pasando aquí?
1. extension-
2.
3.
ToEntity()
,
2.
3.
Dado que Jupiter está diseñado para pequeños fragmentos de código que no tienen que seguir ningún requisito de diseño, F # es más adecuado para esto. Por lo tanto, como se desprende de la captura de pantalla al principio del artículo, también es compatible. Por ejemplo, la solución de la ecuación de la escuela se ve así:
Planes futuros
Soy un gran admirador de .NET, pero también me encanta Jupyter. Por lo tanto, Interactive me hizo muy feliz y me apresuré a hacer soporte Interactive para AngouriMath para mostrar expresiones en LaTeX. Pero además, más interesante. Estoy pensando en hacer algo del tipo
Entity.Plot()
que mostraría inmediatamente el gráfico de la función. Para casos de uso simples, creo que la cosa es realmente necesaria.
Si quieres probar sin instalar nada de lo necesario, puedes hurgar por aquí: (alarma: por alguna razón tarda mucho en cargar, tendrás que esperar) ¡
Gracias por tu atención! Esa es una nota corta.
Enlaces
1. Jupyter : un entorno de navegador conveniente para la programación interactiva
2. .NET Interactive : lo más brillante, gracias al cual puedes usar dotnet en Jupiter
3. AngouriMath : una biblioteca matemática para la que escribí un contenedor para latech
4. MyBinder : una demostración para los perezosos