用Jacobi迭代、Gauss-Seidel迭代解方程组 [matlab]

1 算法组织

1.1 Jacobi迭代算法组织

        本算法用Jacobi迭代求方程组的解,Jacobi (A, b, m, Nmax, ε, ,x),初始向量必须给于中,结果在x中。

其具体算法如下:

1.2 Gauss-Seidel迭代法的算法组织

        本算法用Gauss -Seidel迭代解方程组,GS(A, b, n, Nmax, ε, x),要求给出的初始向量放于x中,结果也放于x中。

其具体算法如下:

2 源程序

2.1 用Jacobi迭代解方程组

%start_jacobi
	a = [ 28   -3     0     0    0;
		-3    38   -10    0    -5;
		 0   -10    25   -15   0;
		 0    0    -15    45   0;
		 0   -5      0    0   30];
	b = [ 10;
		  0;
		  0;
		  0;
		  0];
	
	n = 5;
	x = zeros(1,n);
	
	e = 0.001;
	N_max = 100;
		for count = 1 : N_max
		    m = x;
			for i = 1 : n
				x(i) = (  b(i) - (m*a(i,:)' - m(i)*a(i,i))  )/a(i,i);
			end
		 m = m-x;
		e1 = max(abs(m));
		if e1-e < 0
			break;
		end
	end
	if 100 == count
		disp('不收敛');
	else
		disp('由jacobi迭代计算可得线性方程组的解为:')
		x = x'
	end
	disp('jacobi迭代次数是:')
	count
%end_jacobi

2.2 用Gauss-Seidel迭代解方程组

%start_Gauss
	a = [ 28   -3     0     0    0;
		-3    38   -10    0    -5;
		 0   -10    25   -15   0;
		 0    0    -15    45   0;
		 0   -5      0    0   30];
b = [ 10;
		  0;
		  0;
		  0;
		  0];
	n = 5;
	x = zeros(1,n);
	N_max = 100;
	e     = 0.001;
	for count = 1: N_max
		m = x;
		for i = 1: n
			x(i)=(  b(i)-(x*a(i,:)'-x(i)*a(i,i))  )/a(i,i);
		end
		m  = m - x;
		e1 = max(abs(m));
		if e1<e
			break;
		end
	end
	if 	100 == count
		disp('不收敛');
	else
		disp('由Gauss迭代计算可得线性方程组的解为:')
		x = x'
	end
	disp('Gauss迭代次数是:')
	count
%end_Gauss

3. 运算结果

3.1 用Jacobi迭代解方程组

输入:

a=[28 -3 0 0 0;-3 38 -10 0 -5;0 -10 25 -15 0;0 0 -15 45 0;0 -5 0 0 30];

b=[10;0;0;0;0];

运行结果:

3.2 用Gauss-Seidel迭代解方程组

输入:

a=[28 -3 0 0 0;  -3 38 -10 0 -5;  0 -10 25 -15 0; 0 0 -15 45 0;0 -5 0 0 30];

b=[10;0;0;0;0];

运行结果:

1.4 算法分析

        如图,经过对工作区的监视分析,求解此方程组Jacobi迭代了8次,而Gauss-Seidel迭代了4次;结果均符合精度要求,得到预期结果。

​​​​​​Jacobi迭代

Gauss-Seidel迭代

定性比较:

  • 3
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值