雅可比迭代求线性方程组

雅可比迭代求线性方程组

概念原理

在这里插入图片描述
在这里插入图片描述

matlab实现

function [x,n] = jacobi(A,b,x0,eps,it_max)
%  求线性方程组的Jacobi迭代法,调用格式为 
%  [x, k] = jacobi(A,b,x0,eps,it_max)
%  其中, A 为线性方程组的系数矩阵,b 为常数项,eps 为精度要求,默认为1e-6,
%  it_max 为最大迭代次数,默认为200
%  x 为线性方程组的解,k迭代次数
if nargin ==3
    eps = 1.0e-6;
    M = 200;%此处为默认值
elseif nargin<3
    disp('输入参数数目不足3个');
    return
elseif nargin ==5
    M = it_max;
end
D = diag(diag(A));%求A的对角矩阵
L = -tril(A,-1);%求A的下三角矩阵
U = -triu(A,1);%求A的上三角矩阵
B = D\(L+U);%雅可比迭代阵
f = D\b;
x = B*x0+f;
n = 1;%迭代次数
while norm(x-x0)>=eps
    x0 = x;
    x = B*x0+f;%迭代格式
    n = n+1;
    if(n>=M)
        disp('Warning:迭代次数太多,可能不收敛!')
        return;
    end
end

nargin函数

代码中用到的nargin函数是matlab中可以返回输入变量个数的函数。nargin通过调用当前正在执行的函数返回输入参数的数量,只在函数体内使用nargin语法功能。nargin(fx)在函数fx的定义声明中返回输入参数的个数。如果函数包括varargin其定义,那么nargin返回的输入个数为负。例如函数foo输入有 a,b,和varargin三个参数,那么nargin('foo”)返回值为-3。

例一
有如下M文件:

function c = test(a,b)
    switch nargin
        case 2
            c = a + b;
        case 1
            c = a + a;
        otherwise
            c = 0;
    end
end

实现结果为:
在这里插入图片描述
根据M文件我们可以很清楚的知道函数需要输入两个变量,我们利用nargin函数所获取的变量个数也相符。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论 1

打赏作者

与森先生

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值