Я хочу создать (диагональную) блочную матрицу (желательно разреженную) в CVXPY.
Некоторые блоки могут быть eye(m)
или любым другим, но у меня есть блок, который:
from cvxopt import *
import cvxpy as cvx
import numpy as np
import scipy
W = cvx.Variable(m,1)
W_diag = cvx.diag(W)
Затем я попытался сформировать блочную диагональную матрицу с W_diag
в качестве блока, например, следующим образом:
T = scipy.sparse.block_diag((scipy.sparse.eye(m1).todense(), cvx.diag(W))
и я получил следующую ошибку:
TypeError: не поддерживается преобразование типов: (dtype('float64'), dtype('O'))
Что я могу сделать? Другие способы? Я хочу использовать матрицу T
в ограничении для CVXPY позже.