代码

(*定义有效数字函数*)
EffectiveDigits[a_,b_]:=Module[{m,n,scientificA,base,exponent},

(*将a转换为科学记数法形式 0.xyz...×10^m*)
scientificA=MantissaExponent[RealAbs[a]];
base=scientificA[[1]];
exponent=scientificA[[2]];
m=exponent;

(*找到满足不等式的最大的n*)
n=Max[0,Floor[m-Log10[2 Abs[a-b]]]];

(*返回有效数字位数*)
n
];

GaussN[n_]:=(n^3+3n^2-n)/3;

PrincipalMinors[M_]:=Module[{n=Length[M],minors},minors=Table[Det[M[[1;;k,1;;k]]],{k,1,n}];minors];

LUDe[matrix_]:=Module[{lu,perm,l,u,n},{lu,perm}=LUDecomposition[matrix][[1;;2]];(*获取LU分解的LU矩阵和轴向量*)
n=Length[lu];(*矩阵的大小*)
l=LowerTriangularize[lu,-1]+IdentityMatrix[n];(*获取L矩阵：LU矩阵的下三角部分加上单位矩阵的对角线*)
u=UpperTriangularize[lu];(*获取U矩阵：LU矩阵的上三角部分*)
Map[MatrixForm,{l,u}](*返回包含L和U的列表*)];

ChDe[A_]:=Transpose[CholeskyDecomposition[A]]//MatrixForm;

PrincipalMinors[M_]:=Module[{n=Length[M],minors},minors=Table[Det[M[[1;;k,1;;k]]],{k,1,n}];minors];(*返回M的各阶顺序主子式*)

(*适用于三对角矩阵的Crout分解*)
CroutDe[matrix_]:=Module[{n=Length[matrix],l,u},l=LowerTriangularize[matrix];
u=UpperTriangularize[IdentityMatrix[n]];(*单位上三角矩阵*)
(*填充 L 和 U 的元素*)Do[{l[[i,i]]=matrix[[i,i]]-Sum[l[[i,k]]u[[k,i]],{k,1,i-1}],If[i<n,u[[i,i+1]]=matrix[[i,i+1]]/l[[i,i]];
l[[i+1,i]]=matrix[[i+1,i]]-Sum[l[[i+1,k]] u[[k,i]],{k,1,i-1}]]},{i,1,n}];
MatrixForm/@{l,u}];

(*适用于一般矩阵的Crout分解*)
CroutDeCo[matrix_]:=Module[{n=Length[matrix],l,u,sum},l=ConstantArray[0,{n,n}];
u=IdentityMatrix[n];(*单位上三角矩阵*)Do[(*计算 l 的第 i 行和 u 的第 i 列*)Do[(*计算 l 的元素*)sum=Sum[l[[i,k]] u[[k,j]],{k,1,Min[i,j]-1}];
If[i>=j,l[[i,j]]=matrix[[i,j]]-sum],{j,1,n}];
Do[(*计算 u 的元素，只计算非对角线元素，对角线元素已设为1*)If[j>i,sum=Sum[l[[i,k]] u[[k,j]],{k,1,i-1}];
u[[i,j]]=(matrix[[i,j]]-sum)/l[[i,i]]],{j,1,n}],{i,1,n}];
MatrixForm/@{l,u}];

PBJ[A_]:=Max[Abs[Eigenvalues[A]]](*谱半径*);

Cond[A_,p_]:=Module[{normA,normInvA},normA=Norm[A,p];(*计算矩阵A的p范数*)
normInvA=Norm[Inverse[A],p];(*计算矩阵A逆的p范数*)
normA*normInvA (*返回条件数*)];

Jacobi[A_]:=Module[{DD,L,U,n},n=Length[A];(*获取矩阵的大小*)
DD=DiagonalMatrix[Diagonal[A]];(*构造对角矩阵 DD*)
L=-LowerTriangularize[A,-1];(*获取下三角部分，并取负数，对角线及以上元素为0*)
U=-UpperTriangularize[A,1];(*获取上三角部分，并取负数，对角线及以下元素为0*)
Inverse[DD].(L+U)//MatrixForm (*计算迭代矩阵并返回*)];

GS[A_]:=Module[{DD,L,U,n},n=Length[A];(*获取矩阵的大小*)
DD=DiagonalMatrix[Diagonal[A]];(*构造对角矩阵 DD*)
L=-LowerTriangularize[A,-1];(*获取下三角部分，并取负数，对角线及以上元素为0*)
U=-UpperTriangularize[A,1];(*获取上三角部分，并取负数，对角线及以下元素为0*)
Inverse[DD-L].U//MatrixForm(*计算迭代矩阵并返回*)];

IsStrictlyDiagonallyDominant[matrix_]:=Module[{n=Length[matrix],rowSum,diagElem},And@@Table[diagElem=Abs[matrix[[i,i]]];
rowSum=Total[Abs[matrix[[i]]]]-diagElem;
diagElem>rowSum,{i,1,n}]];

SOR[M_,w_]:=Module[{DD,L,U,n},n=Length[M];(*获取矩阵的大小*)
DD=DiagonalMatrix[Diagonal[M]];(*构造对角矩阵 DD*)
L=-LowerTriangularize[M,-1];(*获取下三角部分，并取负数，对角线及以上元素为0*)
U=-UpperTriangularize[M,1];(*获取上三角部分，并取负数，对角线及以下元素为0*)
Inverse[DD-w L].((1-w) DD+w U)//MatrixForm (*计算SOR迭代矩阵并返回*)];

函数文档

求用近似值a来近似精确值b的有效数字位数：EffectiveDigits[a,b]
统计顺序Gauss消去法的乘除法计算次数：GaussN[n]，n为线性方程组的未知数个数
LU分解：LUDe[M]，返回{L,U}，L为单位下三角矩阵，U为上三角矩阵
Cholesky分解：ChDe[M]，接收一个矩阵M，把M分解为一个下三角矩阵G和其转置(G^T)的乘积，即M=(GG^T)，返回G
判定是否为正定矩阵：PositiveDefiniteMatrixQ[A]
求各阶顺序主子式：PrincipalMinors[A]
三对角矩阵的Crout分解（效率更快，只能用于三对角矩阵）：CroutDe[A]，返回一个下三角矩阵和一个单位上三角矩阵
普通矩阵的Crout分解：CroutDeCo[A]，返回一个下三角矩阵和一个单位上三角矩阵
向量或矩阵的范数：Norm[A,p]，p可以为1,2,Infinity,"Frobenius"（F-范数）
求矩阵的谱半径：PBJ[A]
求矩阵的p条件数：Cond[A,p]
求Jacobi迭代法的迭代矩阵：Jacobi[A]
求GS迭代法的迭代矩阵：GS[A]
判定矩阵是否严格对角占优：IsStrictlyDiagonallyDominant[A]
求SOR方法的迭代矩阵：SOR[A,w]，w为松弛因子
QR分解：QRDecomposition[M]，返回一个正交矩阵和一个上三角矩阵

请先计算笔记本，然后在下面的代码区域使用上述函数：

MatrixForm/@QRDecomposition[{{1,3,2},{3,7,5},{4,3,6}}]