sympy版本:1.2
假设求解矩阵方程
AX=A+2X
其中
求解之前对矩阵方程化简为
(A−2E)X=A
令
B=(A−2E)
使用qtconsole输入下面程序进行求解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
In [ 26 ]: from sympy import *
In [ 27 ]: from sympy.abc import *
In [ 28 ]: A = Matrix([[ 4 , 2 , 3 ],[ 1 , 1 , 0 ],[ - 1 , 2 , 3 ]])
In [ 29 ]: A
Out[ 29 ]:
Matrix([
[ 4 , 2 , 3 ],
[ 1 , 1 , 0 ],
[ - 1 , 2 , 3 ]])
In [ 30 ]: B = A - 2 * diag( 1 , 1 , 1 )
In [ 31 ]: B
Out[ 31 ]:
Matrix([
[ 2 , 2 , 3 ],
[ 1 , - 1 , 0 ],
[ - 1 , 2 , 1 ]])
In [ 32 ]: B.inv() * A
Out[ 32 ]:
Matrix([
[ 3 , - 8 , - 6 ],
[ 2 , - 9 , - 6 ],
[ - 2 , 12 , 9 ]])
|
将结果验证一下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
In [ 38 ]: X = B.inv() * A
In [ 39 ]: X
Out[ 39 ]:
Matrix([
[ 3 , - 8 , - 6 ],
[ 2 , - 9 , - 6 ],
[ - 2 , 12 , 9 ]])
In [ 40 ]: A * X - A - 2 * X
Out[ 40 ]:
Matrix([
[ 0 , 0 , 0 ],
[ 0 , 0 , 0 ],
[ 0 , 0 , 0 ]])
|
求解矩阵方程过程中注意的问题是左乘还是右乘问题,在此例中是B.inv()*A ,如果矩阵方程变为
XA=A+2X
那么求解结果为:
1
2
3
4
5
6
7
8
|
In [ 35 ]: X = A * B.inv()
In [ 36 ]: X
Out[ 36 ]:
Matrix([
[ 3 , - 8 , - 6 ],
[ 2 , - 9 , - 6 ],
[ - 2 , 12 , 9 ]])
|
将结果验证一下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
X = A * B.inv()
X
Out[ 36 ]:
Matrix([
[ 3 , - 8 , - 6 ],
[ 2 , - 9 , - 6 ],
[ - 2 , 12 , 9 ]])
X * A - A - 2 * X
Out[ 37 ]:
Matrix([
[ 0 , 0 , 0 ],
[ 0 , 0 , 0 ],
[ 0 , 0 , 0 ]])
|
以上这篇python/sympy求解矩阵方程的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/ouening/article/details/82711761