线性方程组的最速下降法与共轭梯度法
最优化方法

随机梯度下降每次迭代只使用一个样本,迭代 一次计算量为n 2 ,当样本个数m很大的时候, 随机梯度下降迭代一次的速度要远高于批量梯 度下降方法。 两者的关系可以这样理解:随机 梯度下降方法以损失很小的一部分精确度和增 加一定数量的迭代次数为代价,换取了总体的 优化效率的提升。增加的迭代次数远远小于样 本的数量。
2. 牛顿法和拟牛顿法(Newton's method & Quasi-Newton Methods)
牛顿法(Newton's method) 牛顿法是一种在实数域和复数域上近似求解方程 的方法。方法使用函数 f ( x ) 的泰勒级数的前 面几项来寻找方程 f ( x ) = 0 的根。牛顿法最大 的特点就在于它的收敛速度很快。
具体步骤:
首先,选择一个接近函数 f ( x ) 零点的 x 0 , 计算相应的 f ( x 0 ) 和切线斜率 f ' (x 0 ) (这 里 f ' 表示函数 f 的导数)。然后我们计算穿 过点 (x 0 , f (x 0 )) 并且斜率为 f '(x 0 ) 的直线 和 x 轴的交点的 x 坐标,也就是求如下方程的 解:
批量梯度下降法(Batch Gradient Descent,BGD)
(1)将J(theta)对theta求偏导,得到每个theta对应 的的梯度:
(2)由于是要最小化风险函数,所以按每个参数 theta的梯度负方向,来更新每个theta:
(3)从上面公式可以注意到,它得到的是一个全 局最优解,但是每迭代一步,都要用到训练集 所有的数据,如果m很大,那么可想而知这种 方法的迭代速度会相当的慢。所以,这就引入 了另外一种方法——随机梯度下降。 对于批量梯度下降法,样本个数m,x为n维向 量,一次迭代需要把m个样本全部带入计算, 迭代一次计算量为m*n 2 。
最优化方法第二章_线搜索算法_最速下降法

f x1 , x2 c, c>0,
2
改写为:
x12 2c 1
2 x2
2c 2
2
1
二、最速下降法
x2
这是以
2c
1
和
2c
2
为半轴的椭圆
2c
2c
2
2
从下面的分析可见 两个特征值的相对
x1
大小决定最速下降法的收敛性。
(1)当 1 2 时,等值线变为圆
2 2
4 f x , 2
2 x1 2 x2 4 f ( x) , 2 x1 +4x2
4 d = f x , 2
0 0
=40 2 20 3 令 0= ' ( ) 80 20, 得 0 =1/4,
一
一维搜索
二 三 四
下 降 算 法
五
最速下降法 Newton法 共轭梯度法
多尺度法 (拟Newton法)
二、最速下降法 假设 f 连续可微,取 线搜索方向
k
d f ( x )
k
步长k 由精确一维搜索得到。 从而得到第 k+1次迭代点,即
f ( x k k d k ) min f ( x k d k )
(推论)在收敛定理的假设下,若f (x)为凸函数,则最速下降 法或在有限迭代步后达到最小点;或得到点列 x k ,它的任 何聚点都是 f (x)的全局最小点。
二、最速下降法
最速下降法特征:相邻两次迭代的方向互相垂直。
令
( ) f ( x d ), 利用精确一维搜索,可得
共轭梯度法和梯度下降法

共轭梯度法和梯度下降法共轭梯度法和梯度下降法是两种常用的优化算法,它们在解决最优化问题时具有重要的作用。
本文将分别介绍共轭梯度法和梯度下降法的原理、优势和应用领域,并对它们进行比较和总结。
一、共轭梯度法共轭梯度法是一种迭代算法,用于求解线性最小二乘问题或者解线性方程组。
它的核心思想是通过迭代求解一系列的共轭方向,从而不断逼近最优解。
共轭梯度法的优势在于它能够充分利用问题的特殊结构,避免不必要的计算。
相比于梯度下降法,共轭梯度法通常收敛更快,并且对于大规模问题的求解效果更好。
共轭梯度法主要应用于求解线性方程组、最小二乘问题以及特定的优化问题,如信号处理、图像处理和机器学习等领域。
二、梯度下降法梯度下降法是一种基于梯度的迭代优化算法,用于求解无约束最优化问题。
它的核心思想是沿着负梯度方向不断迭代,直至达到最优解或者满足停止条件。
梯度下降法的优势在于它的简单性和易于实现性。
它不需要求解二阶导数,只需要计算一阶导数,因此对于大规模问题的求解也比较高效。
梯度下降法广泛应用于机器学习中的参数优化问题,如线性回归、逻辑回归和神经网络等。
此外,它还可以用于函数拟合、特征选择和降维等领域。
三、共轭梯度法与梯度下降法的比较共轭梯度法和梯度下降法都是常见的优化算法,它们的选择取决于具体的问题和需求。
1. 收敛速度:共轭梯度法通常比梯度下降法收敛更快。
共轭梯度法在每次迭代时利用了前面所有迭代步骤的信息,可以更快地逼近最优解。
2. 内存消耗:梯度下降法只需要存储当前的梯度信息,而共轭梯度法需要存储一系列的共轭方向。
因此,对于大规模问题,梯度下降法在内存消耗方面更具优势。
3. 线性方程组求解:共轭梯度法是一种求解线性方程组的有效方法,而梯度下降法通常不适用于求解线性方程组。
4. 二次型优化问题:共轭梯度法对于二次型优化问题的求解效果更好。
梯度下降法在处理非二次型问题时可能会出现收敛速度慢、局部最优等问题。
共轭梯度法和梯度下降法是两种常用的优化算法。
最优化问题的算法迭代格式

最优化问题的算法迭代格式最优化问题的算法迭代格式最优化问题是指在一定的条件下,寻找使某个目标函数取得极值(最大值或最小值)的变量取值。
解决最优化问题的方法有很多种,其中较为常见的是迭代法。
本文将介绍几种常用的最优化问题迭代算法及其格式。
一、梯度下降法梯度下降法是一种基于负梯度方向进行搜索的迭代算法,它通过不断地沿着目标函数的负梯度方向进行搜索,逐步接近极值点。
该方法具有收敛速度快、易于实现等优点,在许多应用领域中被广泛使用。
1. 算法描述对于目标函数 $f(x)$,初始点 $x_0$ 和学习率 $\alpha$,梯度下降算法可以描述为以下步骤:- 计算当前点 $x_k$ 的梯度 $\nabla f(x_k)$;- 更新当前点 $x_k$ 为 $x_{k+1}=x_k-\alpha\nabla f(x_k)$;- 如果满足停止条件,则输出结果;否则返回第 1 步。
2. 算法特点- 沿着负梯度方向进行搜索,能够快速收敛;- 学习率的选择对算法效果有重要影响;- 可能会陷入局部极小值。
二、共轭梯度法共轭梯度法是一种基于线性方程组求解的迭代算法,它通过不断地搜索与当前搜索方向共轭的新搜索方向,并在该方向上进行一维搜索,逐步接近极值点。
该方法具有收敛速度快、内存占用少等优点,在大规模问题中被广泛使用。
1. 算法描述对于目标函数 $f(x)$,初始点 $x_0$ 和初始搜索方向 $d_0$,共轭梯度算法可以描述为以下步骤:- 计算当前点 $x_k$ 的梯度 $\nabla f(x_k)$;- 如果满足停止条件,则输出结果;否则进行下一步;- 计算当前搜索方向 $d_k$;- 在当前搜索方向上进行一维搜索,得到最优步长 $\alpha_k$;- 更新当前点为 $x_{k+1}=x_k+\alpha_k d_k$;- 计算新的搜索方向 $d_{k+1}$;- 返回第 2 步。
2. 算法特点- 搜索方向与前面所有搜索方向都正交,能够快速收敛;- 需要存储和计算大量中间变量,内存占用较大;- 可以用于非线性问题的求解。
基于matlab平台的三种迭代法求解矩阵方程

数值分析第二次作业学院:电子工程学院基于matlab平台的三种迭代法求解矩阵方程组求解系数矩阵由16阶Hilbert方程组构成的线性方程组的解,其中右端项为[2877/851,3491/1431,816/409,2035/1187,2155/1423,538/395,1587/1279,573/502,947 /895,1669/1691,1589/1717,414/475,337/409,905/1158,1272/1711,173/244].要求:1)Gauss_Sedel迭代法;2)最速下降法;3)共轭梯度法;4)将结果进行分析对比。
解:根据题目要求,编写了对应算法的matlab程序,求解结果如下:(求解精度为10e-4,最大迭代次数1000)1、方程的解:如下图1所示图1 三种方法求解的结果对比图2 Gause_Sedel算法收敛特性图3 最速下降法收敛特性图3 共轭梯度法收敛特性从图中可以看到,在相同的最大迭代次数和预设求解精度条件下,共轭梯度算法仅需要4次迭代便可求出方程组的解,耗时0.000454秒,而且求出解的精度最高;Gauss_Sedel方法需要465次迭代,耗时0.006779秒,求解精度最差;最速下降法需要398次迭代,耗时0.007595秒,求解精度与共轭梯度算法差不多,因此两者求出的解也几乎相同。
从中可以得出结论,共轭梯度算法无论从求解精度还是求解速度上都优于其他两种,最速下降法在求解精度上几乎与共轭梯度算法持平,但求解速度更慢。
Gauss_Sedel方法在求解精度和速度两方面都最差。
具体的解为:Gauss_Sedel迭代法:(共需465次迭代,求解精度达到9.97e-5) X=[0.995328360833192 1.01431732497804 1.052861239300110.934006974137998 0.931493373808838 0.9665081384030661.00661848511341 1.03799789809258 1.051806903036541.06215849948572 1.04857676431223 1.028561990411131.01999170162638 0.971831831519515 0.9525261666348130.916996019179182].最速下降法:(共需398次迭代,求解精度达到9.94e-5)X=[0.998835379744322 1.01507463472900 0.9825890937201850.980191460759243 0.991245169713628 1.003780222253291.01350884374478 1.01928337905816 1.020859096651941.01930314197028 1.01444777381651 1.007040589892970.998384452250809 0.987399404644377 0.9757678149709120.963209150871750].共轭梯度法:(共需4次迭代,求解精度达到3.98e-5)X=[0.996472751179456 1.02707840189049 0.9776233734098530.973206695321590 0.986133032967607 1.001289025642341.01322158496914 1.02047386502293 1.023009050605651.02163015083975 1.01678089454399 1.009203108638740.999772406055155 0.988443827498859 0.9760941924969490.962844741655005].Matlab程序主程序:clc;clear;%% 本程序用于计算第二次数值分析作业,关于希尔伯特矩阵方程的解,用三种方法,分析并比较,也可推广至任意n维的矩阵方程%%A=hilb(16); %生成希尔伯特系数矩阵b=[2877/851;3491/1431;816/409;2035/1187;2155/1423;538/395;1587/1279;573/502;947/895;166 9/1691;1589/1717;414/475;337/409;905/1158;1272/1711;173/244]; %右端向量M=1000; %最大迭代次数err=1.0e-4; %求解精度[x,n,xx,cc,jingdu]=yakebi_diedai(A,b,err,M); % 雅克比算法求解tic;[x1,n1,xx1,cc1,jingdu1]=gauss_seidel(A,b,err,M); % gauss_seidel算法求解toc;tic;[x2,n2,xx2,jingdu2]=zuisuxiajiangfa(A,b,err,M); % 最速下降法求解toc;tic;[x3,flag,jingdu3,n3]=bicg(A,b,err); % matlab内置双共轭梯度算法求解toc;tic;[x4,xx4,n4,jingdu4]=con_grad(A,b,err,M); % 教材共轭梯度算法求解toc;%% 计算相应结果,用于作图%%num=[1:16]';jie=[num,x1,x2,x4]; % 三者的解对比% 三者的收敛情况对比num1=[1:n1]';fit1=[num1,jingdu1'];num2=[1:n2]';fit2=[num2,jingdu2'];num4=[1:n4]';fit4=[num4,jingdu4'];子函数1(Gause_Sedel算法):function [x,n,xx,cc,jingdu] = gauss_seidel(A,b,err,M)% 利用迭代方法求解矩阵方程这里是高斯赛尔得迭代方法% A 为系数矩阵b 为右端向量err为精度大小返回求解所得向量x及迭代次数% M 为最大迭代次数cc 迭代矩阵普半径jingdu 求解过程的精度n 所需迭代次数xx 存储求解过程中每次迭代产生的解for ii=1:length(b)if A(ii,ii)==0x='error';break;endendD=diag(diag(A));L=-tril(A,-1);U=-triu(A,1);B=(D-L)\U;cc=vrho(B); %迭代矩阵普半径FG=(D-L)\b;x0=zeros(length(b),1);x=B*x0+FG;k=0;xx(:,1)=x;while norm(A*x-b)>errx0=x;x=B*x0+FG;k=k+1;xx(:,k+1)=x;if k>=Mdisp('迭代次数太多可能不收敛!');break;endjingdu(k)=norm(A*x-b);endend子函数2(最速下降算法):function [x,n,xx,jingdu]=zuisuxiajiangfa(A,b,eps,M)% 利用迭代方法求解矩阵方程这里是最速下降迭代方法% A 为系数矩阵b 为右端向量err为精度大小返回求解所得向量x及迭代次数% % M 为最大迭代次数jingdu 求解过程的精度n 所需迭代次数xx 存储求解过程中每次迭代产生的解x0=zeros(length(b),1);r0=b-A*x0;t0=r0'*r0/(r0'*A*r0);x=x0+t0*r0;r=b-A*x;xx(:,1)=x;k=0;while norm(r)>epsr=r;x=x;t=r'*r/(r'*A*r);x=x+t*r;r=b-A*x;k=k+1;xx(:,k+1)=x;if k>=Mdisp('迭代次数太多可能不收敛!');break;endn=k;jingdu(k)=norm(r);endend子函31(共轭梯度法):function [x,xx,n,jingdu]=con_grad(A,b,eps,M)% 利用迭代方法求解矩阵方程这里是共轭梯度迭代方法% A 为系数矩阵b 为右端向量err为精度大小返回求解所得向量x及迭代次数% M 为最大迭代次数jingdu 求解过程的精度n 所需迭代次数xx 存储求解过程中每次迭代产生的解x0=zeros(length(b),1);r0=b-A*x0;p0=r0;% t0=r0'*r0/(r0'*A*r0);% x=x0+t0*r0;% xx(:,1)=x;k=0;x=x0;r=r0;p=p0;while norm(r)>epsx=x;r=r;p=p;afa=r'*r/(p'*A*p);x1=x+afa*p;r1=r-afa*A*p;beta=r1'*r1/(r'*r);p1=r1+beta*p;x=x1;r=r1;p=p1;k=k+1;xx(:,k)=x;if k>=Mdisp('迭代次数太多可能不收敛!');break;endn=k;jingdu(k)=norm(r);endend。
李庆扬-数值分析第五版第6章习题答案(20130819)

试考察解此方程组的雅可比迭代法及高斯-赛德尔迭代法的收敛性。 雅可比迭代的收敛条件是
( J ) ( D 1 ( L U )) 1
高斯赛德尔迭代法收敛条件是
(G ) (( D L) 1U ) 1
因此只需要求响应的谱半径即可。 本题仅解 a),b)的解法类似。 解:
3.设线性方程组
a11 x1 a12 x2 b1 a11 , a12 0 a21 x1 a22 x2 b2
证明解此方程的雅可比迭代法与高斯赛德尔迭代法同时收敛或发散, 并求两种方 法收敛速度之比。 解:
a A 11 a21
则
a12 a22
5. 何谓矩阵 A 严格对角占优?何谓 A 不可约? P190, 如果 A 的元素满足
aij aij ,i=1,2,3….
j 1 j i
n
称 A 为严格对角占优。 P190 设 A (aij )nn (n 2) ,如果存在置换矩阵 P 使得
A PT AP 11 0
x ( k 1) x ( k )
10 4 时迭代终止。
2 1 5 (a)由系数矩阵 1 4 2 为严格对角占优矩阵可知,使用雅可比、高斯 2 3 10
赛德尔迭代法求解此方程组均收敛。[精确解为 x1 4, x 2 3, x3 2 ] (b)使用雅可比迭代法:
2.给出迭代法 x ( k 1) Bx (k ) f 收敛的充分条件、误差估计及其收敛速度。 迭代矩阵收敛的条件是谱半径 ( B0 ) 1 。其误差估计为
1 k
(k) Bk (0)
R ( B) ln B k 迭代法的平均收敛速度为 k
共轭梯度法与牛顿法和最速下降法的异同点

共轭梯度法与牛顿法和最速下降法都是优化算法中常见的方法,它们各有特点。
下面我将对这三种方法的异同点进行深入探讨。
1. 共轭梯度法共轭梯度法是一种迭代法,用于求解对称正定线性方程组以及最小化二次函数的问题。
它的特点在于每一步都是沿着一个共轭方向进行搜索,这使得它在相同迭代次数下相较于最速下降法更快地收敛。
与最速下降法相比,它的收敛速度更快。
2. 牛顿法牛顿法是一种较为常见的优化算法,它利用了函数的二阶导数信息来寻找极小值点。
它的优点在于可以快速收敛并且通常具有二次收敛性,但其缺点在于需要计算二阶导数信息,在高维情况下计算量大且计算复杂。
3. 最速下降法最速下降法是一种基本的优化方法,它是一种梯度下降法的特例,每一步沿着负梯度方向进行搜索。
它的优点在于实现简单并且易于理解,但相较于共轭梯度法和牛顿法,最速下降法的收敛速度通常较慢。
从以上对三种方法的描述可以看出,共轭梯度法、牛顿法和最速下降法在优化问题中各有优缺点。
共轭梯度法具有较快的收敛速度和不需要存储二阶导数信息的优点,但其对于非二次函数问题的适应性较差;牛顿法收敛速度快,但需要计算二阶导数信息,计算量大且复杂;最速下降法实现简单,但收敛速度相对较慢。
对于不同的优化问题,我们需要根据具体情况选择合适的算法。
在实际应用中,需要综合考虑问题的特点以及算法的优缺点,来选取最适合的优化算法。
这篇文章通过对共轭梯度法、牛顿法和最速下降法的分析,使我更深入地理解了这些优化算法的特点和应用范围。
我认为,在实际应用中,应该根据具体问题的特点来选择合适的算法,综合考虑收敛速度、计算复杂度以及存储需求等因素,以达到最优的优化效果。
希望这篇文章能够帮助你更全面、深刻和灵活地理解共轭梯度法、牛顿法和最速下降法。
优化算法是在计算机科学和数学领域中非常重要的研究方向。
在实际应用中,我们常常会面临需要最小化或最大化一个函数的问题,比如在机器学习、数据分析、工程优化等领域。
而共轭梯度法、牛顿法和最速下降法作为常见的优化算法,为我们解决这类问题提供了有效的工具。
下降方向

戴宽平一.关于下降法的下降方向问题考虑如下方程=Ax b (1)其中n n⨯∈A R是可逆方阵,且其对角线元素全部非零,列向量n∈b R 。
由此我们建立一个求解方程组(1)的变分方程12,,ϕ()=()-()x x Ax x b (2)其中x 是n 维列向量。
我们可以得到:对于n*∈x R 满足*=Ax b 的充分必要条件是nϕϕ*∈()=m i n ()x R x x 。
这样我们就把问题转化为求解ϕ()x 的极小值问题。
为了找到ϕ()x 的极小值点*x ,我们从人一k x 出发,沿着ϕ()x 在k x 点沿着某一个制定的方向搜索下一个近似点1k +x ,使得1k ϕ+()x 在该方向上达到最小值。
在最速下降法中,我们会选择ϕ()x 在k x 点下降最快的方向k z ,即在这点的负梯度方向k r 。
对于共轭梯度法,我们的选取方式为()()00r =z ,()()()1k k k k r β-=+z z ,12k ,...=(),并且()()()10k k ,-=z Az ,即可求得()()()()()()1111k k kk k ,,β----=-z Ar zAz 。
但对于非正定矩阵A ,我们不能保证()()()1kk ,-z Az 是非零的,所以我们将用矩阵D 代替公式中的A 。
D 的对角线上的元素为对应的A 的对角线元素的绝对值,其他元素全部为零。
于是我们可以得到一个新的算法如下:()()()()()()()()()()()()()()()()()()()()()()()()00000000010001111112k k k k k k k k k k k ,,,,,,,,,,r k ,...ααββ-----⎧=-⎪=⎪⎪⎪=⎪⎪⎪⎪=+⎨⎪=-⎪⎪⎪=-⎪⎪⎪=+=⎪⎩r b Ax z r z r z Dz x x r r b Ax z Dr z Dz z z ()()()()()()()()()()1k k k k kk k k k ,,αα+⎧⎪=⎪⎨⎪⎪=+⎩z r z Dz xx z 当12k ke +-<x x 成立时,则停止计算,其中e 为终止准则。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
共轭梯度法
一 共轭梯度法原理
对于线性方程组A b X =,即:
1111221n 12112222n 21122nn n n n n n n
a x a x a x
b a x a x a x b a x a x a x b +++=⎧⎪+++=⎪⎨⎪⎪++
+=
⎩ (1)
其中,()=ij n n a ⨯A 为对称正定矩阵,()1i n b b ⨯=,如何熟练地运
用最速下降法与共轭梯度法的求解线性方程组。
在求解线性方程组之前,首先用内积将问题转化为函数问题。
1 最速下降法
最速下降法是一种运用梯度与极值的性质,综合数值计算方法寻找局部极值。
基本思想:任一点的负梯度方向是函数值在该点下降最快的方向。
将n 维问题转化为一系列沿负梯度方向用一维搜索方法寻优的问题,利用负梯度作为搜索方向,故称最速下降法。
具体步骤:
1、搜索方向:()k k d f x =-∇,即最速下降方向。
2、搜索步长:k λ取最优步长,即满足:
()min ()k k k k k f x d f x d λ
λλ+=+
1 给定初始点0n x R ∈,允许误差0ε≥,令1k =。
2 计算搜索方向()k k d f x =-∇。
3 若k d ε≤,则k x 为所求的极值点,否则,求解最优步长k λ,使得()min ()k k k k k f x d f x d λ
λλ+=+。
4 令1k k k k x x d λ+=+,1k k =+
最速下降方向是反映了目标函数的局部性质,它只是局部目标函数值下降最快的方向。
2 共轭梯度法
对于1
min ()2T T f x x Ax b x =+
其中,0n x R ∈,A 是对称正定矩阵。
基本思想:将共轭性与最速下降法相结合利用已知迭代点的梯度方向构造一组共轭方向,并沿此方向搜索,求出函数的极小值。
具体步骤:
1 取初始点(0)x ,取第一次搜索方向为(0)(0)()d f x =-∇。
2 设已求得(1)
k x
+,若(1)
()0k f x +∇≠,令(1)
()()k g x f x +=∇
,则下一个
搜索方向
(1)()1k k k k d g d β++=-+ (1)
由于(1)
k d +与()
k d
关于A 共轭,所以给(1)两边同时乘以()T
k d
A ,
即:
()(1)()()()10T
T
T
k k k k k k k d d d g d d β++A =-A +A =
解得:()1()()
k T k k k T k d A g d Ad β+= (2)
3 搜索步长的确定,已知迭代点()k x ,和搜索方向()k d ,确定
步长k λ,即:()()min ()k k f x d λ
λ+
记
()()()()k k f x d φλλ=+,
令
()()()()()0k k T k f x d d φλλ'=∇+=
既有:()()()[()]0k k T k A x d b d λ++=
令 ()()()k k k g f x Ax b =∇=+ 既有:()()[]0k T k k g Ad d λ+=
解得:()
()()
T k k k k T k g d d Ad
λ=-
共轭梯度法是对最速下降法的一种改进,减少了迭代次数从而提高了程序运行效率。
二 程序框图
程序:
%%%%%%%%%%%%%%%%%%%最速下降法%%%%%%%%%%%%%%%%%%
function [x,k]=fast(A,b)
esp=input('ÇëÊäÈëÔÊÐíÎó²îesp=');
N=input('ÇëÊäÈë×î´óµü´ú´ÎÊýN=');
x0=input('ÇëÊäÈë³õʼֵx0=');
k=0;
tol=1;
while tol>=esp
r=b-A*x0;
q=dot(r,r)/dot(A*r,r);
x=x0+q*r;
k=k+1;
tol=norm(x-x0);
x0=x
if k>=N
disp('µü´ú´ÎÊýÌ«¶à£¬¿ÉÄܲ»ÊÕÁ²£¡');
return;
end
end
x
k
%%%%%%%%%%%%%%%%%%%共轭梯度法%%%%%%%%%%%%%%%%%%%
function [k,x]=C_G(A,b)
esp=input('请输入最大误差=');
x0=input('请输入初值x0=');
k = 0 ;
r0 = b-A*x0; %Çó³ödangqianÌݶÈ
while norm(r0)>esp
r0 = b -A*x0;
k = k + 1 ;
if k==1
p0 = r0 ;
else
lamda=(r0'*r0)/(p0'*A*p0);
r1 = r0 - lamda*A*p0 ;
p0=r0+(r0'*r0)/(r1'*r1)*p0;
x1 = x0 + lamda*p0;
x0=x1;
r0=r1;
end
end
x=r0;
k;
end。