方程组求解:雅可比矩阵迭代法求解线性方程组

先放源码,后续文字即公式解释稍后发布。

1.此为函数文件,之后主文件调用此文件。

function  sol = jacobi_iterative(A,b,x0,eps,maxiter)
    
    %%
    % 输入矩阵判断
    [m,n] = size(A); %matrix rows = m, matrix column = n
    if m ~= n
        error('系数矩阵A必须是方阵,否则不能用雅可比迭代求解!')
    elseif m ~= length(b) % 行数不等于b矩阵的长度
        error('系数矩阵的维度与右端向量的维度不一致')
    end

    %%
    %判断迭代矩阵是否收敛
    if det(A) ~= 0  % 判断矩阵行列式不等于0,即矩阵invertible,non-singular
        %获得系数矩阵的对角线向量
        D = diag(A); % 此为向量
        if all(D) ~= 0 % 系数矩阵对角线元素都不为零
            % 核心代码,判断雅可比矩阵
            J = inv(diag(D)) * (A - diag(D));  %迭代矩阵,我觉得有问题,
            lamda = max(abs(eig(J))); % 求lamda,即为谱半径,特征值的绝对值最大的一个
            
            if lamda  >= 1
                disp(['谱半径=',num2str(lamda)]);
                error('雅可比矩阵收敛')
            end

  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值