python - 如何反转cvxpy中的变量矩阵?
问题描述
如何在 cvxpy 中反转变量矩阵?
我有一个问题变量矩阵,定义如下:
import cvxpy as cp
A = cp.Variable(2,2)
我想解决一个目标函数涉及这个矩阵的逆的程序。我已经尝试了几乎所有我能想到的方法(包括手动定义逆矩阵),但似乎没有任何效果。
我的问题的完整代码是:
A = cp.Variable((2,2)) # matrix A is 2X2
c = cp.Variable(2) # center of 2d ellipsoid
constraints = [A >> 0]
constraints += [cp.pnorm(cp.matmul(A, v[i] - cp.matmul(A,c)), p=2) <= np.array([1,1]) for i in range(10)]
# this is where I'm stuck. Using np.linalg.inv doesn't work.
# I also can't seem to calculate this inverse manually
obj_fn = cp.log_det(np.linalg.inv(A))
prob = cp.Problem(cp.Minimize(obj_fn), constraints)
prob.solve(solver='CVXOPT')
解决方案
我不知道如何在 cvxpy 中反转矩阵,但是对于您拥有的特定代码,您可以使用以下事实:
日志检测 A^{-1} = - 日志检测 A
推荐阅读
- vue.js - Bootstrap-Vue.JS 未知的自定义元素
- ios - 当另一个视图控制器加载时,将pickerview中的项目值调用到另一个视图控制器中
- vba - 条件格式。颜色超出范围的单元格
- c++ - cv::imshow 无法识别包裹在 cv::Mat 中的交错指针
- android - 保存子片段状态
- swift - 获取线程:信号 SIGABRT
- android - Android 依赖层次结构
- html - SVG 过滤器 feFlood 'flood-color' 属性是否支持渐变作为输入?
- c# - Unity 使用 IENumerator 设置另一个对象将使用的类
- signed - 为什么 unsigned int 的可接受范围是 -128 到 127?为什么没有从 -127 到 128 的范围?