doc/math/array.md
2026-04-01 14:03:48 +03:00

4.8 KiB
Raw Blame History

array

1

habr

excel

js

2

tuples_or_sets

3 AI

array

В функции есть несколько массивов - как входящие данные и несколько массивов - как результат функции. Как записать математически?

Понял, вы хотите, чтобы математическая запись функции с несколькими массивами на входе и выходе была оформлена только с помощью $ (инлайн) и $$ (дисплей) — так формулы гарантированно корректно отображаются на GitHub (через MathJax). Ниже привожу варианты, используя только эти конструкции.


1. Математическая нотация

В математике массивы обычно рассматриваются как элементы множеств

Вариант 1: Декартово произведение (дисплейная формула)

f: A_1 \times A_2 \times \dots \times A_k ;\longrightarrow; B_1 \times B_2 \times \dots \times B_m

Вариант 2: Значение функции — кортеж (дисплейная формула)

f(a_1, a_2, \dots, a_k) = (b_1, b_2, \dots, b_m)

где a_i \in A_i, b_j \in B_j.

Вариант 3: Векторная форма (если все массивы одного типа)

f: A^k \to B^m,\qquad f(\mathbf{a}) = \mathbf{b}

с \mathbf{a} \in A^k, \mathbf{b} \in B^m.

Вариант 4: Теоретико-множественное определение (с использованием \subseteq)

f \subseteq (A_1 \times \dots \times A_k) \times (B_1 \times \dots \times B_m)

и для каждого входа существует ровно один выход.


2. Программирование (кратко, с акцентом на сигнатуры)

На GitHub в блоках кода формулы не нужны, поэтому просто приведу примеры сигнатур.

Python (кортеж):

def process(arr1: list, arr2: list) -> tuple[list, list]:
    ...

C (выходные параметры):

void process(int* in1, int* in2, int* out1, int* out2);

Go (структура):

type Result struct { Out1 []int; Out2 []int }
func process(in1, in2 []int) Result

Если нужно именно математическое описание для GitHub — используйте приведённые выше формулы с $ и $$, они будут отображаться корректно.


3. Замечания

  • В математике часто стремятся объединить несколько выходных массивов в один (например, в виде матрицы, где столбцы — отдельные массивы), чтобы функция возвращала один объект.
  • В программировании предпочтение отдаётся ясности: лучше явно указать типы и имена возвращаемых значений (через кортеж, объект или структуру), чем смешивать их в одном массиве.
  • Если входные массивы имеют одинаковую структуру, их часто передают как один массив массивов (список списков).