(一)向量范数
1.1 定义 范数的定义如下: 1.2 matlab函数实现 通过自定义Vector_norm(a,p)函数实现对向量a的1范数、2范数、p范数和inf范数的计算,具体代码如下:
function X=Vector_norm(a,p) %%%输入向量a和所求的向量的范数类型(包括1范数,2范数,p范数,inf范数); %%%输出向量a的范数值; n=length(a); X=0; Test=0; switch p case 1 for i=1:n X=X+abs(a(i)); %%向量分量取绝对值,再求和; end case 2 for i=1:n X=X+(abs(a(i)))^2; %%向量分量取绝对值,再求和; end X=sqrt(X); case inf a=abs(a); X=max(a); case p for i=1:n X=X+(abs(a(i)))^p; %%向量分量取绝对值,再求和; end X=X^(1/p); end1.3 函数的调用 在命令行中输入向量a和范数类型p,然后调用Vector_norm(a,p)函数,具体调用如下图中案例所示:
(二)矩阵的范数
2.1 定义 矩阵的范数定义如下: 2.2 matlab函数实现 通过自定义matrix_norm(A,p)函数实现对向量a的1范数、2范数、inf范数和Frobenius范数的计算,具体代码如下:
function X=matrix_norm(A,p) %%% a=abs(A); switch p case 1 X=max(sum(a,1)); %%计算矩阵1范数; case 2 [~,D]=eig(A'*A); %%计算特征向量、特征值; D=diag(D); %%提取特征值; X=sqrt(max(D)); %%计算矩阵2范数; case inf X=max(sum(a,2)); %%计算矩阵inf范数; case 'fro' A_=A.^2; %%“.”运算,矩阵元素求平方; X=sqrt(sum(A_(:))); %%计算矩阵Frobenius范数; end2.3 函数的调用 在命令行中输入矩阵A和范数类型p,然后调用matrix_norm(a,p)函数,具体调用如下图中案例所示: (三)上三角回代法求线性方程组的解
3.1 上三角回代法算法 3.2 matlab函数实现
function X=a_Back_subtitution(A,B) %%%此函数用于通过回代法,计算方程组的解; %%%输入上三角矩阵(或对角阵)A和右端常数项B(按列输入); %%%输出方程组的解X。 [n,~]=size(A); X=zeros(n,1); for i=n:-1:1 S=A(i,i+1:n)*X(i+1:n); X(i,1)=1/A(i,i)*(B(i)-S); end3.3函数调用 具体调用如下图案例所示:
(四)下三角回代法求线性方程组的解
4.1 算法思想 和上三角的回代法类似,并且计算过程是按顺序回代,即依次计算X1,X2,X3,…,Xn,相比较而言更加容易思考清楚。(所以小编建议可以先弄清楚下三角的回代法,对于上三角的回代法掌握有所帮助)
4.2 matlab函数实现
function X=b_Back_subtitution(A,B) %%%此函数用于通过回代法,计算方程组的解; %%%输入下三角矩阵(或对角阵)A和右端常数项B(按列输入); %%%输出方程组的解。 [n,~]=size(A); X=zeros(n,1); for i=1:1:n S=A(i,1:n-1)*X(1:n-1); X(i,1)=1/A(i,i)*(B(i)-S); end4.3 函数的调用 具体调用如下图案例所示:
注:1、关于上述自定义函数均可以与matlab自带函数或matlab中正确的计算结果进行比较,从而建议函数的正确性。 小编就线性方程组求解的函数(即三角回代法)给出一种检验方法:
Y=A\B; %正确的计算结果; error=Y-X; %其中X表示用自定义函数计算出来的方程的解(列向量); Test=norm(error,2) %用matlab自带的norm()函数,计算error的2范数, ...如果该范数为0或者接近0即表示函数正确。2、关于矩阵分析相关算法小编将会持续更新,希望感兴趣的小伙伴给个点个赞,在默默的点亮关注~~ 最后,对一直默默关注小编的小伙伴说一声感谢,你们的关注就是小编走下去的动力,谢谢
