东南大学工程矩阵P110例4验证(python)
原题如下:
代码如下:
import numpy as np
A=np.mat([[0,0,1,-1,0],
[4,0,3,-2,-1],
[2,1,1,-1,-1],
[3,1,3,-3,-1],
[8,2,7,-5,-3]])
I=np.diag([1,1,1,1,1])
B=A+I
print("B=\n",B)
B2=B*B
print("B^2=\n",B2)
"""
#下面的P是教材给出的P,对应的五列是五个列向量x1~x5:
P=np.mat([[0,0,0,-1,0],
[1,1,0,-2,0],
[1,0,1,-1,0],
[1,0,1,-2,1],
[2,0,1,-5,0]])
"""
"""
注意,下面的x5、x2需要自己求出填入,这里是随机选的两个简单的样例
x2、x5需满足条件为:
B^2 * x2 = 0
B^2 * x5 !=0
且x2和x5线性无关
"""
x5=np.mat([0,0,0,1,0]).T
x4=B*x5
x3=B*x4
x2=np.mat([0,0,0,0,1]).T
x1=B*x2
P=np.hstack([x1,x2,x3,x4,x5])
print("P=\n",P)
#print(np.matmul(np.linalg.inv(P),P))
P1=np.linalg.inv(P)
print("P^-1=\n",P1)
J=P1*A*P
print("J=\n",J)
运行情况如下:
B=
[[ 1 0 1 -1 0]
[ 4 1 3 -2 -1]
[ 2 1 2 -1 -1]
[ 3 1 3 -2 -1]
[ 8 2 7 -5 -2]]
B^2=
[[ 0 0 0 0 0]
[ 0 0 0 0 0]
[-1 0 -1 1 0]
[-1 0 -1 1 0]
[-1 0 -1 1 0]]
P=
[[ 0 0 0 -1 0]
[-1 0 0 -2 0]
[-1 0 1 -1 0]
[-1 0 1 -2 1]
[-2 1 1 -5 0]]
P^-1=
[[ 2. -1. -0. -0. -0.]
[-2. -1. -1. -0. 1.]
[ 1. -1. 1. 0. 0.]
[-1. -0. -0. -0. -0.]
[-1. -0. -1. 1. -0.]]
J=
[[-1. 1. 0. 0. 0.]
[ 0. -1. 0. 0. 0.]
[ 0. 0. -1. 1. 0.]
[ 0. 0. 0. -1. 1.]
[ 0. 0. 0. 0. -1.]]
Process finished with exit code 0
该帖给出了教材上的习题的另一种结果输出,可以用此代码验证其他的结果,也可以用部分代码辅助求解其他题目。祝学习顺利!