如何解决为什么 Sympy 不产生数字输出?
我正在使用 sympy 求解方程组 Ax=B
并找到矩阵 x
。 x
是 3 x 3 矩阵,A
和 B
是 3 x 4 矩阵。结果不是数字,而是符号形式。如何获得数字结果?
代码:
import sympy as sp
X = sp.Matrix([[1,2,3,4],[5,6,7,8],[1,1,1]])
x = sp.Matrix([[5,1]])
a,b,c,d,e,f,g,h = sp.symbols('a,h')
M = sp.Matrix([[a,c],[d,f],[g,h,1]])
eq = solve(x-M.multiply(X),(a,h))
print(eq)
输出:
{a: c/4,b: 1 - c/4,d: f/4 + 1,e: -f/4,g: 0,h: 0}
解决方法
solve
的输出似乎表明有无穷多个解,您可以使用 c
和 f
作为自由参数。要查看完整矩阵,并为 c
和 f
选择一些值,您可以使用:
M.subs(eq).subs({c:1,f:2}).evalf()
结果:
Matrix([
[0.25,0.75,1.0],[ 1.5,-0.5,2.0],[ 0,1.0]])
此处subs(eq)
填写解决方案。 subs({c:44,f:28})
为 c
和 f
填充一些值。 evalf()
创建一个数值结果;当表达式包含分数、平方根或其他没有求值的函数时,这是必需的。
对于更通用的方法,可以尝试用零替换所有未分配的符号:
Ms = M.subs(eq)
Ms.subs({fr:0 for fr in Ms.free_symbols}).evalf()
结果:
Matrix([
[0,1,0],[1,[0,1]])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。