from sympy.matrices import *
from sympy import symbols
一.向量的内积,长度和正交性
1.向量的内积
a1,a2,a3=symbols('a1,a2,a3')
b1,b2,b3=symbols('b1,b2,b3')
a=Matrix([a1,a2,a3])
b=Matrix([b1,b2,b3])
a.dot(b)
2.向量的长度(模)
a.norm()
3.向量的夹角
a1,a2,a3=symbols('a1,a2,a3')
b1,b2,b3=symbols('b1,b2,b3')
a=Matrix([a1,a2,a3])
b=Matrix([b1,b2,b3])
ab_=a.dot(b)
a_=a.norm()
b_=b.norm()
cosab=ab_/(a_*b_)
cosab
4.向量正交
a1,a2,a3=symbols('a1,a2,a3')
b1,b2,b3=symbols('b1,b2,b3')
a=Matrix([a1,a2,a3])
b=Matrix([b1,b2,b3])
a.cross(b) #返回与a,b向量都相交的向量
5.向量的单位化(单位向量)
a1,a2,a3=symbols('a1,a2,a3')
b1,b2,b3=symbols('b1,b2,b3')
a=Matrix([a1,a2,a3])
b=Matrix([b1,b2,b3])
a.normalized() #向量除以模
6.投影向量
a1,a2,a3=symbols('a1,a2,a3')
b1,b2,b3=symbols('b1,b2,b3')
a=Matrix([a1,a2,a3])
b=Matrix([b1,b2,b3])
a.project(b) #向量a在b中的投影向量
7.正交矩阵
若矩阵A的 逆矩阵等于其转置矩阵A.inv=A.T 或者A*A.T=E,则称A为正交矩阵.
a1,a2,a3=symbols('a1,a2,a3')
b1,b2,b3=symbols('b1,b2,b3')
c1,c2,c3=symbols('c1,c2,c3')
I=[Matrix([1,2,-1]),Matrix([-1,3,1]),Matrix([4,1,0])]
O=GramSchmidt(I,True)
O
二.方阵的特征值和特征向量
1.特征值
A=Matrix([[1,0,2],[0,3,0],[2,0,1]])
A.eigenvals()
2.特征向量
A=Matrix([[1,0,2],[0,3,0],[2,0,1]])
A.eigenvects()
三.相似矩阵
1.矩阵相似对角化
A=Matrix([[1,0,2],[0,3,0],[2,0,1]])
A.jordan_form() #返回两个矩阵: P对角化矩阵和对角矩阵A_
或者A.diagonalize()
2.矩阵的LU分解
A=Matrix([[1,3,4,6],[3,5,7,8],[9,2,1,6],[3,4,5,7]])
A.LUdecomposition() #返回下三角和上三角矩阵