Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- def norm(mat):
- total = [0, 0]
- res = mat
- for i in range(0, 2):
- for j in range(0, 2):
- total[j] = total[j] + mat[i][j]
- for i in range(0, 2):
- for j in range(0, 2):
- res[i][j] = res[i][j] / total[j]
- return res
- def get_w(mat):
- w = [0, 0]
- for i in range(0, 2):
- for j in range(0, 2):
- w[i] = w[i] + mat[i][j]
- w[i] = w[i] / 2
- return w
- def out_mat(suf, mat):
- print('A_' + suf)
- print(np.matrix(mat))
- print('А_' + suf + ' нормована')
- print(np.matrix(norm(mat)))
- print('W_' + suf)
- print(get_w(norm(mat)))
- def find_intersection(p, q, f_p, f_q, m_p, m_q):
- f_in_p = f_p * p + f_q * q
- m_in_p = m_p * p + m_q * q
- return f_in_p - m_in_p > 0
- A_p = [[1, 1], [1, 1]]
- A_v = [[1, 2], [1/2, 1]]
- A_rb = [[1, 1/2], [2, 1]]
- A_rp = [[1, 1/3], [3, 1]]
- A_vb = [[1, 1/3], [3, 1]]
- A_vp = [[1, 2], [1/2, 1]]
- A = {'р': A_p, 'в': A_v, 'рб': A_rb, 'рп': A_rp, 'вб': A_vb, 'вп': A_vp}
- W = dict()
- for key in A.keys():
- out_mat(key, A[key])
- W[key] = get_w(norm(A[key]))
- print()
- f_p = W['р'][0] * W['рб'][0] + W['р'][1] * W['рп'][0]
- f_q = W['в'][0] * W['вб'][0] + W['в'][1] * W['вп'][0]
- m_p = W['р'][0] * W['рб'][1] + W['р'][1] * W['рп'][1]
- m_q = W['в'][0] * W['вб'][1] + W['в'][1] * W['вп'][1]
- print('Ф(p, q) =', f_p, '* p +', f_q, '* q')
- print('М(p, q) =', m_p, '* p +', m_q, '* q')
- print()
- l = -2
- r = 2
- for _ in range(0, 50):
- mid = (r + l) / 2
- if find_intersection(mid, 1 - mid, f_p, f_q, m_p, m_q) == find_intersection(r, 1 - r, f_p, f_q, m_p, m_q):
- r = mid
- else:
- l = mid
- print('Прямi Ф(p, q) та М(p, q) перетинаються при p =', l, 'q =', 1 - l)
- if 0 <= l <= 1:
- first = 'М'
- second = 'Ф'
- if find_intersection(0, l / 2, f_p, f_q, m_p, m_q):
- first = 'Ф'
- second = 'М'
- print('На промiжку p:[ 0 ,', round(l, 4), '], q = 1 - p вибираємо', first, 'iнакше', second)
- else:
- alt = 'М'
- if find_intersection(0, 1, f_p, f_q, m_p, m_q):
- alt = 'Ф'
- print('Для будь-яких p та q , p + q = 1 та 0 <= p,q <= 1 вибираємо альтернативу ', alt)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement