Теперь посмотрим, как такой же расчет реализуется с помощью матриц.
Сначала создадим матрицу распределения затрат A:
A = | 1 -0.15 -0.08 | | -0.20 1 -0.07 | | -0.30 -0.10 1 |
Создадим вектор исходных затрат b:
b = | 100000 | | 50000 | | 30000 |
Нам нужно решить уравнение Ax = b, где x - вектор итоговых затрат. Решение: x = A^(-1) * b
Найдем обратную матрицу A^(-1):
A^(-1) ≈ | 1.3104 0.2484 0.1533 | | 0.3173 1.2001 0.1368 | | 0.4772 0.1805 1.1859 |
Теперь умножим A^(-1) на b:
x = A^(-1) * b ≈ | 117388 | | 78590 | | 73016 |
Теперь распределим эти затраты на Цех1 и Цех2:
Матрица распределения на цеха D:
D = | 0.25 0.25 | | 0.45 0.30 | | 0.35 0.50 |
Итоговое распределение на цеха y:
y = D^T * x ≈ | 90268 | | 89432 |
Итак, окончательное распределение: Цех1: 90268 руб. Цех2: 89432 руб.
Общая сумма: 90268 + 89432 = 179700 руб.
Небольшая разница в результатах (около 300 руб.) связана с округлениями при вычислениях.
Это решение с помощью матриц дает тот же результат, что и метод итераций, но более компактно и элегантно.
В условиях большого объема данных ускорение расчета может достигать сотни раз! Отмечу, что примерно такой способ расчета используется в нашем программном продукте
Eidox, что позволяет производить расчет себестоимости за минуты и с любой частотой - даже каждый день.