本文整理汇总了Python中sympy.Matrix.eye方法的典型用法代码示例。如果您正苦于以下问题:Python Matrix.eye方法的具体用法?Python Matrix.eye怎么用?Python Matrix.eye使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sympy.Matrix
的用法示例。
在下文中一共展示了Matrix.eye方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_TensorProduct_shape
# 需要导入模块: from sympy import Matrix [as 别名]
# 或者: from sympy.Matrix import eye [as 别名]
def test_TensorProduct_shape():
expr = TensorProduct(3, 4, evaluate=False)
assert expr.shape == ()
assert expr.rank() == 0
expr = TensorProduct([1, 2], [x, y], evaluate=False)
assert expr.shape == (2, 2)
assert expr.rank() == 2
expr = TensorProduct(expr, expr, evaluate=False)
assert expr.shape == (2, 2, 2, 2)
assert expr.rank() == 4
expr = TensorProduct(Matrix.eye(2), [[0, -1], [1, 0]], evaluate=False)
assert expr.shape == (2, 2, 2, 2)
assert expr.rank() == 4
示例2: test_issue_2827_trigsimp_methods
# 需要导入模块: from sympy import Matrix [as 别名]
# 或者: from sympy.Matrix import eye [as 别名]
def test_issue_2827_trigsimp_methods():
measure1 = lambda expr: len(str(expr))
measure2 = lambda expr: -count_ops(expr)
# Return the most complicated result
expr = (x + 1)/(x + sin(x)**2 + cos(x)**2)
ans = Matrix([1])
M = Matrix([expr])
assert trigsimp(M, method='fu', measure=measure1) == ans
assert trigsimp(M, method='fu', measure=measure2) != ans
# all methods should work with Basic expressions even if they
# aren't Expr
M = Matrix.eye(1)
assert all(trigsimp(M, method=m) == M for m in
'fu matching groebner old'.split())
# watch for E in exptrigsimp, not only exp()
eq = 1/sqrt(E) + E
assert exptrigsimp(eq) == eq
示例3: test_TensorProduct_construction
# 需要导入模块: from sympy import Matrix [as 别名]
# 或者: from sympy.Matrix import eye [as 别名]
def test_TensorProduct_construction():
assert TensorProduct(3, 4) == 12
assert isinstance(TensorProduct(A, A), TensorProduct)
expr = TensorProduct(TensorProduct(x, y), z)
assert expr == x*y*z
expr = TensorProduct(TensorProduct(A, B), C)
assert expr == TensorProduct(A, B, C)
expr = TensorProduct(Matrix.eye(2), [[0, -1], [1, 0]])
assert expr == Array([
[
[[0, -1], [1, 0]],
[[0, 0], [0, 0]]
],
[
[[0, 0], [0, 0]],
[[0, -1], [1, 0]]
]
])
示例4: potential_energy
# 需要导入模块: from sympy import Matrix [as 别名]
# 或者: from sympy.Matrix import eye [as 别名]
def potential_energy(Fr, q, u, kde_map, vc_map=None):
"""Returns a potential energy function using the method from Section 5.1
from Kane 1985.
'Fr' is a list of the generalized active forces for the system.
'q' is a list of generalized coordinates.
'u' is a list of the independent generalized speeds.
'kde_map' is a dictionary with q dots as keys and the equivalent
expressions in terms of q's and u's as values.
'vc_map' is a dictionay with the dependent u's as keys and the expression
in terms of independent u's as values.
"""
n = len(q)
p = len(u)
m = n - p
if vc_map is None:
A_kr = Matrix.zeros(m, p)
else:
A_kr, _ = vc_matrix(u, vc_map)
u_ = u + sorted(vc_map.keys(), cmp=lambda x, y: x.compare(y))
W_sr, _ = kde_matrix(u_, kde_map)
dV_dq = symbols('∂V/∂q1:{0}'.format(n + 1))
dV_eq = Matrix(Fr).T
for s in range(n):
dV_eq += dV_dq[s] * (W_sr[s, :p] + W_sr[s, p:]*A_kr[:, :p])
if vc_map is not None:
f_arg, non_arg = _f_variables(Fr, q, dV_eq, dV_dq)
f = map(lambda x: x(*f_arg),
symbols('f1:{0}'.format(m + 1)))
dV_eq = subs(dV_eq, dict(zip(dV_dq[-m:], f)))
dV_dq = dV_dq[:-m]
dV_dq_map = solve(dV_eq, dV_dq)
dV_dq_list = map(lambda x: dV_dq_map[x], dV_dq)
if vc_map is None:
#print('Checking ∂/∂qr(∂V/∂qs) = ∂/∂qs(∂V/∂qr) for all r, s '
# '= 1, ..., n.')
dV_eq = _equivalent_derivatives(dV_dq_list, q)
if dV_eq != [0] * (n*(n - 1)//2):
rs = [(r, s) for r in range(n) for s in range(r + 1, n)]
for (r, s), x in zip(rs, dV_eq):
if trigsimp(expand(x)) != 0:
print(('∂/∂q{0}(∂V/∂q{1}) != ∂/∂q{1}(∂V/∂q{0}). ' +
'V does NOT exist.').format(r + 1, s + 1))
print('∂/∂q{0}(∂V/∂q{1}) = {2}'.format(
r + 1, s + 1, dV_dq_list[r].diff(q[s])))
print('∂/∂q{1}(∂V/∂q{0}) = {2}'.format(
r + 1, s + 1, dV_dq_list[s].diff(q[r])))
return None
else:
dV_dq_list += f
# Unable to take diff of 'fm.diff(qs)', replace with dummy symbols.
dfdq = [Dummy('∂f{0}/∂q{1}'.format(i + 1, j + 1))
for i in range(len(f)) for j in range(n)]
dfdq_replace = lambda x: reduce(
lambda y, z: y.replace(z[0], z[1]) if z[0] != 0 else y,
zip([fm.diff(qs) for fm in f for qs in q], dfdq),
x)
dV_eq = map(dfdq_replace,
_equivalent_derivatives(dV_dq_list, q))
X = Matrix(dfdq)
Z = Matrix([map(lambda x: diff(dV_eqi, x), dfdq)
for dV_eqi in dV_eq])
if Z.rank() == n * (n - 1) / 2:
print('ρ == n(n - 1)/2')
print('V may exist but cannot be found by this procedure.')
return None
Y = expand(Z*X - Matrix(dV_eq))
ZI_rref, _ = Matrix.hstack(Z, Matrix.eye(Z.shape[0])).rref()
# E is the matrix of elementary row operations that gives rref(Z).
E = ZI_rref[:, Z.shape[1]:]
f_eq = (E * Y)[Z.rank():]
f_map = solve(f_eq, f)
if sorted(f_map.keys(), cmp=lambda x, y: x.compare(y)) != f:
print('Unable to solve for all f uniquely.')
return None
for k, v in f_map.iteritems():
for qi in non_arg:
if v.diff(qi) != 0:
print('{0} should not be a function of {1}'.format(k, qi))
return None
dV_dq_list = map(trigsimp, (subs(dV_dq_list, f_map)))
return function_from_partials(dV_dq_list, q)
示例5: T
# 需要导入模块: from sympy import Matrix [as 别名]
# 或者: from sympy.Matrix import eye [as 别名]
def T(a,n):
return Matrix(Matrix.eye(n).col_insert(n, Matrix(n, 1, lambda i,j: -a[i]**n)))