《数值分析》课程matlab源码Ⅰ——向量范数,矩阵范数,上、下三角回代法

《数值分析》课程matlab源码

(一)向量范数

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);
end

1.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范数;
end

2.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);
end

3.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);
end

4.3 函数的调用
具体调用如下图案例所示:

在这里插入图片描述

注:1、关于上述自定义函数均可以与matlab自带函数或matlab中正确的计算结果进行比较,从而建议函数的正确性。
小编就线性方程组求解的函数(即三角回代法)给出一种检验方法:

Y=A\B;                %正确的计算结果;
error=Y-X;            %其中X表示用自定义函数计算出来的方程的解(列向量);
Test=norm(error,2)    %用matlab自带的norm()函数,计算error的2范数,
                        ...如果该范数为0或者接近0即表示函数正确。

2、关于矩阵分析相关算法小编将会持续更新,希望感兴趣的小伙伴给个点个赞,在默默的点亮关注~~
最后,对一直默默关注小编的小伙伴说一声感谢,你们的关注就是小编走下去的动力,谢谢

  • 13
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

篱落~~成殇~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值