more-math
1.1.1indexedEnhances mathematical operations with matrices, vectors, combinatorics, and more, offering functionalities like factorial, tetration, matrix manipulation, graph construction, complex numbers, and vector operations.
Enhances mathematical operations with matrices, vectors, combinatorics, and more, offering functionalities like factorial, tetration, matrix manipulation, graph construction, complex numbers, and vector operations.

Мультиплатформенная библиотека Kotlin, добавляющая математические операции с матрицами, векторами, комбинаторикой и многим другим.
Эмоджи для телеграм доступны по ссылке https://t.me/addemoji/RkIQSnNfAAA
Чтобы подключить библиотеку нужно добавить строчки ниже в файл build.gradle.kts вашего мультиплатформенного модуля
dependencies {
implementation("io.github.plumsoftware:more-math:<version>")
}
Эта библиотека предоставляет функциональность для работы с вектором на плоскости, матрицей, комбинаторикой.
Вычисление факториала для числа до 21
val res = MoreMath.factorial(3)
Вычислить факторил для числа более 20
val res = MoreMath.bigFactorial(22L)
Вычислить тетрацию
val res = MoreMath.tetraction(2.0, 3)
Если, число в тетрации большое, то используйте
val res = MoreMath.bigTetraction(2.0, 40)
Чтобы вычислить наименьшее общее кратное двух чисел
val res = MoreMath.gcd(13, 17)
Вычисление стандартного отклонения ряда чисел
val res = MoreMath.standardDeviation(1.0, 2.0, 3.0)
Среднее значение
val res = MoreMath.average(1, 2, 3)
Узнать, положительное или отрицательное число
4.isPositive
(-4).isNegative
Создать матрицу можно тремя способами
val matrix = matrixOf<Int> (
mutableListOf(1, 2),
mutableListOf(3, 4)
)
или
val matrix = Matrix<Int> (
mutableListOf(1, 2),
mutableListOf(3, 4)
)
или
val matrix = Matrix<Int>(size = MatrixSize(row = 3, column = 4))
Последее создаст пустую матрицу. Также можно получить размер матрицы
val size = matrix.size
Операторы, доступные для матриц +, -, *, pow(), >, >= и подобные. Для сравнения контента матриц, используйте метод equals().
val matrix1 = matrixOf<Int> (
mutableListOf(1, 2),
mutableListOf(3, 4)
)
val matrix2 = matrixOf<Int> (
mutableListOf(5, 6),
mutableListOf(7, 8)
)
val matrix3 = matrix1.pow(2)
val plus = matrix1 + matrix2
val times = matrix1 * matrix2
minus = matrix1 - matrix2
Вычислить определитель матрицы
val det = matrix.determinant()
Транспонировать матрицу
val transposedMatrix = matrix.transpose()
Умножить матрицу на число
val res = matrix.times(2)
Найти минимальный или максимальный элемент в матрице.
Если Ваша матрица состоит из Double, Long, Float или Int, то воспользуйтесь кодом ниже
val min = matrix.minInMatrix()
val max = matrix.maxInMatrix()
или
val min = matrix.minInMatrixBy { it }
val max = matrix.maxInMatrixBy { it }
Создать взвешенный граф
val graph = Graph<VertexType, WeightType>(mode = GraphMode.UNDIRECTED)
Где VertexType - это тип вершины.
WeightType - это тип веса вершины: Int, Double, Long, Float.
mode - это тип графа: , .
Для создания связи нужно добавить вершины:
val graph = Graph<String, Int>()
val vertexA = Vertex(id = "A")
val vertexB = Vertex(id = "B")
val vertexC = Vertex(id = "C")
val vertexD = Vertex(id = "D")
graph.addVertex(vertexA)
graph.addVertex(vertexB)
graph.addVertex(vertexC)
graph.addVertex(vertexD)
Затем создайте связь между вершинами
graph.createConnection(from = vertexA, to = vertexB, weight = 2)
Получить минимальный путь в графе от и до вершины
val minPath: GraphPath<String, Double> = graph.minPath(from = Vertex("A"), to = Vertex("B"))
В результате будет возвращен GraphPath, который содержит пары - вершины и суммарный путь до следующей вершины.
Получить все вершины
val vertices = graph.vertices
Получить все связи
val vertices = graph.connections
Узнать, есть ли вершина
val vertex: Vertex<String>? = graph[someVertex]
Это вернёт null, если вершины в графе нет.
Заменить вершину в графе
val newVertex = Vertex("A")
val oldVertex = Vertex("B") //Эта вершина уже есть в графе
graph.set(oldVertex, newVertex, SetVertexMode.NEW_FROM_TO)
Это заменит все вершины во всех связях в графе и удалит старую вершину.
Если вы хотите заменить только начальные вершины в связях или конечные, то используйте NEW_FROM или NEW_TO соответственно.
Для удаления всех связей используйте:
graph.removeConnectionsByVertex(someVertex, RemoveVertexMode.TO)
Это удалит все связи, где есть переданная конечная вершина.
Если нужно удалить только начальные вершины или обе (начальную и конечную) из связей, то используйте FROM или BOTH соответственно.
Для получения всех вершин без связей или наоборот всех вершин в связях
val freeList = graph.getFreeVertices()
val busyList = graph.getBusyVertices()
Создать комплексное число
val complex: Complex = complex(-4.0)
В результате будет 0.0 - 2.0i
Если Вам нужно указать реальную часть числа, то воспользуйтесь
val complex: Complex = complex(3, -4.0)
В результате будет 3.0 - 2.0i
Получить алгебраическую или геометрическую форму можно таким образом
val algebraic = complex.toAlgebraic()
val geometric = complex.toGeometric()
С комплексными числами можно выполнять +, -, *, /. Также доступны equals() и hashCode().
Создание вектора аналогично созданию матрицы
val vector2 = vector2Of(1 , 2)
или
val vector2 = Vector2(1 , 2)
С векторами на плоскости доступны следующие операторы +, -, *, /. Также Вы можете использовать equals() и length().
val vector1 = vector2Of(1, 2)
val vector2 = vector2Of(3, 4)
val plus = vector1 + vector2
val minus = vector1 - vector2
val times = vector1 * vector2
val div = vector1 / vector2
val length = vector1.length()
Комбинации из 5 элементов по 2 элемента
val res = MoreMath.combinations(5, 2)
Размещения
val res = MoreMath.placements(5, 2)
Биноменальный коэффициент
val res = MoreMath.binomialCoefficient(5, 2)
UNDIRECTEDDIRECTEDSurfaced from shared tags and platforms — no rankings paid for.