예제 #1
0
 def diagonalupdate(self, d: VariableData):
     return type(self)({
         k: self.operators[k].diagonalupdate(d[k])
         for k in self.operators.keys() & d.keys()
     })
예제 #2
0
 def blocks(self) -> VariableData:
     return VariableData(
         {v: op.to_dense()
          for v, op in self.operators.items()})
예제 #3
0
 def diagonal(self):
     return VariableData(
         {v: op.diagonal()
          for v, op in self.operators.items()})
예제 #4
0
 def from_diagonal(cls, diag: VariableData) -> "VariableFullOperator":
     operators = {v: DiagonalMatrix(d) for v, d in diag.items()}
     return cls(operators)
예제 #5
0
    def diagonal(self):
        diag = VariableData()
        for op in self.operators:
            diag.update(op.diagonal())

        return diag
예제 #6
0
 def fixed_values(self) -> VariableData:
     return VariableData()