本文整理匯總了Python中sympy.zeros方法的典型用法代碼示例。如果您正苦於以下問題:Python sympy.zeros方法的具體用法?Python sympy.zeros怎麽用?Python sympy.zeros使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類sympy
的用法示例。
在下文中一共展示了sympy.zeros方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: get_equations
# 需要導入模塊: import sympy [as 別名]
# 或者: from sympy import zeros [as 別名]
def get_equations(self):
"""
:return: Functions to calculate A, B and f given state x and input u
"""
f = sp.zeros(3, 1)
x = sp.Matrix(sp.symbols('x y theta', real=True))
u = sp.Matrix(sp.symbols('v w', real=True))
f[0, 0] = u[0, 0] * sp.cos(x[2, 0])
f[1, 0] = u[0, 0] * sp.sin(x[2, 0])
f[2, 0] = u[1, 0]
f = sp.simplify(f)
A = sp.simplify(f.jacobian(x))
B = sp.simplify(f.jacobian(u))
f_func = sp.lambdify((x, u), f, 'numpy')
A_func = sp.lambdify((x, u), A, 'numpy')
B_func = sp.lambdify((x, u), B, 'numpy')
return f_func, A_func, B_func
示例2: get_equations
# 需要導入模塊: import sympy [as 別名]
# 或者: from sympy import zeros [as 別名]
def get_equations(self):
"""
:return: Functions to calculate A, B and f given state x and input u
"""
f = sp.zeros(6, 1)
x = sp.Matrix(sp.symbols('rx ry vx vy t w', real=True))
u = sp.Matrix(sp.symbols('gimbal T', real=True))
f[0, 0] = x[2, 0]
f[1, 0] = x[3, 0]
f[2, 0] = 1 / self.m * sp.sin(x[4, 0] + u[0, 0]) * u[1, 0]
f[3, 0] = 1 / self.m * (sp.cos(x[4, 0] + u[0, 0]) * u[1, 0] - self.m * self.g)
f[4, 0] = x[5, 0]
f[5, 0] = 1 / self.I * (-sp.sin(u[0, 0]) * u[1, 0] * self.r_T)
f = sp.simplify(f)
A = sp.simplify(f.jacobian(x))
B = sp.simplify(f.jacobian(u))
f_func = sp.lambdify((x, u), f, 'numpy')
A_func = sp.lambdify((x, u), A, 'numpy')
B_func = sp.lambdify((x, u), B, 'numpy')
return f_func, A_func, B_func
示例3: compute_channel_operation
# 需要導入模塊: import sympy [as 別名]
# 或者: from sympy import zeros [as 別名]
def compute_channel_operation(rho, operators):
"""
Given a quantum state's density function rho, the effect of the
channel on this state is:
rho -> sum_{i=1}^n E_i * rho * E_i^dagger
Args:
rho (number): Density function
operators (list): List of operators
Returns:
number: The result of applying the list of operators
"""
from sympy import zeros
return sum([E * rho * E.H for E in operators],
zeros(operators[0].rows))
示例4: get_matrix_from_channel
# 需要導入模塊: import sympy [as 別名]
# 或者: from sympy import zeros [as 別名]
def get_matrix_from_channel(channel, symbol):
"""
Extract the numeric parameter matrix.
Args:
channel (matrix): a 4x4 symbolic matrix.
symbol (list): a symbol xi
Returns:
matrix: a 4x4 numeric matrix.
Additional Information:
Each entry of the 4x4 symbolic input channel matrix is assumed to
be a polynomial of the form a1x1 + ... + anxn + c. The corresponding
entry in the output numeric matrix is ai.
"""
from sympy import Poly
n = channel.rows
M = numpy.zeros((n, n), dtype=numpy.complex_)
for (i, j) in itertools.product(range(n), range(n)):
M[i, j] = numpy.complex(
Poly(channel[i, j], symbol).coeff_monomial(symbol))
return M
示例5: get_const_matrix_from_channel
# 需要導入模塊: import sympy [as 別名]
# 或者: from sympy import zeros [as 別名]
def get_const_matrix_from_channel(channel, symbols):
"""
Extract the numeric constant matrix.
Args:
channel (matrix): a 4x4 symbolic matrix.
symbols (list): The full list [x1, ..., xn] of symbols
used in the matrix.
Returns:
matrix: a 4x4 numeric matrix.
Additional Information:
Each entry of the 4x4 symbolic input channel matrix is assumed to
be a polynomial of the form a1x1 + ... + anxn + c. The corresponding
entry in the output numeric matrix is c.
"""
from sympy import Poly
n = channel.rows
M = numpy.zeros((n, n), dtype=numpy.complex_)
for (i, j) in itertools.product(range(n), range(n)):
M[i, j] = numpy.complex(
Poly(channel[i, j], symbols).coeff_monomial(1))
return M
示例6: compute_P
# 需要導入模塊: import sympy [as 別名]
# 或者: from sympy import zeros [as 別名]
def compute_P(self, As):
"""
This method creates the matrix P in the
f(x) = 1/2(x*P*x)+q*x
representation of the objective function
Args:
As (list): list of symbolic matrices repersenting the channel matrices
Returns:
matrix: The matrix P for the description of the quadaric program
"""
from sympy import zeros
vs = [numpy.array(A).flatten() for A in As]
n = len(vs)
P = zeros(n, n)
for (i, j) in itertools.product(range(n), range(n)):
P[i, j] = 2 * numpy.real(numpy.dot(vs[i], numpy.conj(vs[j])))
return P
示例7: print_ode
# 需要導入模塊: import sympy [as 別名]
# 或者: from sympy import zeros [as 別名]
def print_ode(self, latex_output=False):
'''
Prints the ode in symbolic form onto the screen/console in actual
symbols rather than the word of the symbol.
Parameters
----------
latex_output: bool, optional
Defaults to false which prints the equation in terms of symbols,
if set to yes then the formula in terms of latex equations will
be printed onto the screen.
'''
A = self.get_ode_eqn()
B = sympy.zeros(A.rows,2)
for i in range(A.shape[0]):
B[i,0] = sympy.symbols('d' + str(self._stateList[i]) + '/dt=')
B[i,1] = A[i]
if latex_output:
print(sympy.latex(B, mat_str="array", mat_delim=None,
inv_trig_style='full'))
else:
sympy.pretty_print(B)
示例8: _computeOdeVector
# 需要導入模塊: import sympy [as 別名]
# 或者: from sympy import zeros [as 別名]
def _computeOdeVector(self):
# we are only testing it here because we want to be flexible and
# allow the end user to input more state than initially desired
if len(self.ode_list) <= self.num_state:
self._ode = sympy.zeros(self.num_state, 1)
fromList, _t, eqn = self._unrollTransitionList(self.ode_list)
for i, eqn in enumerate(eqn):
if len(fromList[i]) > 1:
raise InputError("An explicit ode cannot describe more " +
"than a single state")
else:
self._ode[fromList[i][0]] = eqn
else:
raise InputError("The total number of ode is %s " +
"where the number of state is %s" %
len(self.ode_list), self.num_state)
return None
示例9: _computeTransitionVector
# 需要導入模塊: import sympy [as 別名]
# 或者: from sympy import zeros [as 別名]
def _computeTransitionVector(self):
"""
Get all the transitions into a vector, arranged by state to
state transition then the birth death processes
"""
self._transitionVector = sympy.zeros(self.num_transitions, 1)
_f, _t, eqn = self._unrollTransitionList(self._getAllTransition())
for i, eqn in enumerate(eqn):
self._transitionVector[i] = eqn
return self._transitionVector
########################################################################
#
# Other type of matrices
#
########################################################################
示例10: _computeTransitionJacobian
# 需要導入模塊: import sympy [as 別名]
# 或者: from sympy import zeros [as 別名]
def _computeTransitionJacobian(self):
if self._GMat is None:
self._computeDependencyMatrix()
F = sympy.zeros(self.num_transitions, self.num_transitions)
for i in range(self.num_transitions):
for j, eqn in enumerate(self._transitionVector):
for k, state in enumerate(self._iterStateList()):
diffEqn = sympy.diff(eqn, state, 1)
tempEqn, isDifficult = simplifyEquation(diffEqn)
F[i,j] += tempEqn*self._vMat[k,i]
self._isDifficult = self._isDifficult or isDifficult
self._transitionJacobian = F
self._hasNewTransition.reset('transitionJacobian')
return F
示例11: test_cu3
# 需要導入模塊: import sympy [as 別名]
# 或者: from sympy import zeros [as 別名]
def test_cu3():
E = eye(2)
UPPER = Matrix([[1, 0], [0, 0]])
LOWER = Matrix([[0, 0], [0, 1]])
theta, phi, lambd = symbols("theta phi lambd")
U = Circuit().rz(lambd)[0].ry(theta)[0].rz(phi)[0].run_with_sympy_unitary()
actual_1 = Circuit().cu3(theta, phi, lambd)[0, 1].run(backend="sympy_unitary")
expected_1 = reduce(TensorProduct, [E, UPPER]) + reduce(TensorProduct, [U, LOWER])
print("actual")
print(simplify(actual_1))
print("expected")
print(simplify(expected_1))
print("diff")
print(simplify(actual_1 - expected_1))
assert simplify(actual_1 - expected_1) == zeros(4)
示例12: get_equations
# 需要導入模塊: import sympy [as 別名]
# 或者: from sympy import zeros [as 別名]
def get_equations(self):
"""
:return: Functions to calculate A, B and f given state x and input u
"""
f = sp.zeros(14, 1)
x = sp.Matrix(sp.symbols('m rx ry rz vx vy vz q0 q1 q2 q3 wx wy wz', real=True))
u = sp.Matrix(sp.symbols('ux uy uz', real=True))
g_I = sp.Matrix(self.g_I)
r_T_B = sp.Matrix(self.r_T_B)
J_B = sp.Matrix(self.J_B)
C_B_I = dir_cosine(x[7:11, 0])
C_I_B = C_B_I.transpose()
f[0, 0] = - self.alpha_m * u.norm()
f[1:4, 0] = x[4:7, 0]
f[4:7, 0] = 1 / x[0, 0] * C_I_B * u + g_I
f[7:11, 0] = 1 / 2 * omega(x[11:14, 0]) * x[7: 11, 0]
f[11:14, 0] = J_B ** -1 * (skew(r_T_B) * u) - skew(x[11:14, 0]) * x[11:14, 0]
f = sp.simplify(f)
A = sp.simplify(f.jacobian(x))
B = sp.simplify(f.jacobian(u))
f_func = sp.lambdify((x, u), f, 'numpy')
A_func = sp.lambdify((x, u), A, 'numpy')
B_func = sp.lambdify((x, u), B, 'numpy')
return f_func, A_func, B_func
示例13: channel_matrix_representation
# 需要導入模塊: import sympy [as 別名]
# 或者: from sympy import zeros [as 別名]
def channel_matrix_representation(self, operators):
"""
We convert the operators to a matrix by applying the channel to
the four basis elements of the 2x2 matrix space representing
density operators; this is standard linear algebra
Args:
operators (list): The list of operators to transform into a Matrix
Returns:
sympy.Matrix: The matrx representation of the operators
"""
from sympy import Matrix, zeros
shape = operators[0].shape
standard_base = []
for i in range(shape[0]):
for j in range(shape[1]):
basis_element_ij = zeros(*shape)
basis_element_ij[(i, j)] = 1
standard_base.append(basis_element_ij)
return (Matrix([
self.flatten_matrix(
self.compute_channel_operation(rho, operators))
for rho in standard_base
]))
示例14: get_equations
# 需要導入模塊: import sympy [as 別名]
# 或者: from sympy import zeros [as 別名]
def get_equations(self):
"""
:return: Functions to calculate A, B and f given state x and input u
"""
f = sp.zeros(14, 1)
x = sp.Matrix(sp.symbols('m rx ry rz vx vy vz q0 q1 q2 q3 wx wy wz', real=True))
u = sp.Matrix(sp.symbols('ux uy uz', real=True))
g_I = sp.Matrix(self.g_I)
r_T_B = sp.Matrix(self.r_T_B)
J_B = sp.Matrix(self.J_B)
C_B_I = dir_cosine(x[7:11, 0])
C_I_B = C_B_I.transpose()
f[0, 0] = - self.alpha_m * u.norm()
f[1:4, 0] = x[4:7, 0]
f[4:7, 0] = 1 / x[0, 0] * C_I_B * u + g_I
f[7:11, 0] = 1 / 2 * omega(x[11:14, 0]) * x[7: 11, 0]
f[11:14, 0] = J_B ** -1 * (skew(r_T_B) * u - skew(x[11:14, 0]) * J_B * x[11:14, 0])
f = sp.simplify(f)
A = sp.simplify(f.jacobian(x))
B = sp.simplify(f.jacobian(u))
f_func = sp.lambdify((x, u), f, 'numpy')
A_func = sp.lambdify((x, u), A, 'numpy')
B_func = sp.lambdify((x, u), B, 'numpy')
return f_func, A_func, B_func
示例15: get_grad_eqn
# 需要導入模塊: import sympy [as 別名]
# 或者: from sympy import zeros [as 別名]
def get_grad_eqn(self):
'''
Return the gradient of the ode in algebraic form
Returns
-------
:class:`sympy.matrices.matrices`
A matrix of dimension [number of state x number of parameters]
'''
# finds
if self._Grad is None:
ode = self.get_ode_eqn()
self._Grad = sympy.zeros(self.num_state, self.num_param)
for i in range(self.num_state):
# need to adjust such that the first index is not
# included because it correspond to time
for j, p in enumerate(self._iterParamList()):
eqn, isDifficult = simplifyEquation(diff(ode[i], p, 1))
self._Grad[i,j] = eqn
self._isDifficult = self._isDifficult or isDifficult
if self._isDifficult:
self._GradCompile = self._SC.compileExprAndFormat(self._sp,
self._Grad,
modules='mpmath',
outType="mat")
else:
self._GradCompile = self._SC.compileExprAndFormat(self._sp,
self._Grad,
outType="mat")
self._hasNewTransition.reset('grad')
return self._Grad