雅克比迭代法
雅克比迭代方法的使用
一.雅克比迭代法的目的及意义
无论差值公式与求积公式的建立,还是常微分方程的差分格式的构造,其基本思想是将其转化为代数问题来处理,特别是归结为线性方程组。在科学计算与工程计算中,线性方程组会经常遇到。因此,线性方程组的解法在数值分析中占有极其重要的地位。而线性方程组的迭代法,其基本思想是将联立方程组的求解,归结为重复计算一组彼此独立的线性表达式,这就是问题得到了简化。
二.算法描述
1. 输入数据。
2. 对所计算的一系列X 进行赋初值,即x(1)=x(2)=x(36)=0.
y (i ) =(b (i ) -∑a (i , j ) *x (j ) ) /a (i , i )
3. 通过雅克比迭代公式i =1i ≠j n 计算y(1),y(2),y(3).
4. 判断(x(i)-y(i))的绝对值中最大值是否小于精度系数,若小于的话,直接输出结果;否侧,返回上述3过程,直到(x(i)-y(i))的绝对值中最大值小于精度系数。
流程图如下所示:
三.程序设计
program main
implicit none
integer::i,j,k,l=30 ,m=3, n=3
real::e=0.0001
real::y(3),x(3)=(/0,0,0/)
real::b(3)=(/7.2,8.3,4.2/)
real::a(3,3)=(/10,-1,-1,-1,10,-1,-2,-2,5/)
do k=0,l
write(*,*) k,x(1),x(2),x(3)
do i=1,n
do j=1,m
if((i-j)/=0) then
y(i)=y(i)+(-a(i,j)/a(i,i))*x(j)
end if
end do
y(i)=y(i)+b(i)/a(i,i)
end do
if (max(abs(y(1)-x(1)),abs(y(2)-x(2)),abs(y(3)-x(3)))
y=(/0,0,0/)
end do
End
K x(1) x(2) x(3)
0 0.0000000E+00 0.0000000E+00 0.0000000E+00
1 0.7200000 0.8300000 0.8400000
2 0.9710000 1.070000 1.150000
3 1.057000 1.157100 1.248200
4 1.085350 1.185340 1.282820
5 1.095098 1.195099 1.294138
6 1.098338 1.198337 1.298039
7 1.099442 1.199442 1.299335
8 1.099811 1.199811 1.299777
9 1.099936 1.199937 1.299924
press any key to continue
四,结果及误差分析
真实值为:x(1)=1.1,x(2)=1.2,x(3)=1.3
绝对误差:∣x(1)-x(1)*∣=∣1.099936-1.1∣=0.000064
∣x(2)-x(2)*∣=∣1.199937-1.2∣=0.000063
∣x(3)-x(3)*∣=∣ 1.299924-1.3∣=0.000076
收敛性:由于上述方程组的系数矩阵对角占优,因此其迭代过程收敛。 算法评价:优点:算法简单,编制程序比较容易。
缺点:他要求的系数矩阵具有某种特殊性质,以保证迭代过程的收敛性。