搜档网
当前位置:搜档网 › 第七章 特征值问题的迭代解法

第七章 特征值问题的迭代解法

MATLAB代码 解线性方程组的迭代法

解线性方程组的迭代法 1.rs里查森迭代法求线性方程组Ax=b的解 function[x,n]=rs(A,b,x0,eps,M) if(nargin==3) eps=1.0e-6;%eps表示迭代精度 M=10000;%M表示迭代步数的限制值elseif(nargin==4) M=10000; end I=eye(size(A)); n=0; x=x0; tol=1; %迭代过程 while(tol>eps) x=(I-A)*x0+b; n=n+1;%n为最终求出解时的迭代步数tol=norm(x-x0); x0=x; if(n>=M) disp('Warning:迭代次数太多,可能不收敛!'); return; end end 2.crs里查森参数迭代法求线性方程组Ax=b的解 function[x,n]=crs(A,b,x0,w,eps,M) if(nargin==4) eps=1.0e-6;%eps表示迭代精度 M=10000;%M表示迭代步数的限制值 elseif(nargin==5) M=10000; end I=eye(size(A)); n=0; x=x0; tol=1; %迭代过程 while(tol>eps) x=(I-w*A)*x0+w*b; n=n+1;%n为最终求出解时的迭代步数tol=norm(x-x0); x0=x;

if(n>=M) disp('Warning:迭代次数太多,可能不收敛!'); return; end end 3.grs里查森迭代法求线性方程组Ax=b的解 function[x,n]=grs(A,b,x0,W,eps,M) if(nargin==4) eps=1.0e-6;%eps表示迭代精度 M=10000;%M表示迭代步数的限制值 elseif(nargin==5) M=10000; end I=eye(size(A)); n=0; x=x0; tol=1;%前后两次迭代结果误差 %迭代过程 while(tol>eps) x=(I-W*A)*x0+W*b;%迭代公式 n=n+1;%n为最终求出解时的迭代步数tol=norm(x-x0); x0=x; if(n>=M) disp('Warning:迭代次数太多,可能不收敛!'); return; end end 4.jacobi雅可比迭代法求线性方程组Ax=b的解 function[x,n]=jacobi(A,b,x0,eps,varargin) if nargin==3 eps=1.0e-6; M=200; elseif nargin<3 error return elseif nargin==5 M=varargin{1}; end D=diag(diag(A));%求A的对角矩阵 L=-tril(A,-1);%求A的下三角阵

二分法、简单迭代法的matlab代码实现教学文案

实验一非线性方程的数值解法(一)信息与计算科学金融崔振威201002034031 一、实验目的: 熟悉二分法和简单迭代法的算法实现。 二、实验内容: 教材P40 2.1.5 三、实验要求 1 根据实验内容编写二分法和简单迭代法的算法实现 2 简单比较分析两种算法的误差 3 试构造不同的迭代格式,分析比较其收敛性 (一)、二分法程序: function ef=bisect(fx,xa,xb,n,delta) % fx是由方程转化的关于x的函数,有fx=0。 % xa 解区间上限 % xb 解区间下限 % n 最多循环步数,防止死循环。 %delta 为允许误差 x=xa;fa=eval(fx); x=xb;fb=eval(fx); disp(' [ n xa xb xc fc ]'); for i=1:n xc=(xa+xb)/2;x=xc;fc=eval(fx); X=[i,xa,xb,xc,fc]; disp(X), if fc*fa<0 xb=xc; else xa=xc; end if (xb-xa)

k=0; while abs(x-x0)>eps & k> fplot('[x^5-3*x^3-2*x^2+2]',[-3,3]);grid 得下图: 由上图可得知:方程在[-3,3]区间有根。 (2)、二分法输出结果 >> f='x^5-3*x^3-2*x^2+2' f = x^5-3*x^3-2*x^2+2 >> bisect(f,-3,3,20,10^(-12)) 2.0000 - 3.0000 0 -1.5000 0.0313

预处理子空间迭代法的一些基本概念

