解线性方程组的预条件Gauss_Seidel型迭代法
- 格式:pdf
- 大小:332.13 KB
- 文档页数:5
线性方程组的迭代解法(Jacobi迭代法Gauss-Seidel迭按照算法(Jacobi迭代法)编写Matlab程序(Jacobi.m) function [x, k, index]=Jacobi(A, b, ep, it_max)% 求解线性方程组的Jacobi迭代法,其中% A --- 方程组的系数矩阵% b --- 方程组的右端项% ep --- 精度要求。
省缺为1e-5% it_max --- 最大迭代次数,省缺为100% x --- 方程组的解% k --- 迭代次数% index --- index=1表示迭代收敛到指定要求;% index=0表示迭代失败if nargin <4 it_max=100; endif nargin <3 ep=1e-5; endn=length(A); k=0;x=zeros(n,1); y=zeros(n,1); index=1;while 1for i=1:ny(i)=b(i);for j=1:nif j~=iy(i)=y(i)-A(i,j)*x(j);endendif abs(A(i,i))<1e-10 | k==it_maxindex=0; return;endy(i)=y(i)/A(i,i);endif norm(y-x,inf)<epbreak;endx=y; k=k+1;end用Jacobi迭代法求方程组的解。
输入:A=[4 3 0;3 3 -1;0 -1 4];b=[24;30;-24];[x, k, index]=Jacobi(A, b, 1e-5, 100)输出:x =-2.999811.9987-3.0001k =100index =2. 熟悉Gauss-Seidel迭代法,并编写Matlab程序function[v,sN,vChain]=gaussSeidel(A,b,x0,errorBound,maxSp) %Gauss-Seidel迭代法求解线性方程组%A-系数矩阵 b-右端向量 x0-初始迭代点 errorBound-近似精度maxSp-最大迭代次数%v-近似解 sN-迭代次数 vChain-迭代过程的所有值step=0;error=inf;s=size(A);D=zeros(s(1));vChain=zeros(15,3);%最多能记录15次迭代次数k=1;fx0=x0;for i=1:s(1)D(i,i)=A(i,i);end;L=-tril(A,-1);U=-triu(A,1);while error>=errorBound & step<maxspx0=inv(D)*(L+U)*x0+inv(D)*b;vChain(k,:)=x0';k=k+1;error=norm(x0-fx0);fx0=x0;step=step+1;endv=x0;sN=step;用Gauss-Seidel迭代法求解上题的线性方程组,取。
G a u s s-S e i d e l迭代法-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN数值分析课程论文姓名:学号:Gauss-Seidel迭代法求解线性方程组摘要线性方程组的求解在许多的工程技术中是一个极为常见的问题,对于线性方程组的求解无论从理论上还是实践应用上都已经成熟.对于一般线性方程组的求解有Gauss消元法为基础的直接法,也有迭代法.其中Gauss-Seidel是一个重要的组成部分.鉴于此,本论文细致地研究了用Gauss-Seidel迭代法求解线性方程组.论文的第一部分先介绍了迭代法求解线性方程组的一般模式,并给出这种迭代法的收敛性条件,Gauss-Seidel迭代法求解线性方程组的基本原理.这一部分是Gauss-Seidel迭代法的理论基础.论文的第二部分给出了Gauss-Seidel迭代法的具体操作步骤,以伪代码的形式细致的描绘如何使用Gauss-Seidel迭代法的求解方程组.同时,为了验证算法的有效性,在这一部分,还引入一个简单的算例,用于MATLAB编程发现计算结果完全正确.论文的第三部分给出了关于Gauss-Seidel迭代法的MATLAB程序,用于计算线性方程组.关键词:Gauss-Seidel迭代法,基本原理,算例,MATLAB程序目录1 Gauss-Seidel迭代法的基本理论 (1)1.1线性方程组的迭代法求解 (1)1.2Gauss-Seidel迭代法的原理 (2)2.具体的算例和操作步骤 (3)2.1. Gauss-Seidel迭代法的伪代码 (3)2.2.具体的算例验证算法的有效性 (3)3.MATLAB程序 (4)参考文献 (6)Gauss-Seidel 迭代法求解线性方程组一. Gauss-Seidel 迭代法的基本理论1.1线性方程组的迭代法求解在考虑求解线性方程组Ax=b 时,其中A 为非奇异矩阵.尽管Guass 消元法通过有限次运算可以求解此问题,其对应的计算复杂度为3O(n ).但是对于工程技术中和某些偏微分方程过程中出现的大型稀疏型矩阵利用迭代法可以更快的收敛,找到解.另外一方面,由于迭代法占用的计算机内存少,且便于计算.这两方面的优势促成了迭代法求解线性方程组的研究.关于迭代法的收敛的几个判定条件 1(迭代法基本原理)设有方程组f Bx x +=,对于任意初始向量()0x 及任意f ,解此方程组的迭代法(即()()f Bx x k k +=+1)收敛的充要条件是()1<B ρ.2(迭代法收敛的充分条件)如果方程组f Bx x +=的迭代公式为()()f Bx x k k +=+1(()0x 为任意初始向量),且迭代矩阵的某一种范数1<=q B v ,则:︒1迭代法收敛;︒2()()()v k k vk x x q qx x 11-*--≤-;︒3()()()v kvk x x q q xx 011--≤-*.定理3 如果mn RA ⨯∈为严格对角占优阵或为不可约弱对角占优阵,则对于任意的()0x ,解方程组b Ax =的Jacobi 迭代法,Gauss-Seidel 迭代法均收敛.定理4如果A 为对称正定矩阵,且20<<ω,则解式b Ax =的SOR 方法收敛.1.2Gauss-Seidel 迭代法的原理由Jacobi方法迭代公式()()()()010k k xx B x f +⎧⎪⎨=+⎪⎩初始向量,可知,迭代的每一步计算过程,都是用()k x 的全部分量来计算()1+k x 的所有分量,显然在计算第i 个分量()1+k ix时,已经计算出的最新分量()11+k x ,()12+k x ,…,()11+-k i x 没有被利用.从直观上看,最新计算出的分量可能比旧的分量要好些.因此,对这些最新计算出来的第1+k 次近似()1+k x 的分量()1+k jx 加以利用,就得到所谓解方程组的Gauss-Seidel 迭代法(简称G-S 方法):()()()()()T=002010n x x x x ,,, (初始向量),()()()()n i k x a x a b a x i j n i j k j ij k j ij i iik i,,2,1;,2,1,0111111 ==⎪⎪⎭⎫ ⎝⎛--=∑∑-=+=++或写为()()()()()⎪⎩⎪⎨⎧⎪⎪⎭⎫ ⎝⎛--=∆==∆+=∑∑-==++.1,,,2,1;,2,1,01111i j ni j k j ij k iij i ii i i k i k i x a x a b a x n i k x x x上面第2个式子利用了最新计算出的分量()11+k x ,第i 个式子利用了计算出的最新分量()()1,,2,11-=+i j x k j .还可写成矩阵形式()()()()()()k k k k k Ux b x L D Ux Lx b Dx+=-++=+++111,,若设()1--L D 存在,则()()()()b L D Ux L D x k k 111--+-+-=, 于是Gauss-Seidel 迭代公式的矩阵形式为()()f Gx x k k +=+1,()6.2.8 其中 ()U L D G 1--=,()b L D f 1--=.由此可以看出,应用Gauss-Seidel 迭代法解式b Ax =,就是对方程组f Gx x +=应用迭代法.G 称为解式的Gauss-Seidel 迭代法的迭代矩阵.Gauss-Seidel 迭代法的一个明显优点是,在用计算机计算时,只需一组工作单元,以便存放近似解.由式可以看出,每迭代一步只需计算一次矩阵与向量的乘法.二.具体的算例和操作步骤2.1. Gauss-Seidel 迭代法的伪代码 1.输入问题的参数A,b 2.分解A 为D,L,U.3.计算迭代方程G ,f.4.开始迭代,随机设定一个初值.5.以迭代方程更新x 的值.6.如果到达迭代次数,则进入步骤7;否则,回到步骤5.7.输出x ,结束.2.2.具体的算例验证算法的有效性 求解如下的线性方程组1231231238-3+2=204+11-=336+3+12=36x x x x x x x x x ⎧⎪⎨⎪⎩ 这个方程的真实解为(3,2,1). 程序运行结果: 情况1:输入GS (A,b ) GS(A,b)xhis =0 0 0 2.5000 2.0909 1.2273 2.9773 2.0289 1.0041 3.0098 1.9968 0.9959 2.9998 1.9997 1.0002 2.9998 2.0001 1.0001 3.0000 2.0000 1.0000 3.0000 2.0000 1.0000 3.0000 2.0000 1.0000 3.0000 2.0000 1.0000 3.0000 2.0000 1.0000 ans = 3.0000 2.00001.00000.51.5解的迭代情况图一。
二维Gauss-Seidel迭代法是解线性方程组的一种常用方法,通过迭代求解,能够快速且精确地得到方程组的解。
在MATLAB中,可以使用简洁的代码实现二维Gauss-Seidel迭代法,下面我们将介绍该方法的原理以及在MATLAB中的具体实现。
一、Gauss-Seidel迭代法原理1. Gauss-Seidel迭代法是一种逐次逼近的方法,通过不断迭代更新方程组中的未知数,最终得到方程组的解。
其基本思想是利用已知的未知数值不断逼近更精确的解。
2. 对于线性方程组Ax=b,可以将其表示为x(k+1)=Tx(k)+c的形式,其中T为迭代矩阵,c为常量向量,x为未知数向量。
Gauss-Seidel 迭代法通过不断更新x(k)的值,逐步逼近方程组的解。
3. 迭代矩阵T和常量向量c的具体计算方式为:首先将系数矩阵A分解为下三角矩阵L、对角矩阵D和上三角矩阵U,然后得到T=-L*(D^-1)*U,c=L*(D^-1)*b。
4. 通过不断迭代更新x(k)的值,直到满足一定的精度要求或者迭代次数达到设定值,即可得到方程组的解。
二、MATLAB实现二维Gauss-Seidel迭代法在MATLAB中,可以很方便地实现二维Gauss-Seidel迭代法,以下是具体的实现代码:```matlabfunction [x, k] = gauss_seidel(A, b, x0, tol, max_iter)A为系数矩阵,b为常量向量,x0为初始解向量,tol为精度要求,max_iter为最大迭代次数返回x为方程组的解,k为实际迭代次数n = length(b);x = x0;k = 0;err = tol + 1;L = tril(A, -1); 下三角矩阵U = triu(A, 1); 上三角矩阵D = diag(diag(A)); 对角矩阵T = -L*(D\U);c = L*(D\b);while err > tol k < max_iterx_old = x;x = T*x + c;err = norm(x - x_old, inf);k = k + 1;endend```三、代码说明1. 函数gauss_seidel接受系数矩阵A、常量向量b、初始解向量x0、精度要求tol和最大迭代次数max_iter作为输入参数,返回方程组的解x和实际迭代次数k。
一. 问题描述用Gauss-Seidel 迭代法求解线性方程组由Jacobi 迭代法中,每一次的迭代只用到前一次的迭代值。
使用了两倍的存储空间,浪费了存储空间。
若每一次迭代充分利用当前最新的迭代值,即在计算第i 个分量)1(+k ix 时,用最新分量)1(1+k x ,⋅⋅⋅+)1(2k x )1(1-+k i x 代替旧分量)(1k x ,⋅⋅⋅)(2k x )(1-k i x ,可以起到节省存储空间的作用。
这样就得到所谓解方程组的Gauss-Seidel 迭代法。
二. 算法设计将A 分解成U D L A --=,则b x =A 等价于b x =--U)D (L 则Gauss-Seidel 迭代过程)()1()1(k k k Ux Lx b Dx ++=++故)()1()(k k Ux b x L D +=-+若设1)(--L D 存在,则b L D Ux L D x k k 1)(1)1()()(--+-+-=令b L D f U L D G 11)()(---=-=,则Gauss-Seidel 迭代公式的矩阵形式为f Gx x k k +=+)()1(其迭代格式为Tn x x x x )()0()0(2)0(1)0(,,,⋅⋅⋅= (初始向量),)(11111)()1()1(∑∑-=-+=++--=i j i i j k j ijk j ij i ii i ix ax a b a x)210i 210(n k ⋅⋅⋅=⋅⋅⋅=,,,;,,,或者⎪⎩⎪⎨⎧--=⋅⋅⋅=⋅⋅⋅==∆+=∑∑-=-+=+++)(1)210i 210(1111)()1()1()()1(i j i i j k j ij k j ij i ii i i i k i k i x a x a b a x n k k x x x ,,,;,,,三. 程序框图四. 结果显示TestBench利用Gauss-Seidel 迭代法求解下列方程组⎪⎩⎪⎨⎧=+-=++--=++3103220241225321321321x x x x x x x x x , 其中取→=1)0(x 。
【题目】:Gauss-Seidel迭代法及Matlab代码实例【内容】:1. Gauss-Seidel迭代法介绍Gauss-Seidel迭代法是一种用于解线性方程组的数值方法,基于逐次逼近的思想,通过不断迭代逼近线性方程组的解。
该方法通常用于求解大型稀疏线性方程组,其收敛速度相对较快。
2. 迭代公式推导假设有如下线性方程组:$$Ax=b$$其中A为系数矩阵,b为常数向量,x为未知向量。
Gauss-Seidel迭代法的迭代公式为:$$x^{(k+1)}=(D+L)^{-1}(b- Ux^{(k)})$$其中,D为A的对角矩阵,L为A的严格下三角矩阵,U为A的严格上三角矩阵,k为迭代次数。
3. Matlab代码实现下面给出Gauss-Seidel迭代法的Matlab代码实例:```matlabfunction [x, k] = gaussSeidel(A, b, x0, tol, maxIter)A: 系数矩阵b: 常数向量x0: 初始解向量tol: 容差maxIter: 最大迭代次数x: 解向量k: 迭代次数n = length(b);x = x0;k = 0;while k < maxIterx_old = x;for i = 1:nx(i) = (b(i) - A(i,1:i-1)*x(1:i-1) - A(i,i+1:n)*x_old(i+1:n)) / A(i,i); endif norm(x - x_old, inf) < tolreturnendk = k + 1;enddisp('迭代次数达到最大值,未达到容差要求'); end```4. 应用实例假设有如下线性方程组:$$\begin{cases}2x_1 - x_2 + x_3 = 5\\-x_1 + 2x_2 - x_3 = -2\\x_1 - x_2 + 2x_3 = 6\end{cases}$$系数矩阵A为:$$\begin{bmatrix}2 -1 1\\-1 2 -1\\1 -1 2\end{bmatrix}$$常数向量b为:$$\begin{bmatrix}5\\-2\\6\end{bmatrix}$$取初始解向量x0为:$$\begin{bmatrix}0\\0\\\end{bmatrix}$$容差tol为1e-6,最大迭代次数maxIter为100。
分别用 jacobi 迭代法和 gauss-seidel 迭代法,求解方程组【jacobi 迭代法和 gauss-seidel 迭代法分别应用于方程组的求解】1. 引言在数学领域中,方程组的求解一直是一个重要的课题。
为了解决复杂的线性方程组,人们提出了各种迭代方法,其中 jacobi 迭代法和gauss-seidel 迭代法是两种常见的方法。
本文将探讨这两种迭代方法在求解方程组中的应用。
2. jacobi 迭代法的原理和应用jacobi 迭代法是一种基于逐次逼近的迭代方法。
对于线性方程组AX=B,其中 A 是系数矩阵,X 是未知数向量,B 是已知向量。
我们可以通过以下公式进行逐次逼近:X(k+1) = D^(-1)*(B - (L+U)X(k))其中,D、L、U 分别是 A 的对角线、下三角和上三角矩阵。
jacobi 迭代法的优点在于易于理解和实现,但在收敛速度上较慢,需要进行多次迭代才能得到精确解。
在实际应用中,需要根据实际情况选择合适的迭代次数。
3. gauss-seidel 迭代法的原理和应用与 jacobi 迭代法类似,gauss-seidel 迭代法也是一种基于逐次逼近的迭代方法。
不同之处在于,gauss-seidel 迭代法在计算 X(k+1) 时利用了已经得到的 X(k) 的信息,即:X(k+1)_i = (B_i - Σ(A_ij*X(k+1)_j,j≠i))/A_ii这种方式使得 gauss-seidel 迭代法的收敛速度较快,通常比 jacobi 迭代法更快,尤其是对于对角占优的方程组。
4. 分别用 jacobi 迭代法和 gauss-seidel 迭代法求解方程组为了更具体地说明 jacobi 迭代法和 gauss-seidel 迭代法的应用,我们分别用这两种方法来求解以下方程组:2x1 + x2 = 9x1 + 3x2 = 11我们将该方程组写成矩阵形式 AX=B:|2 1| |x1| |9||1 3| * |x2| = |11|我们根据 jacobi 迭代法和 gauss-seidel 迭代法的原理,依次进行迭代计算,直到满足收敛条件。
Gauss-Seidel迭代法是解线性方程组的一种常用方法,它通过不断迭代更新解向量,逐步逼近方程组的精确解。
在实际应用中,我们往往需要判断迭代法是否收敛,以保证计算结果的准确性和可靠性。
本文将以matlab为例,介绍如何利用数值计算软件对Gauss-Seidel迭代法的收敛性进行判断,并对其进行详细分析和讨论。
一、Gauss-Seidel迭代法简介Gauss-Seidel迭代法是一种逐次迭代的线性代数方法,用于求解线性方程组Ax=b的解向量x。
它的迭代更新公式为:xn+1i=1/aii(bi-∑(j=1,j≠i)n aijxj)其中,i=1,2,...,n;n为方程组的阶数;aii为系数矩阵A的第i行第i 列元素;bi是方程组右端的常数;xj为解向量x的第j个分量;∑(j=1,j≠i)n aijxj为除去第i个分量的求和。
通过不断迭代更新解向量的各个分量,最终可以逼近线性方程组的解。
二、Gauss-Seidel迭代法的收敛性判断针对Gauss-Seidel迭代法的收敛性判断,我们可以利用数值计算软件matlab进行分析。
在matlab中,可以使用以下命令进行Gauss-Seidel迭代法的计算:function[x,k]=GaussSeidel(A,b,x0,tol,maxk)n=length(b);x=x0;for k=1:maxkx0=x;for i=1:nx(i)=1/A(i,i)*(b(i)-A(i,:)*x+x(i));endif norm(x-x0,inf)<tolreturn;endenderror('达到最大迭代次数,方法未收敛');end在上述matlab代码中,A为系数矩阵,b为右端常数向量,x0为初始解向量,tol为迭代精度,maxk为最大迭代次数。
在函数中,我们设定了最大迭代次数以及迭代精度的条件,当满足这些条件时,算法将停止迭代。
三、Gauss-Seidel迭代法的收敛性分析Gauss-Seidel迭代法的收敛性与系数矩阵A的性质有关。
Gauss-Seidel迭代法是一种用于解线性方程组的数值方法,特别适用于稀疏矩阵。
以下是一个使用Matlab实现Gauss-Seidel迭代法的简单示例代码:```matlabfunction [x, iteration] = gaussSeidel(A, b, tol, maxIter)% 输入参数:% A:系数矩阵% b:右侧常数向量% tol:迭代收敛容差% maxIter:最大迭代次数n = length(b);x = zeros(n, 1); % 初始化解向量iteration = 0;while iteration < maxIterx_new = x; % 存储前一次迭代的解for i = 1:n% 计算新的解x(i) = (b(i) - A(i,1:i-1)*x(1:i-1) - A(i,i+1:n)*x_new(i+1:n)) / A(i,i);end% 计算迭代误差error = norm(x - x_new, inf);if error < tolreturn;enditeration = iteration + 1;endwarning('Gauss-Seidel迭代未收敛到指定容差。
');end```使用这个函数时,您需要提供系数矩阵A、右侧常数向量b、迭代收敛容差tol和最大迭代次数maxIter作为输入参数。
函数将返回解向量x和迭代次数iteration。
示例用法:```matlabA = [4, -1, 0; -1, 4, -1; 0, -1, 3];b = [12; -1; 0];tol = 1e-6;maxIter = 1000;[x, iteration] = gaussSeidel(A, b, tol, maxIter);fprintf('解向量x = \n');disp(x);fprintf('迭代次数= %d\n', iteration);```这将求解线性方程组Ax = b,并返回解向量x以及迭代次数。
Gauss-Seidel 迭代法从Jacobi 迭代法的格式可以看出,后一步的迭代值仅仅与前一步有关,而且先算哪一个分量是无关紧要的。
新算出来的分量无法及时地用到下一个分量的计算之中,导致收敛的速度比较慢。
如果能将新计算出来的分量及时地更新到当前要计算的分量之中,应该可以加快收敛的速度。
这就引出了Gausss-Seidel 迭代法。
对Jacobi 迭代法进行修正,得到如下的Gauss-Seidel 迭代法:1(1)()11(1)i nk k i ij jijjj j i k i iib a xa xx a −+==++−−=∑∑,1,2,,i n =⋅⋅⋅同样地,Gauss-Seidel 迭代格式也有其相应的矩阵形式。
事实上,A D L U =++,于是,Ax b =等价于()D L x b Ux +=−。
于是,得到迭代格式(1)()()k k D L x b Ux ++=−也就是(1)1(1)1()1k k k x D Lx D Ux D b +−+−−=−−+, (1)1()1()()()k k k G x D L Ux D L b L x f +−−=−+++=+,其中,1()G L D L U −=−+,1()f D L b −=+。
Gsuss-Seidel 迭代法的Matlab 程序只需要在Jacobi 迭代地程序中做少量改动即可,这里不再写出。
例2.试用Gauss-Seidel 迭代法解线性方程组1231021321011512510x x x −−⎛⎞⎛⎞⎛⎞⎜⎟⎜⎟⎜⎟−−=⎜⎟⎜⎟⎜⎟⎜⎟⎜⎟⎜⎟−−⎝⎠⎝⎠⎝⎠【解答】 迭代格式为()()23(1)1(1)()(1)132(1)(1)(1)3123210152101025k k k k k k k k k x x x x x x x x x ++++++⎛⎞++⎜⎟⎜⎟⎛⎞⎜⎟++⎜⎟=⎜⎟⎜⎟⎜⎟⎜⎟⎝⎠++⎜⎟⎜⎟⎝⎠选(0)(0,0,0)T x =作为初值和610ε−=作为控制精度,选2-范数来衡量误差。
浅析Gauss-Seidel 迭代在方程迭代计算中的应用摘要:科学研究与生产实践中许多问题都可归结为方程组的求解,对于方程组的求解,主要有直接法求解和迭代法求解,我们通常用的迭代法有Jacobi,Gauss-Seidel 迭代法。
本文主要针对Gauss-Seidel 迭代法在三类方程组迭代计算中的应用进行研究。
一、Gauss-Seidel 迭代法在求解大型稀疏线性方程组中的应用。
Gauss-Seidel 迭代法充分利用矩阵的稀疏性去解大型稀疏线性代数方程组。
本文通过实际算例验证并分析了它的计算速度和效率。
二、Gauss-Seidel 迭代法在求解H-矩阵线性方程组中的应用。
本文针对系数矩阵 A 为H -矩阵, 为线性方程组 Ax =b 引入了两种形式的预处理矩阵 I +S 和 I +S , 给出了相应的预处理 Gauss-Seidel 方法。
三、异步并行非线性对称Gauss-Seidel 迭代法在求解特殊非线性方程组的应用。
利用非线性方程组的特殊结构,建立了一类并行非线性 Gauss-Siedel 型迭代算法。
关键词:Gauss-Seidel 迭代法,线性方程组,H -矩阵,非线性方程组科学研究与生产实践中许多问题都可归结为线性方程组的求解,高效求解线性方程组成为许多科学与工程计算的核心。
解线性方程组的传统方法是利用高斯消元法或矩阵的三角分解法等直接求解,虽然传统方法具有理论上直接得到真解的优点,但当系数矩阵条件数很大时,存在严重的稳定性问题。
同时,当系数矩阵的非零元结构不规则或带宽较大时,其计算量与存储量也十分地大。
与直接法相比,迭代法只需存储原系数矩阵,对应于预处理的几个辅助矩阵和少量的几个向量,且迭代法中除求解辅助线性方程组外,其余的计算主要是系数矩阵与向量的乘积,从而能充分利用系数矩阵的特性来减少计算量。
而且随着计算机技术的发展,计算机的存储量日益增大,计算速度也迅速提高,线性方程组的迭代求解在科学与工程计算中也起着越来越重要的作用。
一类新的预条件Gauss-Seidel迭代法摘要:本文给出了一个新的预条件因子P,证明了在非奇异M矩阵和严t格对角占优L矩阵下,该预条件不仅加快了Gauss—Seidel迭代法的收敛速度,而且说明了在该预条件下Gauss—Seidel迭代法的谱半径是单调下降的.最后再用相关的数值例子说明文中给出的预条件P要优于文献中所给的预条件.t关键词:预条件;Gauss—Seidel迭代法;谱半径;收敛性;收敛速度.A New Class of Preconditioned Gauss-Seidel Interative MethodP.Abstract: This paper give a new preconditioner large sparse linear equationst In the pre condition,by using Gauss-Seidel iteration format was linear equations .we first present a preconditions factor and then prove the accelerated convergence of the iteration method by the preconditions under the nonsingular Mmatrix.Discussed the in the the Strictly Diagonally Dominant the L matrix under the conditions of, the pre-conditions to speed up the the the convergence speed of of the Gauss-Seidel iterative method, but also in the the pre-under the conditions of the the Spectral Radius of the Gauss-Seidel iterative method is monotonic declining.Finally,some numerical examples are given to explain our theoretical result.Key words:pre-conditions factor,Gauss—Seidel iteration method ,spectral radius,weak regular splitting;,convergence rate.引言在对自然科学与社会科学许多实际问题进行数值模拟时,人们最后都归结为求解一个或者一些大型稀疏矩阵方程组,因此研究大型稀疏矩阵方程组的解法是人们关注的焦点,后来人们发现迭代法是求解这种线性方程组的一类主要方法之一,但是在实际生活中,迭代矩阵的收敛性和收敛速度的改善不仅取决于迭代方法和迭代矩阵中参数的选取,而且和方程组自身的某些变化密切相关.近几年来,稀疏线性方程组的迭代解法有了很大发展,特别是预条件矩阵的引入,大大加快了迭代的收敛性和收敛速度.因此,对预条件的研究仍是一个意义深刻的课题.为了加速迭代法的收敛速度,很多学者对线性方程组提出了各种不同的预处理方法.1991年文献[]2中Guwnawardena 等人提出预条件S I P +=α,其中⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛---=+=-1010000010*********,13,221n n a a a S I P ,α 文献[]5中提出的预条件⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛----=+=-101000010000010000011,3,2,1,n n n n n a a a a R I Pβ 以及文献[]7中提到的预条件⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛-------=+=--10100001000100011,,1,11,33,21,221n n n n n S aa a aa a a B I P , 本文主要考虑一种新的预条件因子⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛------=++=---1000000111,,11,112321212n n n n n n t t at a a t a a t a S S I P并且新的预处理矩阵加速了Gauss-Seidel 迭代法的收敛速度. 此时,预条件Gauss-Seidel 迭代法的迭代矩阵为[])()()()(11S U U S L L D I U L D G S t S S t t -+-+--=-=--αα.1.预备知识1.1 相关定义定义[]21 设矩阵()ij n n A a ⨯=n n R ⨯∈,如果对于矩阵主对角线的元素都不小于0,而主对角线外的元素都不大于0,则称矩阵A 为L 矩阵.定义[]22 设()ij n n A a ⨯=n n R ⨯∈,矩阵M 和N 满足N M A -=,其中M 为可选择的非奇异矩阵,且使d Mx =容易求解,称M 为分裂矩阵,N M 1-为迭代矩阵,若01≥-M 和0N ≥,则称 N M A -=是A 的正则分裂;若01≥-M 和10M N -≥,则称分裂N M A -=是若正则的.定义[]33 如果(){}k x 是由迭代公式()() 2,1,0,1=+=+k f Bx x k k ,产生的序列,且满足,,lim 0n k k R x x x ∈∀=*∞→那么称()()f Bx x k k +=+1是收敛的.定义[]34 设矩阵()ij n n A a ⨯=n n R ⨯∈,A 可表示为,0A sI B B =-≥,I 为n 阶单位阵,并且当谱半径()B s ρ≤,那么A 是M 矩阵.当()B s ρ<时,则称A 是非奇异M 矩阵.定义[]45 设矩阵()ij n n A a ⨯=n n R ⨯∈,如果A 的元素满足1,||||nii ij j j i a a =≠>∑i 12,,n =,, 则称A 为严格对角占优矩阵. 1.2 相关引理引理[]41 设A 为非奇异M 矩阵,分裂2211N M A N M A -=-=和是若正则的,若1121M M --≤,20N ≥,则有111122()()M N M N ρρ--≤.引理[]32 若系数矩阵A 为严格对角占优L 矩阵,那么经过预处理后的矩阵A α是严格对角占优M 矩阵.证明 设经过预处理后所得的矩阵为()ij n n A a α⨯=.因为矩阵A 是严格对角占优L 矩阵,则有当i j ≠时10ij a -<≤,所以1101j j a a ≤<,从而有1110j j a a ->,(2,,)j n =.因此矩阵A α的对角元部分是1221233222112,11,(1,1,,1)t n n n D diag a a a a t a a t a a =---->0,对于矩阵A α的非对角元部分有1,,1,1,1,,12,,,2,,,.j ij i i i i j i j i a j n a a t a i n a t a a⎧=⎪=-=⎨⎪-⎩其它因为0,0,0,1,,1,1,1,,1≤≤-≤-≤j i i j i j i i i i j a a a t a a t a a .矩阵t A 的非对角元部分是不大于0的,所以矩阵t A 是L 矩阵.记(1,1,,1)a =,则有111(,,)0nnT j nj j j Aa a a ===∑∑>.又因为0≥++=S S I P t t ,所以0>=Aa P A t t .引理[]43 设矩阵()ij n n A a ⨯=n n Z ⨯∈,则有以下两个等价性质 (1)存在向量x ,使得 0>Ax ; (2)矩阵A 是非奇异M 矩阵.引理[]54 设矩阵()ij n n A a ⨯=n n Z ⨯∈为非奇异M 矩阵,n n B Z ⨯∈,若有B A ≥,则1A -,1B -都存在且110A B --≥≥.引理[]35 若A 为严格对角占优矩阵且A 为L 矩阵,则10A -≥并且A 为非奇异M 矩阵.证明 由于A 是严格对角占优矩阵,则有1,||||nii ij j j ia a =≠>∑ i 1,2,,,n =成立,从而有1,|||0nii ij j j i a a =≠-∑>.记(1,1,,1)a =,有111(,,)nnT j nj j j Aa a a ===∑∑.又由于A 为L 矩阵,则对,0ij i j a ∀=≥且,0ij i j a ∀≠≤,从而有11,1,||||0n n nij ii ij ii ij j j j ij j ia a a a a ==≠=≠∑=-∑=-∑>.即0Aa >.所以,由引理2得A 为非奇异M 矩阵.由定义4 知10A -≥.2.主要结论2.1 新预条件下Gauss-Seidel 迭代法的收敛定理 定理1 线性方程组b Ax = , (1) 其中A 为严格的对角占优L 矩阵,若γβ≤,即2,3,,,i n ∀=都有i i γβ≤,12(,,,)n γγγγ=,12(,,,),n ββββ=并且[0,1],[0,1]i i γβ∈∈,2,3,,,i n ∀=G γ表示用P I S γγ=++S 预处理矩阵A后的迭代矩阵,G β表示用P I S ββ=++S 预处理矩阵A 得到的迭代矩阵,I. 若对于(],,,2,1,0n i i =∈α有1)()(<≤γβρρG G .II. 若A 为非奇异且是不可约的M 矩阵,则对于任意的(]1,,110,10,,2,3,,,i i i t i n a a ⎛⎫∈= ⎪ ⎪⎝⎭都有以下结论1) 若0()1G γρ<<,有()()G G βγρρ≤;2) 若()1G γρ=,有()()G G βγρρ=; 3) 若()1G γρ>,有 ()()G G βγρρ≥.证明 I 因为矩阵A 是严格的对角占优L 矩阵,所以A 为非奇异M 矩阵且矩阵,A A βγ是严格对角占优非奇异M 矩阵.若令,A A βγ的分裂如下()()()ββββββββββF E S U U S L L D I U L D A S S S -=-+--+--=--=,()()()γγγγγγγγγβF E S U U S L L D I U L D A S S S -=-+--+--=--=,其中()()S U U F S L L D I E S S S -+=-+--=ββββββ,,()()S U U F S L L D I E S S S -+=-+--=γγγγγγ,,由定理1的证明可知,A E F E F ββγγ=-=-是矩阵A 的两个弱正则分裂. 因为有γβ≤,()()()()()[]S U U S L L D I S U U S L L D I E E S S S S S S -+--+----+--+--=-γγγγββββγβ)( ()()0s s s s D D S S L L γββγγβ=-+-+-≤ , 所以E E γβ≥,由引理4可得11E E γβ--≤,又0F γ≥.从而由引理1知11()()1E F E F ββγγρρ--≤<.由于11,E F G E F G γγγβββ--==,所以有()()1G G βγρρ≤<.II 因为系数矩阵A 是非奇异不可约M 矩阵,从而由引理3可得()A S S I A t t ++=也是非奇异不可约M 矩阵. 由于,0,0,1≥+≥--=-t t t t t t t U L D U L D A则t t t t U L D A --=是矩阵t A 的一个M 分裂,(),1t t t t U L D G --=从而由引理1知,存在一个正向量x ,使得(),x G x G t t ρ=令()t G ρλ=,由定理1知()()[]()()()()[]()x U L D S L L D I xx S U U S L L D I x x G S S S S S S S S ++-+---=--+-+--=---111βββλλλ因为()()[]()01≥++-+--=-x U L D S L L D I y S S S S S β,所以当0()1G γρ<<时,有01λ<<,(1)0G x x y βλλ-=-≤,即G x x βλ≤.又由引理3得()λρ≤t G , 则()()G G βγρρ≤;同理可证()1G γρ=,()()G G βγρρ=;()1G γρ>,()()G G βγρρ≥.2.2 新预条件下矩阵谱半径的分析与比较定理2 线性方程组(1)的系数矩阵A 为严格对角占优L 矩阵, 矩阵A 的Gauss-Seidel 迭代矩阵用G 表示,在预条件S S I P t t ++=下系数矩阵t A 的Gauss-Seidel 迭代矩阵用t G 表示,I. 则有对于任意的(]0,1,2,,,i t i n ∈=都有()()G G t ρρ<.II. 若A 为非奇异不可约M 矩阵,则对任意的(]1,,110,10,,2,,,i i i t i n a a ⎛⎫∈= ⎪ ⎪⎝⎭有1) 若0()1G ρ<<,则()()G G t ρρ<; 2) 若()1G ρ=,则()()G G t ρρ=; 3) 若()1G ρ>,则()()G G t ρρ≥.证明 I 因为矩阵A 是严格对角占优L 矩阵,所以A 为非奇异M 矩阵且矩阵t A 为严格对角占优非奇异M 矩阵.若令t A 的分裂如下t t S t S S t t t t F E S U U S L L D I U L D A -=-+--+--=--=)()()(其中()S U U F S L L D I E s t t S S t -+=-+--=,)(,由引理2的证明可知,矩阵t A 的对角元部分都是正的,非对角元部分都是非正的,因此t E 是严格对角占优L 矩阵,又由引理5得,0F ,0≥≥t t E所以有01≥-t t F E .令,)(,)(11t t t t t t F S S I N E S S I M --++=++=由于,0)(11≥++=--t t t S S I E M且))((11≥=++++=--t t t t t t t t F E F S S I S S I E N M又()()(),11t t t t t t t N M F E S S I A S S I A -=-++=++=--则分裂t t N M A -=是弱正则.令L I M -=,U N =,有N M U L I A -=--=,由于矩阵A 是严格对角占优L 矩阵,则M 是严格对角占优L 矩阵,又由引 5得10M -≥.又知0N ≥,从而有10M N -≥.所以分裂N M A -=是弱正则的. 由于()()()()()()[],11t S S t tt t S L L D I S S I L I E S S I L I M M -+--++--=++--=---又0=L S t ,,0=S t D S 0=S t L S ,因而0≥++=-S S S t U L D M M ,所以有t M M ≥,由引理4得11--≤t M M ,0N ≥.由引理1得()()111<≤--N M N M t t ρρ.由于1M N G -=,()t t t t t t t t t G F E F S S I S S I E N M ==++++=----1111)(,因而()()1<≤G G t ρρ.II 由于系数矩阵A 是非奇异不可约的M 矩阵,且()A I L U =--为矩阵A 的一个M 分裂,1()G I L U -=-,由引理1可得,存在一个正向量x ,使得()Gx G x ρ=,又由引理5可知,()A S S I A t t ++=是一个非奇异M 矩阵.因为1221233222112,11,(1,1,,1)t n n n D diag a a a a t a a t a a =---->0,所以()()t S S S L L D I -+--是非奇异的,且)()()(S U U S L L D I A S t S S t -+--+--=是t A 的一个M 分裂.由于()()[]()()()()[]()x U L D S L L D I x x S U U S L L D I x x G S S S t S S S t S S t ++-+---=--+-+--=---111λλλ以及()()[]()01≥++-+--=-x U L D S L L D I y S S S t S S , 所以有当0()1G ρ<<时,(),01≤-=-y x x G t λλ即,x G λα≤又知,()λρ≤t G ,则()()G G t ρρ≤.同理可得()1G ρ=,()()G G t ρρ=; ()1G ρ>,()()G G t ρρ≥.3.数值例子设线性方程组的系数矩阵⎪⎪⎪⎪⎪⎭⎫ ⎝⎛------------=14.03.02.02.012.03.04.03.012.01.03.03.01A (1) 取,32n t t t === 分别用t s G G G G ,,,βα表示在预条件t s P P P P ,,,βα预处理矩阵A 后得到的高斯-塞德尔迭代矩阵,当()n i t i ,,3,2 =取不同值时,()()()()t s G G G G ρρρρβα,,,的所得值如表一 i t 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 ()αρG 0.5578 0.5578 0.5578 0.5578 0.5578 0.5578 0.5578 0.5578 0.5578 ()βρG 0.5415 0.5415 0.5415 0.5415 0.5415 0.5415 0.5415 0.5415 0.5415 ()s G ρ 0.5305 0.5305 0.5305 0.5305 0.5305 0.5305 0.5305 0.5305 0.5305 ()t G ρ 0.5275 0.5176 0.5061 0.4954 0.4849 0.4716 0.4595 0.4452 0.4298 (表一)因为s G G G ,,βα中都不含参数()n i t i ,,3,2 =,所以()()()s G G G ρρρβα,,不会受参数i t 的影响,从上表格知:()()()()t s G G G G ρρρρβα>>>=0.5275,因此,该预条件t t S S I P ++=加快了高斯-塞德尔迭代法的收敛速度.(2) 取n βββ=== 32,t G 表示用t t S S I P ++=预处理矩阵A 后得到的高斯塞德尔迭代矩阵,G β表示用ββS S I P ++=预处理矩阵A 后得到的高斯塞德尔迭代矩阵,当i t 、i β()n i ,,3,2 =取不同的值时,()t G ρ和()G βρ的比较值如表二(表二)由上表格可看出,当t ≥β时,有()()t G G ρρβ≤,即该预条件下Gauss-Seidel 迭代法的谱半径是单调下降.4.结束语由于预条件的引入能够加快线性方程组的收敛速度,所以得到很多学者的关注.本文给出了一个新的预条件S S I P t t ++=,讨论了当A 为非奇异M 矩阵,严格对角占优L 阵时该方法的收敛性,并得到了相应的结论.虽然该预条件加速了迭代法的收敛性,但收敛速度仍然不能令人满意.因此,高斯塞德尔方法结合预处理技术仍是很多学者感兴趣的问题.随着计算机的发展,预处理技术在不断创新,同时预条件迭代法也越来越广泛的用于解大型稀疏线性方程组.i t0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 i β0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 ()t G ρ 0.5275 0.5176 0.5061 0.4954 0.4849 0.4716 0.4595 0.4452 ()G βρ 0.5162 0.5061 0.4953 0.4838 0.4717 0.4595 0.4452 0.4297参考文献[1]KOHNO T,KOTAKEMORI H,NIKI H.Improving modified iterative methods for Z·matrices[J].Liner Algebra and Its Application,1997,267:ll3-123[2] 黄廷祝,杨传胜.特殊矩阵分析及应用[M].北京:科学出版社,2007:1.33.[3] 宋永忠.线性方程组迭代解法[M].南京:南京师范大学出版社.l992:37.[4] 张谋成,黎稳.非负矩阵论[M]. 广州:广东高等教育出版社,1995 :43-76.[5] LI Wen,SUN Weiwei.Modified Gauss·Seidel type methods and Jacobi type methods[J].Linear Algebra and Its Application,2000,3 l 7:227-240.[6] HIROSHI NIKI,KYOUJI HARADA,MUNENORI MORMOTO,et a1.The survey of preconditiononers used for accelerating the rate of convergence in the Gauss—Seidel method[J].Journal of Computational and Applied Mathematics,2004,1 65(5):587—600.[7] LI W.SUN W W.Modified Gauss-seidel type methods and Jacobi type methods for z—matrices[J].Linear Algebra App1.2000,317(1):227—240.[8] SONG Y Z.Comparisons of nonnegative splittings of matrices [J].Linear Algebra App1,1991:154—156,433—455.[9] 徐树方.矩阵计算的理论与方法[M].北京:北京大学出版社,1995:121—122.[10] 戴华.矩阵论[M].北京:科学出版社,2001:283—284.[11] 蒋美群.加速松弛迭代法的最优因子[J].数学研究与评论,1995,15(3):423-427.[12] 胡家赣.推广的迭代矩阵的收敛性[J].计算数学,1984,6(2):174-181.[13] 张引.SAOR方法的收敛性[J].计算数学,1988,10(2):201-204.[14] 胡家赣.推广的迭代矩阵的收敛性[J].计算数学,1984,6(2):174-181.[15] 魏小梅,畅大为.相容次序矩阵SAOR方法的最优参数估计 [J].内蒙古师范大学学报(自然科学汉文版),2007年第02期.。
Gauss Seidel迭代法简介Gauss Seidel迭代法是一种用于求解线性方程组的迭代算法。
它是Jacobi迭代法的改进版本,通过逐次更新未知数的估计值,逐渐逼近方程组的精确解。
本文将详细介绍Gauss Seidel迭代法的原理、算法步骤以及应用领域。
原理Gauss Seidel迭代法基于以下原理:对于线性方程组Ax = b,其中A是一个n×n 的矩阵,x和b是n维向量。
我们可以将矩阵A分解为L、D和U三个矩阵的和,其中L是A的下三角部分(不包括对角线),D是A的对角线部分,U是A的上三角部分(不包括对角线)。
则方程组可以重写为:(A = L + D + U)(L + D + U)x = b(L + D)x + Ux = b将上式中的x视为已知量,将(L + D)x视为已知量的估计值,我们可以得到迭代公式:x^(k+1) = -D^(-1)(Lx^(k+1) + Ux^(k)) + D^(-1)b其中,x(k)表示第k次迭代的估计值,x(k+1)表示第(k+1)次迭代的估计值,D^(-1)表示矩阵D的逆矩阵。
算法步骤Gauss Seidel迭代法的算法步骤如下:1.初始化估计值向量x^(0)为任意非零向量。
2.根据迭代公式计算x^(k+1)。
3.判断是否满足终止条件,如果满足则停止迭代,输出x^(k+1)作为线性方程组的近似解;否则,令k=k+1,返回第2步。
终止条件通常有以下几种方式: - 迭代次数达到预设的最大值。
- 两次迭代之间的误差小于预设的阈值。
- 迭代估计值与精确解之间的误差小于预设的阈值。
应用领域Gauss Seidel迭代法在科学计算和工程领域有广泛的应用。
下面列举了一些常见的应用领域:电力系统分析Gauss Seidel迭代法可以用于电力系统的潮流计算。
潮流计算是电力系统分析的基础,用于确定电力系统各节点的电压幅值和相角。
通过迭代计算节点电压,可以实现电力系统的稳态分析和潮流优化。
线性⽅程组迭代算法——Gauss-Seidel迭代算法的python实现原理:请看本⼈博客:代码:import numpy as npmax=100#迭代次数上限Delta=0.01m=2#阶数:矩阵为2阶n=3#维数:3X3的矩阵shape=np.full(m, n)shape=tuple(shape)def read_tensor(f,shape):#读取张量data=[]for i in range(n**(m-1)):line = f.readline()data.append(list(map(eval, line.split(","))))return np.array(data).reshape(shape)def read_vector(f):#读取向量line = f.readline()line = line.replace("\n","")line=list(map(eval, line.split(",")))return np.array(line)#读取数据f = open("jacobi_data.txt")A=read_tensor(f,shape)#读取矩阵Ab=read_vector(f)#读取bf.close()print('A:')print(A)print('b:',b)U=np.copy(A)#求UDL=np.copy(A)#求D-Lfor i in range(n):for j in range(n):if j<=i:U[i,j]=0else:DL[i,j]=0U=0-U#迭代求解x=np.ones(n)#⽤于存储迭代过程中x的值y=np.ones(n)#⽤于存储中间结果DLU=np.dot(np.linalg.inv(DL),U)#对DL求逆,然后和U相乘DLb=np.dot(np.linalg.inv(DL),b)#对DL求逆,然后和b相乘print('x:',x)for iteration in range(max):#迭代计算y=np.dot(DLU,x)+DLb#判断是否达到精度要求if np.max(np.fabs(x-y))<Delta:print('iteration:',iteration)break#将y幅值到x,开始下⼀轮迭代x=np.copy(y)print('x:',x)数据:组织形式:前3⾏是A的数据,最后1⾏是b的数据。
Gauss-Seidel 迭代矩阵求法的思考在迭代法收敛性的判别中,我们有充分条件:若迭代矩阵B 的某种范数1<=q B ,则迭代法 ,1,0,)()1(=+=+k d Bx x k k 对任意的初始向量)0(x 都收敛于方程组b Ax =的精确解*x 。
从这个条件中我们可以看出,想要知道迭代法是否收敛,就要知道迭代矩阵(当然如果系数矩阵是正定的或严格对角占优的,那就不用知道其迭代矩阵,因为这时它的Jacobi 迭代和Gauss-Seidel 迭代一定收敛),Jacobi 迭代矩阵为A D I U L D B J 11)(---=+-=,Gauss-Seidel 迭代矩阵,U L D B G 1)(-+-=这两个矩阵中都涉及到了矩阵的逆。
从上高等代数时学到矩阵的逆开始,就一直惧怕有关矩阵逆的题目,因为求矩阵A 的逆*11A AA =-,这就必须求出A 的行列式A 与A 的伴随矩阵*A ,对于求矩阵A 的行列式,就是一个繁琐的过程,计算量大且易出错,而这儿还不仅如此,这儿还要求出矩阵A 的伴随矩阵*A 。
如果矩阵⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=nn n n n n a a a a a a a a a A 212222111211,则⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=nn n nn n A A A A A A A A A A 212221212111*,而其中的nnj n j n n ni j i j i i n i j i j i i n j j a a a a a a a a a a a a a a a a A1,1,1,11,11,11,1,11,11,11,111,11,111ij+-+++-++-+----+-=,因此求*A 的计算量比求A 的行列式的计算量还要大的多,所以1-A 很难求。
因此数学家便开始寻找求1-A 的相对容易的方法,其中有一种初等变换的方法,即对()E A 进行初等行变换,当把A 变成E 时,E 便变成了1-A ,此方法要简单的多,但在变换过程中要消耗大量空间。
高斯-塞德尔迭代法
高斯-赛德尔迭代(gauss–seidel method)是数值线性代数中的一个迭代法,可用
来求出线性方程组解的近似值。
该方法以卡尔·弗里德里希·高斯和路德维希·赛德尔命名。
同雅可比法一样,高斯-赛德尔迭代是基于矩阵分解原理。
在数值线性代数中,gauss-seidel方法也称作liebmann方法或已连续加速度方法,
就是用作解线性方程组的运算方法。
它以德国数学家卡尔·弗里德里希·高斯(carl friedrich gauss)和菲利普·路德维希·冯·塞德尔(philipp ludwig von seidel)命名,与雅基数排序方法相近。
高斯-赛德尔迭代法是解线性方程组的常用迭代法之一,设线性方程组为a1x1 +a2x2 +..+ cintn =b.s
(i= 1,2,,n),
高斯赛德尔迭代法的迭代公式,虽然它可以应用于对角线上具有非零元素的任何矩阵,但只能在矩阵是对角线主导的或对称的和正定的情况下,保证收敛。
在年,只在高斯给
他的学生gerling的私人信中提到。
年之前由塞德尔自行出版。