# Лаба Дмитро

## Лабораторна робота №2
## Варіант 2


```python
import numpy as np
import sympy as sp
from scipy.linalg import eig
from sympy.matrices import Matrix
from IPython.display import display, Math, Latex

def bmatrix(a):
    lines = str(a).replace('[', '').replace(']', '').splitlines()
    rv = [r'\begin{bmatrix}']
    rv += ['  ' + ' & '.join(l.split()) + r'\\' for l in lines]
    rv +=  [r'\end{bmatrix}']
    return Math('\n'.join(rv))
```

# Завдання №1


```python
industry = (600, 450, 1200)
industry_added_value = 0.3

agriculture = (450, 400, 700)
agriculture_added_value = 0.5

matrix = np.array([industry, agriculture])
added_value = np.array([industry_added_value, agriculture_added_value])
```


```python
gross_output = np.sum(matrix, axis=1)
direct_expenses = matrix[0:2, 0:2]/gross_output
print('Прямі витрати: ')
display(bmatrix(direct_expenses))
```

    Прямі витрати: 



$$\begin{bmatrix}
  0.26666667 & 0.29032258\\
  0.2 & 0.25806452\\
\end{bmatrix}$$



```python
full_expenses = np.linalg.inv(np.eye(len(direct_expenses)) - direct_expenses)
print('Повні витрати: ')
display(bmatrix(full_expenses))
```

    Повні витрати: 



$$\begin{bmatrix}
  1.52654867 & 0.59734513\\
  0.41150442 & 1.50884956\\
\end{bmatrix}$$



```python
prices = added_value @ full_expenses
print('Ціни на промислову та сільськогосподарську продукцію: ')
display(bmatrix(prices))
```

    Ціни на промислову та сільськогосподарську продукцію: 



$$\begin{bmatrix}
  0.66371681 & 0.93362832\\
\end{bmatrix}$$



# Завдання №2


```python
A = np.array([
    [0.4, 0.4, 0.2], 
    [0.2, 0.5, 0.4],
    [0.1, 0.1, 0.2]
])
n = len(A)
```

## Власні числа


```python
eigvals = np.linalg.eigvals(A)
print('\n'.join(['({0:.2f} {1} {2:.2f}i)'.format(n.real, '+-'[n.imag < 0], abs(n.imag)) for n in eigvals]))
```

    (0.84 + 0.00i)
    (0.13 + 0.07i)
    (0.13 - 0.07i)


## Коефіцієнти характеристичного поліному


```python
M = Matrix(A)
lamda = sp.symbols('lamda')
characteristic_polynomial = M.charpoly(lamda)
sp.init_printing(use_latex='mathjax')
display(sp.factor(characteristic_polynomial))
```


$$1.0 \left(1.0 \lambda^{3} - 1.1 \lambda^{2} + 0.24 \lambda - 0.018\right)$$


## Число Фробеніуса


```python
frobenius_number = np.real(np.max(eigvals)) 
print('{0:.2f}'.format(frobenius_number))
```

    0.84


## Правий та лівий вектори Фробеніуса


```python
a, left, right = eig(A, left=True)
print('Лівий вектор: ')
left_frobenius = np.real(left[:, 0])
display(bmatrix(left_frobenius))

print('Перевірка: ')
display(bmatrix(left_frobenius @ A))
display(bmatrix(frobenius_number * left_frobenius))


print('Правий вектор: ')
right_frobenius = np.real(right[:, 0])
display(bmatrix(right_frobenius))

print('Перевірка: ')
display(bmatrix(A @ right_frobenius))
display(bmatrix(frobenius_number * right_frobenius))


```

    Лівий вектор: 



$$\begin{bmatrix}
  0.44397979 & 0.69076468 & 0.57072419\\
\end{bmatrix}$$


    Перевірка: 



$$\begin{bmatrix}
  0.37281727 & 0.58004668 & 0.47924667\\
\end{bmatrix}$$



$$\begin{bmatrix}
  0.37281727 & 0.58004668 & 0.47924667\\
\end{bmatrix}$$


    Правий вектор: 



$$\begin{bmatrix}
  0.7089431 & 0.67144485 & 0.21578112\\
\end{bmatrix}$$


    Перевірка: 



$$\begin{bmatrix}
  0.5953114 & 0.56382349 & 0.18119502\\
\end{bmatrix}$$



$$\begin{bmatrix}
  0.5953114 & 0.56382349 & 0.18119502\\
\end{bmatrix}$$


## Продуктивність матриці

За критерієм Леонтьєва, необхідня і достатня умова $\lambda_A < 1$ виконується, тому матриця є продуктивною

## Матриця повних витрат


```python
B = np.linalg.inv(np.eye(len(A)) - A)
display(bmatrix(B))
```


$$\begin{bmatrix}
  2.95081967 & 2.78688525 & 2.13114754\\
  1.63934426 & 3.7704918 & 2.29508197\\
  0.57377049 & 0.81967213 & 1.80327869\\
\end{bmatrix}$$


## Збіжність до матриці повних витрат


```python
matrix_sum, A_power = np.eye(n), np.eye(n)
for i in range(200):
    A_power = A_power @ A
    matrix_sum += A_power
    if np.all(B - matrix_sum) < 0.01:
        print('Матриця збіжна до матриці повних витрат на кроці {}'.format(i))
        break
display(bmatrix(matrix_sum))
```

    Матриця збіжна до матриці повних витрат на кроці 193



$$\begin{bmatrix}
  2.95081967 & 2.78688525 & 2.13114754\\
  1.63934426 & 3.7704918 & 2.29508197\\
  0.57377049 & 0.81967213 & 1.80327869\\
\end{bmatrix}$$


## Вектор кінцевого випуску


```python
y = np.array([100, 70, 80])
end_output = np.linalg.inv(np.eye(n) - A) @ y
display(bmatrix(end_output))
```


$$\begin{bmatrix}
  660.6557377 & 611.47540984 & 259.01639344\\
\end{bmatrix}$$


8e29f38ba494a0eb80ca405b74a94376edd2d792
ipynb
Jupyter Notebook
eco_systems/laba2.ipynb
pashchenkoromak/jParcs
5d91ef6fdd983300e850599d04a469c17238fc65
MIT
2019-10-01T09:41:15.000Z
2021-06-06T17:46:13.000Z
eco_systems/laba2.ipynb
pashchenkoromak/jParcs
5d91ef6fdd983300e850599d04a469c17238fc65
MIT
2018-05-18T18:20:46.000Z
2018-05-18T18:20:46.000Z
eco_systems/laba2.ipynb
pashchenkoromak/jParcs
5d91ef6fdd983300e850599d04a469c17238fc65
MIT
2017-01-20T15:44:06.000Z
2021-11-28T20:00:49.000Z
Qwen/Qwen-72B
1. YES
2. YES