数值计算(六十八)Jacobi迭代法求线性方程组
2 年前
· 来自专栏
Chenglin Li's Codes
1 算法原理
雅克比(Jacobi)迭代法求解线性方程组_Reborn Lee-CSDN博客_雅可比迭代法
2 Note
- 迭代法常用于求解大型稀疏矩阵,比如PDE离散之后的线性方程组;
- 适用于三对角方程组;
3 相关程序
function X = Jacobi( )
%UNTITLED2 此处显示有关此函数的摘要
% 此处显示详细说明
function X = Jacobi( A, B, X0, delta, Num )
程序功能:
1、Jacobi迭代法求线性方程组
2、AX=B, X0初值, delta误差范围,Num迭代最高次数
date:2020.12.18
order=10; %三对角矩阵阶数
delta=1e-6 ;
Num=50;
X0=zeros(order,1);
A=zeros(order, order) ;
B=zeros(order,1);
for k=1:order %生成矩阵A
if(k~=1)
A(k-1,k)=-1;
if(k~=order)
A(k+1,k)=-1;
A(k,k)=3;
for k=1:order %生成矩阵B
if(k==1 || k==order)
B(k)=2;
B(k)=1;
N=length(B);
X=zeros(N,1) ;
for k=1:Num
for j=1:N
t1=A(j, [1:j-1, j+1:N]) ;
t2=X0( [1:j-1, j+1:N]) ;
X(j)=( B(j)-t1*t2)/ A(j, j);
err=abs(norm(X'-X0)) ;
relerr=err/(norm(X)+eps) ;
X0=X ;
if( (err < delta) | (relerr<delta) )
break;