手机版

数学实验“线性方程组的最速下降法与共轭梯度法解法”实验报告(内含matlab程

发布时间:2024-11-10   来源:未知    
字号:

本文档介绍了线性方程组的最速下降法与共轭梯度法的原理和方法,并编程实现最速下降法与共轭梯度法等方法求解非线性方程组。

西京学院数学软件实验任务书

本文档介绍了线性方程组的最速下降法与共轭梯度法的原理和方法,并编程实现最速下降法与共轭梯度法等方法求解非线性方程组。

实验五实验报告

一、实验名称:最速下降法与共轭梯度法解线性方程组。 二、实验目的:进一步熟悉理解掌握最速下降法与共轭梯度法解法思路,提高matlab编程能力。

三、实验要求:已知线性方程矩阵,应用最速下降与共轭梯度法在相关软件编程求解线性方程组的解。 四、实验原理:

1.最速下降法:

从某个初始点X(0) 出发,沿f(X)在点X(0)处的负梯度方向

r(0) f(X(0)) b AX(0)

求得f(X)的极小值点X(1), 即

minf(X(0) r(0))

0

然后从X(1)出发,重复上面的过程得到X(2)。如此下去,得到序列{X(k)}

f(X(0)) f(X(1)) ... f(X(k))

可以证明,从任一初始点X(0) 出发, 用最速下降法所得到的序列{X(k)}均收敛于问题使X最小化f(X)的解,也就是方程组AX b的解。其收敛速度取决于

n 1

,其中 1 , n分别 n 1

本文档介绍了线性方程组的最速下降法与共轭梯度法的原理和方法,并编程实现最速下降法与共轭梯度法等方法求解非线性方程组。

为A的最小,最大特征值。最速下降法迭代格式:给定初值X(0),

X(k)按如下方法决定:

r k f(X(k)) b AX(k)

r(k)T,r(k) (k 1)(k)(k)

k (k)TX X kr

r,Ar(k)

2.共轭梯度法

其基本步骤是在点X(k) 处选取搜索方向d(k), 使其与前一次的搜索方向d(k 1) 关于A共轭,即

d(k 1) d(k),Ad(k 1) 0

然后从点X(k) 出发,沿方向d(k)求得f(X)的极小值点

X(k 1) , 即

f(X(k 1)) minf(X(k) d)

0

(k)

如此下去, 得到序列{X(k)}。不难求得 d(k),Ad(k 1) 0的解为

b AX(k),d(k) (k)

d (k 1)(k 1)

d,Ad

X

(k 1)

X

(k)

注意到d(k)的选取不唯一,我们可取

本文档介绍了线性方程组的最速下降法与共轭梯度法的原理和方法,并编程实现最速下降法与共轭梯度法等方法求解非线性方程组。

d(k) f(X(k)) k 1d(k 1)

由共轭的定义 d(k),Ad(k 1) 0可得:

r(k),Ad(k 1)

k 1 (k 1)(k 1)

d,Ad

共轭梯度法的计算过程如下: 第一步:取初始向量X(0), 计算

d(0) r(0) f(X(0)) b AX(0)

r(0),Ad(0)

0 (0)(0)

d,Ad

X(1) X(0) d(0)

0

第k 1步:计算

r(k) f(X(k)) b AX(k)

(k)(k 1)

r,Ad

k 1 d(k 1),Ad(k 1)

d(k) r(k) k 1d(k 1) (k)(k)

r,Ad k

d(k),Ad(k) (k 1)(k)(k)X X d 0

五、实验内容:

%最速下降法

function [x,k]=fastest(A,b,eps);

本文档介绍了线性方程组的最速下降法与共轭梯度法的原理和方法,并编程实现最速下降法与共轭梯度法等方法求解非线性方程组。

x0=zeros(size(b),1); x=x0; k=0; m=1000; tol=1; while tol>=eps 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>=m

disp('迭代次数太多,可能不收敛!'); return; end end x k

本文档介绍了线性方程组的最速下降法与共轭梯度法的原理和方法,并编程实现最速下降法与共轭梯度法等方法求解非线性方程组。

%共轭梯度法

function [k,x]=gong_e(A,b) esp=input('请输入允许误差esp='); 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 六、实验结果:

A=[5 2 0;6 4 1;1 2 5]; b=[10 18 -14]'; eps=1.0e-6; x =

-0.8750 7.1875 -5.5000 k = 60

数学实验“线性方程组的最速下降法与共轭梯度法解法”实验报告(内含matlab程.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
    ×
    二维码
    × 游客快捷下载通道(下载后可以自由复制和排版)
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
    × 常见问题(客服时间:周一到周五 9:30-18:00)