CG 算法的预处理技术:、 为什么要对A 进行预处理:其收敛速度依赖于对称正定阵A 的特征值分布 特征值如影响收敛性:特征值分布在较小的围,从而加速CG 的收敛性 特征值和特征向量的定义是什么?(见笔记本以及收藏的网页) 求解特征值和特征向量的法:Davidson 法:Davidson 法是用矩阵( D - θI)- 1( A - θI) 产生子空间,这里 D 是 A 的对角元所组成的对角矩阵。θ是由 Rayleigh-Ritz 过程所得到的A 的近似特征值。 什么是子空间法: Krylov 子空间叠代法是用来求解形如Ax=b 的程,A 是一个n*n 的矩阵,当n 充分大时,直接计算变得非常困难,而Krylov 法则巧妙地将其变为Kxi+1=Kxi+b-Axi 的迭代形式来求解。这里的K(来源于作者俄国人Nikolai Krylov 姓氏的首字母)是一个构造出来的接近于A 的矩阵,而迭代形式的算法的妙处在于,它将复杂问题化简为阶段性的易于计算的子步骤。 如取正定矩阵Mk 为: Span 是什么?:设 ,称它们的线性组合 为向量 的生成子空间,也称为由成的子空间。记为,也可以记为 什么是Jacobi 迭代法: 什么是G_S 迭代法:请见PPT 《迭代法求解线性程组》 什么是SOR 迭代法: 什么是收敛速度:称收敛速度。度,简 为迭代法的渐近收敛速)(ln )(:5定义B B R ρ-= 什么是可约矩阵与不可约矩阵?:不可约矩阵(irreducible matrix )和可约矩阵(reducible matrix )两个相对的概念。 定义1:对于 n 阶阵 A 而言,如果存在一个排列阵 P 使得 P'AP 为一个分块上三角阵,我们就称矩阵 A 是可约的;否则称矩阵 A 是不可约的。 定义2:对于 n 阶阵 A=(aij) 而言,如果指标集 {1,2,...,n} 能够被划分成两个不相交的非空指标集 J 和 K ,使得对任意的 j ∈J 和任意的 k ∈K 都有 ajk=0, 则称矩阵 A 是可约的;否则称矩阵 A 是不可约的。 n 阶矩阵A 是不可约的当且仅当与矩阵A 对应的有向图是强连通的。 什么是正交?:在三维向量空间中, 两个向量的积如果是零, 那么就说这两个向量是正交的。换句话说, 两个向量正交意味着它们是相互垂直的。若向量α与β正交,则记为α⊥β。 什么是正交矩阵?:如果:AA'=E (E 为单位矩阵,A'表示“矩阵A 的转置矩阵”。)或A ′A=E ,则n 阶实矩阵A 称为正交矩阵, 若A 为单位正交阵,则满足以下条件: 1) AT 是正交矩阵 2)(E 为单位矩阵) 3) A 的各行是单位向量且两两正交 4) A 的各列是单位向量且两两正交 5) (Ax,Ay)=(x,y) x,y ∈R 6) |A| = 1或-1 倒着写的A 和E 都是什么意思啊?:反着的E:谓词逻辑 存在量词 ? x: P(x) 意味着有至

线性方程组的迭代解法(Matlab)

第六章线性方程组的迭代解法 2015年12月27日17:12 迭代法是目前求解大规模稀疏线性方程组的主要方法之一。包括定常迭代法和不定常迭代法,定常迭代法的迭代矩阵通常保持不变,包括有雅可比迭代法(Jacobi)、高斯-塞德尔迭代法(Gauss-Seidel)、超松弛迭代法(SOR) 1.雅可比迭代法(Jacobi) A表示线性方程组的系数矩阵,D表示A的主对角部分,L表示下三角部分,U表示上三角部分。 A=D+L+U 要解的方程变为Dx+Lx+Ux=b x=D^(-1)(b-(L+U)x) 所以Jocabi方法如下: Matlab程序 function [x,iter] =jacobi(A,b,tol) D=diag(diag(A)); L=D-tril(A); U=D-triu(A); x=zeros(size(b)); for iter=1:500 x=D\(b+L*x+U*x); error=norm(b-A*x)/norm(b); if(error

数值计算(二分法、简单迭代法、Newton迭代法、弦截法(割线法、双点弦法))资料

本科生实验报告 实验课程数值计算方法 学院名称信息科学与技术学院 专业名称计算机科学与技术 学生姓名 学生学号 指导教师 实验地点 实验成绩 二〇一六年五月二〇一六年五月

实验一非线性方程求根 1.1问题描述 实验目的:掌握非线性方程求根的基本步骤及方法,。 实验内容:试分别用二分法、简单迭代法、Newton迭代法、弦截法(割线法、双点弦法),求x5-3x3+x-1= 0 在区间[-8,8]上的全部实根,误差限为10-6。 要求:讨论求解的全过程,对所用算法的局部收敛性,优缺点等作分析及比较, 第2章算法思想 2.1二分法 思想:在函数的单调有根区间内,将有根区间不断的二分,寻找方程的解。 步骤: 1.取中点mid=(x0+x1)/2 2.若f(mid)=0,则mid为方程的根,否则比较与两端的符号,若与f(x0) 异号,则根在[x0,mid]之间,否则在[mid,x1]之间。 3并重复上述步骤,直达达到精度要求,则mid为方程的近似解。

2.2 简单迭代法 思想:迭代法是一种逐次逼近的方法,它是固定公式反复校正跟的近似值,使之逐步精确,最后得到精度要求的结果。 步骤:1.构造迭代公式f(x),迭代公式必须是收敛的。 2.计算x1,x1=f(x0). 3.判断|x1-x0|是否满足精度要求,如不满足则重复上述步骤。 4.输出x1,即为方程的近似解。 f为迭代函数

2.3 Newton迭代法 思想:设r 是的根,选取作为r的初始近似值,过点 做曲线 的切线L,L 的方程为,求出L与x轴交点的 横坐标,称x 1 为r的一次近似值。过点做曲线 的切线,并求该切线与x 轴交点的横坐标,称为r的二次近似值。重复以上过程,得r 的近似值序列,其中,称为r 的 次近似值 步骤:1.计算原函数的导数f’(x);构造牛顿迭代公式 2.计算 ,若f’(x0)=0,退出计算,否则继续向下迭代。 3.若|x1-x0|满足精度要求,x1即为方程的近似解。

一类新的预条件Gauss-Seidel迭代法

一类新的预条件Gauss-Seidel迭代法 摘要:本文给出了一个新的预条件因子 P,证明了在非奇异M矩阵和严 t 格对角占优L矩阵下,该预条件不仅加快了Gauss—Seidel迭代法的收敛速度,而且说明了在该预条件下Gauss—Seidel迭代法的谱半径是单调下降的.最后再用相关的数值例子说明文中给出的预条件 P要优于文献中所给的预条件. t 关键词:预条件;Gauss—Seidel迭代法;谱半径;收敛性;收敛速度. A New Class of Preconditioned Gauss-Seidel Interative Method P. Abstract: This paper give a new preconditioner large sparse linear equations t 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.

线性方程组的迭代解法_赖志柱

第三章 线性方程组的迭代解法 教学目标: 1.了解线性代数方程组迭代解法的基本思想,向量序列和矩阵序列收敛的基本思想及相关定理; 2.掌握迭代法的构造思想、收敛性和速度(率)以及相关定理; 3.在理解Jacobi 迭代法和Gauss-Seidel 迭代法的原理的基础上,掌握两种迭代法的计算步骤和相互关系,并掌握两种迭代法的收敛性相关定理。 4.初步了解超松弛(SOR )迭代法的基本思想。 教学重点: 1.迭代法的原理、基本思想和序列收敛的概念; 2.迭代法的构造、收敛和速率; 3. Jacobi 迭代法和Gauss-Seidel 迭代法的原理、实现步骤和收敛性; 教学难点: 1.迭代法的构造、收敛和速率; 2. Jacobi 迭代法和Gauss-Seidel 迭代法的原理、实现步骤和收敛性; 线性方程组的直接解法,用于阶数不太高的线性方程组效果较好。实际工作中有的线性方程组的阶数很高,用直接法求解效果不是很好。而迭代法与直接法不同,它是通过从某些初始向量出发,用设计好的步骤逐次计算出近似解向量 ()k x ,从而得到向量序列(0)(1)(2){,,,}x x x 。一般(1)k x +的计算公式为 (1)()(1)()(,, ,),0,1, k k k k m k x F x x x k +--== 式中(1)k x +与()(1)(),,,k k k m x x x --有关,称为多步迭代法。若(1)k x +只与()k x 有关,即 (1)()(),0,1, k k k x F x k +== 则称为单步迭代法。现再设k F 是线性的,即 (1)(),0,1, k k k k x B x f k +=+= 其中n n k B R ?∈,称为单步线性迭代法,k B 称为迭代矩阵。若k B 和k f 与k 无关, 即 (1)(),0,1, k k x Bx f k +=+= 称为单步定常线性迭代法。 迭代法的基本思想是用逐次逼近的方法去求线性代数方程组的解。 迭代法的关键有: (1)如何构造迭代公式(1)()k k x Bx f +=+? (2)迭代法产生的向量序列的收敛条件是什么?收敛速度如何?

数字图像分割-迭代法讲解

目录 摘要 (2) 1 原理与实现 (3) 1.1图像分割的概述............................................................................. 错误!未定义书签。 1.2 阈值分割的基本原理 (2) 1.3 阈值分割方法的分类 (3) 2 程序设计 (6) 2.1 主程序............................................................................................ 错误!未定义书签。 2.2 OTSU .............................................................................................. 错误!未定义书签。 2.3 全局阈值........................................................................................ 错误!未定义书签。 2.4 迭代法............................................................................................ 错误!未定义书签。3结果与分析.. (11) 4 心得体会................................................................................................... 错误!未定义书签。参考文献....................................................................................................... 错误!未定义书签。

迭代解法的matlab实现

解线性方程组b AX =的迭代法是从初始解出发,根据设计好的步骤用逐次求出的近似解逼近精确解.在第三章中介绍的解线性方程组的直接方法一般适合于A 为低阶稠密矩阵(指n 不大且元多为非零)的情况,而在工程技术和科学计算中常会遇到大型稀疏矩阵(指n 很大且零元较多)的方程组,迭代法在计算和存贮两方面都适合后一种情况.由于迭代法是通过逐次迭代来逼近方程组的解,所以收敛性和收敛速度是构造迭代法时应该注意的问题.另外,因为不同的系数矩阵具有不同的性态,所以大多数迭代方法都具有一定的适用范围.有时,某种方法对于一类方程组迭代收敛,而对另一类方程组迭代时就发散.因此,我们应该学会针对具有不同性质的线性方程组构造不同的迭代. 4.1 迭代法和敛散性及其MATLAB 程序 4.1.2 迭代法敛散性的判别及其MATLAB 程序 根据定理4.1和谱半径定义,现提供一个名为pddpb.m 的M 文件,用于判别迭代公H=eig(B);mH=norm(H,inf); if mH>=1 disp('请注意:因为谱半径不小于1,所以迭代序列发散,谱半径mH 和B 的所 有的特征值H 如下:') else disp('请注意:因为谱半径小于1,所以迭代序列收敛,谱半径mH 和B 的所有 的特征值H 如下:') end mH 4.1.3 与迭代法有关的MATLAB 命令 (一) 提取(产生)对角矩阵和特征值 可以用表4–1的MATLAB 命令提取对角矩阵和特征值. (二) 提取(产生)上(下)三角形矩阵

可以用表4–2的MATLAB命令提取矩阵的上三角形矩阵和下三角形矩阵. (三)稀疏矩阵的处理 对稀疏矩阵在存贮和运算上的特殊处理,是MA TLAB进行大规模科学计算时的特点和优势之一.可以用表4–3的MATLAB命令,输入稀疏矩阵的非零元(零元不必输入),即可进行运算. 4.2 雅可比(Jacobi)迭代及其MATLAB程序 4.2.2 雅可比迭代的收敛性及其MATLAB程序 [n m]=size(A); for j=1:m a(j)=sum(abs(A(:,j)))-2*(abs(A(j,j))); end for i=1:n if a(i)>=0 disp('请注意:系数矩阵A不是严格对角占优的,此雅可比迭代不一定收敛') return end end if a(i)<0 disp('请注意:系数矩阵A是严格对角占优的,此方程组有唯一解,且雅可比迭代收敛') end 例4.2.2 用判别雅可比迭代收敛性的MATLAB主程序,判别由下列方程组的雅可比迭

非线性方程的简单迭代法和Steffensen迭代法

《数值计算方法》实验报告 实验名称:实验1 非线性方程的简单迭代法和Steffensen 迭代法 实验题目:分别用简单迭代法和Steffensen 迭代法求方程 010423=-+x x 在 [1, 2] 内的一个实根. 实验目的:理解并掌握简单迭代法和Steffensen 迭代法 基础理论:简单迭代法和Steffensen 迭代法 1).简单迭代法的原理:将一元非线性方程:0)(=x f 改写成等价方程:)(x x ρ= ,对此,从某个初始值x0开始,对应式)(x x ρ= 构成迭代公式 ,...1,0),(1==+k x x k k ρ ,这样就可以确定序列 {}k x (k=0,1,2…)。如果 {}k x 有极限 *lim x x k k =∞→ ,由式 ,...1,0),(1==+k x x k k ρ 两边取极限可得 )(**x x ρ= ,可知 * x 为方程0)(=x f 的近似解。 2)Steffensen 迭代法的原理: 通过把改进的Aitken 方法应用于根据不动点迭代所得到的线性收敛序列,将收敛速度加速到二阶。

()???? ?????+---===+k k k k k k k k k k k x y z x y x x y z x y 2) ()(21ρρ []x x x x x x x +---=)(2)(()()(2ρρρρψ 实验环境:操作系统:Windows 7; 实验平台:Turbo C++ 实验过程:写出算法→编写程序→调试运行程序→计算结果 1)简单迭代法的算法: Input:初始近似值x0,精度要求del,最大迭代次数N Output:近似解x 或失败信息 1. n ←1 2. While n ≤N do; 3. x ←f(x0); 4. if | x-x0|

数学实验“线性方程组的J迭代,GS迭代,SOR迭代解法”实验研究报告(内含matlab程序代码)

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

实验四实验报告 一、实验名称:线性方程组的J-迭代,GS-迭代,SOR-迭代。 二、实验目的:熟悉线性方程组的J-迭代,GS-迭代,SOR-迭代,SSOR-迭代方法,编程实现雅可比方法和高斯-赛德尔方法求解非线 性方程组121231 235210 64182514 x x x x x x x x +=??++=??++=-?的根,提高matlab 编程能力。 三、实验要求:已知线性方程矩阵,利用迭代思想编程求解线性方程组的解。 四、实验原理: 1、雅可比迭代法(J-迭代法): 线性方程组b X A =*,可以转变为: 迭代公式(0)(1)() k 0,1,2,....k k J X X B X f +???=+=?? 其中b M f U L M A M I B J 111),(---=+=-=,称J B 为求解 b X A =*的雅可比迭代法的迭代矩阵。以下给出雅可比迭代的 分量计算公式,令),....,()()(2)(1)(k n k k k X X X X =,由雅可比迭代公式有 b X U L MX k k ++=+) () 1()(,既有i n i j k i ij i j k i ij k i ij b X a X a X a +- -=∑∑+=-=+1 )(1 1 )() 1(,于 是,解b X A =*的雅可比迭代法的计算公式为

?? ???--==∑∑-=+=+)(1),....,(111) ()()1()0()0(2)0(1)0(i j n i j k j ij k j ij i ii k i T n X a X a b a X X X X X 2、 高斯-赛德尔迭代法(GS-迭代法): GS-迭代法可以看作是雅可比迭代法的一种改进,给出了 迭代公式:?? ???--==∑∑-=+=+++)(1) ,....,(111) 1()1()1()0()0(2)0(1)0(i j n i j k j ij k j ij i ii k i T n X a X a b a X X X X X 其余部分与雅克比迭代类似。 3、逐次超松弛迭代法(SOR-迭代法): 选取矩阵A 的下三角矩阵分量并赋予参数w ,将之作为分裂矩阵M ,)(1 wL D w M -= ,其中,w>0,为可选择的松弛因子,又(1)公式构造一个迭代法,其迭代矩阵为A wL D w I B s 1)(---≡从而得到解b X A =*的逐次超松弛迭代法。 (0)(1)() k 0,1,2,....k k s X X B X f +???=+=?? 其中: b wL D w f wU D w wL D B s 1 1)())1(()(---=+--= 由此,解b X A =*的SOR-迭代法的计算公式为 ?? ???--+==∑∑-=+=+++)(),....,(111)1()1()()1()0()0(2)0(1)0(i j n i j k j ij k j ij i ii k i k i T n X a X a b a w X X X X X X (2) 观察(2)式,可得结论:

迭代方法求解方程

1、将方程x5 +5x3– 2x + 1 = 0 改写成各种等价的形式进行迭代,观察迭代是否收敛,并给 出解释。 (1)画图: x1=-6:0.01:6; x2=-3:0.01:3; x3=-1:0.01:1; x4=-0.8:0.01:-0.75; y1=x1.^5 +5*x1.^3-2*x1+1; y2=x2.^5 +5*x2.^3-2*x2+1; y3=x3.^5 +5*x3.^3-2*x3+1; y4=x4.^5 +5*x4.^3-2*x4+1; subplot(2,2,1),plot(x1,y1) ,title('子图(1)') ,grid on, subplot(2,2,2),plot(x2,y2) ,title('子图(2)'),grid on, subplot(2,2,3),plot(x3,y3) ,title('子图(3)'),grid on, subplot(2,2,4),plot(x4,y4) ,title('子图(4)') ,grid on, 由图可知x 的初值应在(-0.78,0.76)之间。 (2)解:第一步构造迭代函数 x f x ()

53512 x x x ++= 1()x f x = 32121555x x x x =-+- 2()x f x = 32521x x x x =-+- 3()x f x = 第二步 利用加速迭代收敛法变形后: 5342 41012515x x x x x --+=-- 1()x f x = 62352435322 x x x x x x x --=++- 2()x f x = 2 5328561 x x x x x x -+=++- 3()x f x = 第三步 迭代 设定初值 00.75x =- 1()n n x f x +=n=0,1,2,3……… 用 MA TLAB 编程 x=-077;y=-0.77;z=-0.77; for k=1:30 x=(-4*x^5-10*x^3+1)/(2-5*x^4-15*x^2); y=(2*y^6+4*y^2-3*y)/(5*y^3+3*y^5+2*y-2); z=(8*z^2-2*z)/(z^5+5*z^3+6*z-1); x,y,z; end 迭代结果为: x = -61.5948 y = -0.7685

迭代解法

迭代解法 迭代解法非常适合求解大型系数矩阵的方程组。在数值分析中,迭代解法主要包括Jacobi 迭代法、Gauss-Serdel迭代法、超松弛迭代法和两步迭代法。 1.Jacobi迭代法 对于线性方程组Ax=b,如果A为非奇异方阵,即aii≠0(i=1,2,…,n),则可将A分解为A=D-L-U,其中D为对角阵,其元素为A的对角元素,L与U为A的下三角阵和上三角阵,于是Ax=b化为: x=D\(L+U)x+D\b 与之对应的迭代公式为: x(k+1)=D\(L+U)x(k)+D\b 这就是Jacobi迭代公式。如果序列{x(k+1)}收敛于x,则x必是方程Ax=b的解。 Jacobi迭代法的MATLAB函数文件Jacobi.m如下: function [y,n]=jacobi(A,b,x0,eps) if nargin==3 eps=1.0e-6; elseif nargin<3 error return end D=diag(diag(A)); %求A的对角矩阵 L=-tril(A,-1); %求A的下三角阵 U=-triu(A,1); %求A的上三角阵 B=D\(L+U); f=D\b; y=B*x0+f; n=1; %迭代次数 while norm(y-x0)>=eps x0=y; y=B*x0+f; n=n+1; end 例7-5 用Jacobi迭代法求解下列线性方程组。设迭代初值为0,迭代精度为10-6。 在命令中调用函数文件Jacobi.m,命令如下: A=[10,-1,0;-1,10,-2;0,-2,10]; b=[9,7,6]'; [x,n]=jacobi(A,b,[0,0,0]',1.0e-6) 2.Gauss-Serdel迭代法 在Jacobi迭代过程中,计算时,已经得到,不必再用,即原来的迭代公式Dx(k+1)=(L+U)x(k)+b可以改进为Dx(k+1)=Lx(k+1)+Ux(k)+b,于是得到: x(k+1)=(D-L)\Ux(k)+(D-L)\b 该式即为Gauss-Serdel迭代公式。和Jacobi迭代相比,Gauss-Serdel迭代用新分量代替旧

简单迭代法的代码实现

/*简单迭代法的代码实现*/ #include #include #include using namespace std; double e=2.718281818284; double f(double x){ return pow(e,-1*x); } void SimpleDiedai(double x,double d){ double a=x; double b=f(a); int k=0;//记录循环的次数 while(((a-b)>d) || ((a-b)<-1*d)){ cout<100){ cout<<"迭代失败!(可能是函数不收敛)"<>x>>d; SimpleDiedai (x,d); return 0; } /*牛顿迭代法的代码实现*/ #include #include #include using namespace std; double e=2.718281818284; double f(double x){ double a=pow(e,-1*x); return x-(x-a)/(1+a); }

void NewtonDiedai(double x,double d){ double a=x; double b=f(a); int k=0; //记录循环的次数 while(((a-b)>d) || ((a-b)<-1*d)){ cout<100){ cout<<"迭代失败!(可能是函数不收敛)"<>x>>d; NewtonDiedai(x,d); return 0; } /*雅可比算法的代码实现*/ #include #include #include #include using namespace std; //函数求数组中的最大值 double MaxOfList(vectorx){ double max=x[0]; int n=x.size(); for(int i=0;imax) max=x[i]; return max; } //雅可比迭代公式 void Jacobi(vector > A,vector B,int n){

数值分析求解非线性方程根的二分法、简单迭代法和牛顿迭代法

实验报告一:实验题目 一、 实验目的 掌握求解非线性方程根的二分法、简单迭代法和牛顿迭代法,并通过数值实验比较两种方法的收敛速度。 二、 实验内容 1、编写二分法、牛顿迭代法程序,并使用这两个程序计算02)(=-+=x e x x f 在[0, 1]区间的解,要求误差小于 4 10- ,比较两种方法收敛速度。 2、在利率问题中,若贷款额为20万元,月还款额为2160元,还期为10年,则年利率为多少?请使用牛顿迭代法求解。 3、由中子迁移理论,燃料棒的临界长度为下面方程的根,用牛顿迭 代法求这个方程的最小正根。 4、用牛顿法求方程 的根,精确至8位有效数字。比较 牛顿迭代法算单根和重根的收敛速度,并用改进的牛顿迭代法计算重根。 三、 实验程序 第1题: 02)(=-+=x e x x f 区间[0,1] 函数画图可得函数零点约为0.5。 画图函数: f un cti on Te st1() % f(x ) 示意图, f(x) = x + exp (x) - 2; f(x) = 0 r = 0:0.01:1; y = r + e xp(r) - 2 p lot(r, y); gri d on 二分法程序: 计算调用函数:[c,n um ]=bisec t(0,1,1e-4) fu ncti on [c,num ]=bisect (a,b,de lt a) %Inp ut –a,b 是取值区间范围 % -de lta 是允许误差 %O utput -c牛顿迭代法最后计算所得零点值 % -num 是迭代次数 ya = a + exp(a) - 2; yb = b + e xp(b) - 2;

相关主题