User Tools

Site Tools


material:qmodel

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
material:qmodel [2025/08/01 09:04] – [Methods] markusmaterial:qmodel [2025/08/02 14:25] (current) – [Methods] markus
Line 288: Line 288:
 ===== Basis class ===== ===== Basis class =====
  
 +A basis is subscriptable, meaning that ''b[i]'' returns the //i//th element of the basis as a ''Vector'' (where ''i'' starts with 0).
 ==== Properties ==== ==== Properties ====
  
Line 512: Line 513:
  
 Example: Let ''lb'' be a ''LatticeBasis'' and ''X'' a vector on a many-particle basis that includes particles on the lattice (possibly with additional degrees-of-freedom). Then ''X.trace(lb)'' gives the density on the lattice. Example: Let ''lb'' be a ''LatticeBasis'' and ''X'' a vector on a many-particle basis that includes particles on the lattice (possibly with additional degrees-of-freedom). Then ''X.trace(lb)'' gives the density on the lattice.
 +</WRAP>
 +
 +''**Vector.tensor(X: Vector, [tensor_basis: Basis]) -> Vector**''
 +<WRAP indent>
 +Computes the tensor product with another vector.
 +
 +''tensor_basis'' is an optional argument to fix a 2-particle basis for the returned vector. If it is not given, a new basis is constructed as a tensor product of the vectors' bases. It might be necessary to specify ''tensor_basis'' in many cases, since the new vector should be defined on a particular basis object. More importantly, the symmetry of the provided basis is also respected. If ''tensor_basis'' is symmetric, the tensor product is a symmetrized tensor product, $v\otimes w+w\otimes v$, if it is antisymmetric, the tensor product is a wedge product, $v\wedge w=v\otimes w-w\otimes v$.
 +</WRAP>
 +
 +''**Vector.proj() -> Operator**''
 +<WRAP indent>
 +Returns an operator that is the projector on the given vector.
 +The vector is always normalized in the procedure.
 </WRAP> </WRAP>
 ===== Operator class ===== ===== Operator class =====
Line 575: Line 589:
 </WRAP> </WRAP>
  
-''**Operator.expval(vec: Vector, [check_real: bool], [transform_real: bool]) -> float|complex**''+''**Operator.expval(vec: Vector, [check_real: bool], [transform_real: bool]) -> Number**''
 <WRAP indent> <WRAP indent>
 Return the expectation value of the operator w.r.t. the given vector. Return the expectation value of the operator w.r.t. the given vector.
Line 586: Line 600:
 ''**Operator.norm() -> float**'' ''**Operator.norm() -> float**''
 <WRAP indent> <WRAP indent>
-Return the 2-norm (largest singular value) of an operator.+Return the 2-norm (largest singular value) of the operator. 
 +</WRAP> 
 + 
 +''**Operator.trace() -> complex**'' 
 +<WRAP indent> 
 +Return the trace (sum over all diagonal values) of the operator.
 </WRAP> </WRAP>
  
Line 615: Line 634:
 Tensor product of the operator with another one. If the argument is an ''OperatorList'' then the tensor product is taken with every operator in the list and an ''OperatorList'' is returned. Tensor product of the operator with another one. If the argument is an ''OperatorList'' then the tensor product is taken with every operator in the list and an ''OperatorList'' is returned.
  
-''tensor_basis'' is an optional argument to fix a basis for the returned operator. If it is not given, a new basis is constructed as a tensor product itself. It might be necessary to specify ''tensor_basis'' in many cases, since the new operator should be defined on a particular basis object. +''tensor_basis'' is an optional argument to fix a basis for the returned operator. If it is not given, a new basis is constructed as a tensor product itself. It might be necessary to specify ''tensor_basis'' in many cases, since the new operator should be defined on a particular basis object. Note that this cannot be a (anti)symmetric tensor basis.
- +
-//This does not work for symmetric/antisymmetric tensor products.//+
 </WRAP> </WRAP>
 ===== OperatorList class ===== ===== OperatorList class =====
Line 669: Line 686:
 </WRAP> </WRAP>
  
-''**OperatorList.expval(vec: Vector, [check_real: bool], [transform_real: bool]) -> float|complex**''+''**OperatorList.expval(vec: Vector, [check_real: bool], [transform_real: bool]) -> Number**''
 <WRAP indent> <WRAP indent>
 Return the expectation values of each operator in the list w.r.t. the given vector as a NumPy ''ndarray''. Flags are like in ''Operator.expval()''. Return the expectation values of each operator in the list w.r.t. the given vector as a NumPy ''ndarray''. Flags are like in ''Operator.expval()''.
Line 697: Line 714:
 <WRAP indent> <WRAP indent>
 Tensor product of each operator in the list with another operator that returns an ''OperatorList''. The optional argument ''tensor_basis'' is like for ''Operator.tensor()''. Tensor product of each operator in the list with another operator that returns an ''OperatorList''. The optional argument ''tensor_basis'' is like for ''Operator.tensor()''.
- 
-//This does not work for symmetric/antisymmetric tensor products.// 
 </WRAP> </WRAP>
material/qmodel.1754031889.txt.gz · Last modified: 2025/08/01 09:04 by markus

Except where otherwise noted, content on this wiki is licensed under the following license: CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki