[英]SymPy `solve` fails to solve Matrix equation A*x = b when symbols are replaced by values with `subs`
我有想要解决的线性方程,因为Ax = b
。 我想一步一步地在符号中显示,最后插入数字并在数字中显示问题的解决方案。 插入数字时遇到问题。 如果先前计算的值是整数,则一切正常。 当我输入带小数的东西时会打印出来
[]
这是简化的代码来说明我的问题:
Force = 100 #If I try to put in value of lets say 100.23 the problem happens
x_t = 15
L = 20
A, x, b = sym.symbols('A, x, b')
A_x, A_y, B_y = sym.symbols('A_x, A_y, B_y')
b, F, xt, l = sym.symbols('b, F, xt, L')
A = sym.Matrix([[1, 0, 0],
[0, 1, 0],
[0, 0, 1]])
b = sym.Matrix([[0],
[F],
[F*xt/l]])
x = sym.Matrix([[A_x],
[A_y + B_y],
[B_y]])
linear_eq = sym.Eq(A * x, b)
solution = sym.solve(linear_eq, x) #This always works fine(only symbols)
solution = sym.solve(linear_eq.subs( {F: Force, xt: x_t, l: L }), x )
solution
嗯,我不确定为什么solve
根本不起作用。 但是你可以使用LUsolve
。 哪个适用于F: 100.23
:
from sympy import *
A, x, b = symbols("A, x, b")
A_x, A_y, B_y = symbols("A_x, A_y, B_y")
b, F, x_t, L = symbols("b, F, x_t, L")
A = Matrix([
[1, 0, 0],
[0, 1, 0],
[0, 0, 1]
])
x = Matrix([
[A_x],
[A_y + B_y],
[B_y]
])
b = Matrix([
[0],
[F],
[F * x_t / L]
])
solution = A.LUsolve(b.subs({
F: 100.23,
x_t: 15,
L:20
}))
print(solution)
哪个印刷品:
Matrix([[0], [100.230000000000], [75.1725000000000]])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.