【算法设计zxd】第3章迭代法03 线性代数方程

 
线性代数方程:

设线性代数方程组具有如下特征:

【算法设计zxd】第3章迭代法03 线性代数方程_第1张图片

  算法框架

  • (1)设置线性代数方程组的初值X=(x1,…,xn-1 ,xn);
  • (2)构造迭代方程xi=gi (X)   (i=1,…,n-1,n)精度求解方法
  • (3)达到迭代次数或精度结束迭代。

雅克比算法:

【算法设计zxd】第3章迭代法03 线性代数方程_第2张图片

k的意义:第k次运算(迭代)

没有利用前一次计算的结果。

就是移项。

 【算法设计zxd】第3章迭代法03 线性代数方程_第3张图片

 更快。

这个评价是在数值分析课程中。

ρ(B)是表示谱半径,也就是矩阵特征向量中的最大值。

是否收敛与谱半径有关:当谱半径<1,或任意一个特征范式<1,

【算法设计zxd】第3章迭代法03 线性代数方程_第4张图片

 

 

【算法设计zxd】第3章迭代法03 线性代数方程_第5张图片

 

 【例3-8】求下列解线性方程组的解

【算法设计zxd】第3章迭代法03 线性代数方程_第6张图片

  计算模型

 【算法设计zxd】第3章迭代法03 线性代数方程_第7张图片

 【算法设计zxd】第3章迭代法03 线性代数方程_第8张图片

算法设计与描述
输入:
输出:

Jacobi (x[],k)

{

        i <- k;

        while (i)        //用次数来算

        {

                x11 <- ( 20+3*x[2]-2*x[3])/8;

                x12 <- ( 33-4*x[1]-x[3])/11;

                x13 <- ( 36-6*x[1]-3*x[2])/12;

                x[1] <- x11; x[2] <- x12 ;x[3] <- x13 ;//算完再更新

                i <- i-1 ;

        }

        output(x[]);

}

时间复杂度分析

由于计算模型已列出,ρ(B)=0.3592,

R(B)=-lnρ(B)=1.02276,于是有

k≥(5ln10)/ 1.02276=11.2567,

则实际k可取12次可达到要求。

Gauss_Seidel (x[],k)

{

        i <- k;

        while ( i )

        {

                x[1] <- ( 20+3*x[2]-2*x[3])/8;        //直接更新

                x[2] <- ( 33-4*x[1]-x[3])/11;

                x[3] <- ( 36-6*x[1]-3*x[2])/12;

                i <- i-1 ;

        }

        output(x[]);

}

运行结果分析

Jacobi算法:

k=12,结果: 2.999988 2.000008 1.000014

k=16,结果: 3.000000 2.000000 1.000000

Gauss_Seidel 算法:

k=12, 结果: 3.000000 2.000000 1.000000

思考题:求下列解线性方程组的解

【算法设计zxd】第3章迭代法03 线性代数方程_第9张图片

【算法设计zxd】第3章迭代法03 线性代数方程_第10张图片

思考题(1)不收敛

思考题(2)

delta:0.00109925         u: -0.415718    v:-0.516958
x1:-0.932676     x2:(0.466338,0.0876765)         x3:(0.466338,-0.0876765)
k:133
jacobi:
x[1]:-4 x[2]:3  x[3]:2
Gauss_Seidel:
x[1]:-4 x[2]:3  x[3]:2

你可能感兴趣的:(算法zxd,算法,算法,p2p,蓝桥杯)