Как стать автором
Обновить

Пишем «калькулятор» на C#. Часть I. Вычисление значения, производная, упрощение, и другие гуси

Время на прочтение 9 мин
Количество просмотров 57K
Программирование *.NET *C# *Математика *
Привет!

Калькулятор у нас почему-то ассоциируется с чем-то, что должен написать каждый новичок. Возможно потому, что исторически компьютеры с той целью и создавались, чтобы считать. Но мы будем писать непростой калькулятор, не sympy конечно, но чтобы умел базовые алгебраические операции, типа дифференциирования, симплификации, а также фичи типа компиляции для ускорения вычислений.

Меньше воды! О чем статья?
Здесь будет поверхностно о построении выражения, парсинге из строки, подстановки переменной, аналитической производной, численным решении уравнения и определенного интеграла, рендеринг в формат LaTeX, комплексных числах, компиляцией функций, упрощении, раскрытии скобок, и бла бла бла. Вероятно, не в одной статье.
Для тех, кому нужно срочно что-нибудь склонировать, ссылка на репозиторий.

Берем оставшиеся с нового года печеньки, и погнали!
Читать дальше →
Всего голосов 34: ↑34 и ↓0 +34
Комментарии 18

Пишем «калькулятор». Часть II. Решаем уравнения, рендерим в LaTeX, ускоряем функции до сверхсветовой

Время на прочтение 7 мин
Количество просмотров 9.1K
Программирование *.NET *C# *Математика *
Привет!

Итак, в первой части мы уже неплохо поработали, сделав производную, упрощение, и компиляцию. Так, а что еще должен уметь наш простенький калькулятор? Ну хотя бы уравнения вида

$(x - b)(\tan(\sin(x))^2 - 3\tan(\sin(x)) + c) = 0$

точно должен решать. А еще красиво нарисовать это дело в латехе, и будет прямо хорошо! Погнали!



Читать дальше →
Всего голосов 18: ↑18 и ↓0 +18
Комментарии 10

Developing a symbolic-expression library with C#. Differentiation, simplification, equation solving and many more

Время на прочтение 15 мин
Количество просмотров 6.3K
Open source *Программирование *.NET *C# *Математика *
Hello!

[UPD from 12.06.2021: if you're looking for a symbolic algebra library, AngouriMath is actively developed. It's on Github and has a website. Discord for questions]

Why does programming a calculator seem to be a task, which every beginner undertakes? History might have the answer — computers were created for this exact purpose. Unlike the beginners, we will develop a smart calculator, which, although won't reach the complexity of SymPy, will be able to perform such algebraic operations as differentiation, simplification, and equations solving, will have built-in latex support, and have implemented features such as compilation to speed up the computations.

What are the articles about?
It will superficially tell about assembling an expression, parsing from a string, variable substitution, analytic derivative, equation numerical solving, and definite integration, rendering to LaTeX format, complex numbers, compiling functions, simplifying, expanding brackets, and blah blah blah.
For those who urgently need to clone something, repository link.

Let's do it!
Read more →
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 0

Тензоры для C#. И матрицы, и векторы, и кастомный тип, и сравнительно быстро

Время на прочтение 5 мин
Количество просмотров 6.3K
.NET *C# *Математика *
Привет!

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


Читать дальше →
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 15

Jupyter для .NET. «Как в питоне»

Время на прочтение 3 мин
Количество просмотров 8K
.NET *C# *Математика *F# *
Несколько месяцев назад Microsoft рассказали о Jupyter в .NET. Но активности по этому топику очень мало, а ведь тема очень интересная. Но что такое прикольное придумать? Я решил сделать удобный вывод класса Entity из библиотеки символьной алгебры:



Выглядит круче, чем в питоне. Делается просто, доставляет массу удовольствия. Приглашаю под кат!
Читать дальше →
Всего голосов 24: ↑24 и ↓0 +24
Комментарии 11

Jupyter for .NET. «Like Python»

Время на прочтение 2 мин
Количество просмотров 1.7K
.NET *C# *Математика *F# *
Перевод
A few months ago Microsoft announced about the creation of Jupyter for .NET. However, people are barely interested in it despite how attractive the topic is. I decided to make a LaTeX wrapper for the Entity class from a symbolic algebra library:



Looks awesome. Is simple. Very enjoyable. Let's see more!
Read more →
Всего голосов 2: ↑2 и ↓0 +2
Комментарии 0

Что нового в AngouriMath 1.2?

Время на прочтение 5 мин
Количество просмотров 2.2K
.NET *Алгоритмы *C# *Математика *F# *

Спустя 210 дней, 600 коммитов, десятки дебажных ночей и тысячи сообщений в обсуждениях проекта, я таки выпустил релиз AngouriMath 1.2.

Это небольшая опен-сорсная библиотека символьной алгебры для C# и F#, но вдруг кому-нибудь интересно?

Читать далее
Всего голосов 24: ↑24 и ↓0 +24
Комментарии 2

What's new in AngouriMath 1.2?

Время на прочтение 5 мин
Количество просмотров 1.2K
Алгоритмы *C# *Математика *F# *
Перевод

After 210 days, 600 commits, tens of debugging nights, and thousands of messages in the project chat, I finally released AngouriMath 1.2.

This is an open-source symbolic algebra library for C# and F#, maybe it is interesting for someone?

Read more
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 1

Компилируем математические выражения

Время на прочтение 11 мин
Количество просмотров 6.1K
Программирование *.NET *Алгоритмы *C# *Математика *

Хочу рассказать свою реализацию компиляции математических выражений. Будем компилировать в функцию от произвольных аргументов. В планах:

1. Арифметические операции, тригонометрия, и другие численные функции.

2. Булева алгебра (логика), логические операторы (и, или, и т. д.), а так же знаки сравнения.

3. Произвольные типы в качестве входных, выходных, и промежуточных.

Приятного чтения!

Читать далее
Всего голосов 25: ↑25 и ↓0 +25
Комментарии 25

Compilation of math functions into Linq.Expression

Время на прочтение 12 мин
Количество просмотров 4.9K
Программирование *.NET *Алгоритмы *C# *Математика *

Here I am going to cover my own approach to compilation of mathematical functions into Linq.Expression. What we are going to have implemented at the end:

1. Arithmetical operations, trigonometry, and other numerical functions

2. Boolean algebra (logic), less/greater and other operators

3. Arbitrary types as the function's input, output, and those intermediate

Hope it's going to be interesting!

Read more →
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 1

AngouriMath 1.3 update

Время на прочтение 5 мин
Количество просмотров 4K
Open source *.NET *C# *Математика *F# *

Four months of awesome work together with a few new contributors finally result in a new major release, which I'm happy to announce about.

Now we get completely new matrices, improved parser, a lot of new functions, almost rewritten interactive package (for working in Jupyter) and many more.

This article about a big update in a FOSS symbolic algebra library for .NET, I hope it may be interesting for someone!

Read more
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 0

Обновление AngouriMath 1.3

Время на прочтение 5 мин
Количество просмотров 2.3K
Open source *.NET *C# *Математика *F# *
Из песочницы
Перевод

Четыре месяца работы вместе с небольшим количеством новых контрибьютеров наконец-то дали свои плоды в виде нового большого релиза, с которым с удовольствием автор хочет Вас познакомить

Теперь в AngouriMath есть инструменты работы с матрицами, улучшенный парсер, много новых функций, практически полностью переписанный пакет Interactive (для работы в Jupyter) и многое другое.

Эта статья повествует о большом обновлении в FOSS библиотеке символьной алгебры для .NET

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 0