当前位置:文档之家› 方程的近似根与迭代法

方程的近似根与迭代法

方程的近似根与迭代法
方程的近似根与迭代法

第五讲方程的近似根与迭代法

实验目的:

1.理解求方程近似解的二分法、切线法.

2.了解迭代法的思想.

3.用matlab编二分法、切线法的程序.

实验内容:

1.学习matlab命令.

matlab的while-end循环语句和C语言的while循环语句类似,while循环的一般形式是:

while表达式

循环体

end

只要表达式的结果非零,循环体语句就重复执行.

例1.利用while循环解答:使n!是100位数的第一个n是几?解:n=1;

nj=1;

while nj<1e100

nj=nj*n;

n=n+1;

end

n=n-1

2.二分法求方程的近似根

求方程的近似解,可分两步来做:

(1)确定根的大致范围,就是确定一个区间[a,b],使所求的

根是位于这个区间内的唯一实根,这一步工作称为根的隔离,区间[a,b]称为所求实根的隔离区间.为了确定根的隔离区间,可以先画出y=f(x)的图形,然后从图上定出它与x轴交点的大概位置.

(2)以根的隔离区间的端点作为根的初始近似值,逐步改善

根的近似值的精确度,直至求得满足精确度要求的根的近似解.完成这一步工作有多种方法,这里介绍二分法和切线法.设f(x)在区间[a,b]上连续,f(a)f(b)<0,且方程f(x)=0在(a,b)内仅有一个实根,那么,[a,b]就是这个根的隔离区间.

取[a,b]的中点,计算,如果,则;如果

与同号,那么,取,,由即

知,,且;以为新的隔离区间,重复上

述做法,当时,可求得,且

如此重复n次,可得,且

,由此可知,如果以或作为的近似值,那么,

其误差小于.

例2.用二分法求方程的实根的近似值,

使误差不超过.

解:(1)求根的初始隔离区间.

在matlab工作区输入命令:

ezplot('x^3+1.1*x^2+0.9*x-1.4');grid on;

画出曲线图形.

通过观察,根应在-2和2之间,进一步画出该部分的图形: ezplot('x^3+1.1*x^2+0.9*x-1.4',[-2,2]);grid on;

更清楚看到根在0和1之间.

(2)编写程序如下:

f=input('输入函数f(x)=');

qujian=input('输入区间=');

err=input('请输入误差='); a=qujian(1);

b=qujian(2);

yc=1;

while((b-a)>err)&(yc~=0); c=(a+b)/2;

x=a;

ya=eval(f);

x=b;

yb=eval(f);

x=c;

yc=eval(f);

if ya*yc<0

b=c;

else

a=c;

end

x0=c

end

存为文件erfanfa.m

调用erfanfa的如下结果:

erfenfa

输入函数f(x)='x^3+1.1*x^2+0.9*x-1.4'输入区间=[0,1]

请输入误差=0.001

x0=

0.5000

x0=

0.7500

x0=

0.6250 x0= 0.6875 x0= 0.6563 x0= 0.6719 x0= 0.6641 x0= 0.6680 x0= 0.6699 x0= 0.6709

三.迭代法

迭代是一种逐步逼近的方法,已知方程f(x)=0的一个近似根后,通常使用某个固定公式反复校正根的近似值,使之逐

步精确化,一直到满足给定的精度要求为止.

具体做法是,把给定方程f(x)=0改写成等价形式

在根附近任取一点作为的近似值,把代入上式右端:

一般(时,).把作为根的新的近似值代入公式得.重复上述步骤,则有如下迭代公式:

()

其中称为迭代函数,并有如下迭代序列

如果迭代序列的极限存在,则称迭代过程收敛,显然

所以

如果迭代序列的极限不存在,则称迭代过程发散.

例3.求方程在x=1.5附近的根.解:将方程改写成下列形式:

由此得迭代公式

()

迭代初值.matlab程序如下:

x0=1.5;

fori=1:20

x0=(x0+1)^(1/3)

end

运行如下:

x0=

1.35720880829745 x0=

1.33086095880143 x0=

1.32588377423235 x0=

1.32493936340188 x0=

1.32476001129270 x0=

1.32472594522689 x0=

1.32471947453436 x0=

1.32471824544894

x0=

1.32471801198820 x0=

1.32471796764309 x0=

1.32471795921988 x0=

1.32471795761992 x0=

1.32471795731601 x0=

1.32471795725828 x0=

1.32471795724732 x0=

1.32471795724523

x0=

1.32471795724484

x0=

1.32471795724476

x0=

1.32471795724475

x0=

1.32471795724475

看到最后两项一样,即,可以认为,满足方程,即为所求根的近似值.

=1.32471795724475

上述迭代过程是收敛的.

如果将方程改写成如下等价形式

则有迭代公式

迭代初值仍取,则

=2.375,=12.39,...

迭代过程发散.

本例说明,迭代过程收敛是有一定条件的,发散的迭代过程是没有意义的.

四.切线法

设f(x)在[a,b]上具有二阶导数.f(a)f(b)<0,且及在[a,b]上保持定号,此时,方程f(x)=0在(a,b)内有唯一实根.[a,b]为根的一个隔离区间.如果在纵坐标与二阶导数同号的那个端点作切线,这切线与x轴交点的横坐标就比该端点更接近于方程的根.

取该端点为,则点处的切线方程为

时,解出与x轴的交点的横坐标

它比更接近于方程的根.它可以作为根的近似值.

在点作切线,可得根的近似值.如此下去,一般,在点

作切线,可得根的近似值

例4.用切线法求方程的实根的近似值,

使误差不超过.

解:[0,1]是根的一个隔离区间,在[0,1]上

f(1)>0与同号,所以取=1为迭代初始值.用m语言编出一般的程序如下:

f=input('输入函数:f(x)=');

n=input('请输入迭代次数:n=');

x0=input('请输入迭代初始值:x0=');

f1=diff(f);

fori=1:n

x=x0;

fx0=eval(f);

f1x0=eval(f1);

x0=x0-fx0/f1x0

end

存为qiexianfa.m,运行结果如下: qiexianfa

输入函数:f(x)='x^3+1.1*x^2+0.9*x-1.4' 请输入迭代次数:n=6

请输入迭代初始值:x0=1

x0=

0.73770491803279

x0=

0.67416881167393

x0=

0.67066757559451

x0=

0.67065731081384

x0=

0.67065731072581

x0=

0.67065731072581

普通计算器用计算器解方程的方法

用计算器解方程的方法 高中时发现一个用计算器来解方程的方法,前一阵用到计算器就想起来了,习惯性地谷歌之、百度之,居然没有发现类似的方法,于是就想把它写下来。 说明下对计算器的要求,只要是个带有"Ans"键的计算器就行,一般我们用的都是这种计算器。对于要解的方程,无论是超越方程还是高次方程,基本上都一样。 先来初步尝试一下。如果要解的方程是:exp(x)=-x+3 (注:exp(x) 是表示e的x次方) ,你要按的键就像下面一样: 0 = ln ( - Ans + 3 ) = = = = ?? 如你所知,Ans键有保存上一次计算结果的功能,所以第一条语句就是给Ans赋初值的意思,初值要选在解的附近,大概估计下就可以。第二条我没有打错,你在连续按了十几次"=" 后,是不是发现再按的时候屏幕上的数值不变了?这就是方程的解。看起来好像很晕,还是解释解释这样做的原因: 看见上面的图了吗?小赵(高一数学老师)曾经给我们介绍过一种有趣的现象,一般情况下两函数图象在交点附近有这种类似螺旋的收敛特性。灵感正是来自这里。是不是有点眉目了? 假设上面的图中两个图象分别是y=f(x) 和 y=g(x) ,而我们要解的方程是f(x)=g(x)。为了方便,这里把F(x)和G(x)分别记做f(x)和g(x)的反函数。于是这个方程可以等价变换为 x=F(g(x)) 和x=G(f(x)) 。这两个式子的右半边就是我们要输入计算器然后不断按"="的,当然,输入计算器的时候所有的x都用Ans代替。再看看上面的图,其实这两个式子中,一个的代表顺时针螺旋,另一个代表逆时针螺旋;一个能使螺旋收敛于交点,另一个会使螺旋扩张。不幸滴是,我们不知道哪个式子能使螺旋扩张,哪个能使收敛,所以两个式子都得试试,在我们按了若干次 "=" 后如果屏幕上数值稳定了,就说明这是收敛式,并且这个稳定的值就是解。比如前面的例子,方程可以变成 x=ln(-x+3) 和 x=-exp(x) +3 ,其中-exp(x)+3使值扩散,而ln(-x+3)使值收敛,就想一开始做的那样。 如果这个方程有好几个解呢?那你就使用不同的初值,一般来说,它总会收敛于离初值比较近的那个解。要注意的是,使方程各个解收敛的螺旋方向可能不同,也就是说对于每个解,你还是需要代两个式子。上面说的是理想情况,比如遇到x^5+x^2 = x^4-x+5 这样的方程,总不可能去求两边的反函数吧,累都累死。这时候,提取两边最能体现原本特征的一部分就可以了,比如这里就是x^5 和x^4 ,变换后的式子是 x=5次根号下的(x^4-x+5-x^2) 和 x=4次根号的(x^5+x^2+x-5) 。 最后不得不说,比如x=-x+3 这种情况,这种方法无效。

(完整版)小学五年级解方程计算题练习题

一、解方程专题 7+=19 X+120=176 58+X=90 X+150=290 79.4+X=95.5 2X+55=129 7 X=63 X× 9=4.5 4.4X=444 X × 4.5=90 X × 5=100 6.2X=124 X-6=19 X-3.3=8.9 X-25.8=95.4 X-54.3=100 X-77=275 X-77=144 X ÷7=9 X÷4.4=10

X÷78=10.5 X÷2.5=100 X÷3=33.3 X÷2.2=8 9-X=4.5 73.2-X=52.5 87-X=22 66-X=32.3 77-X=21.9 99-X=61.9 3.3÷X=0.3 8.8÷X=4.4 9÷X=0.03 7÷X=0.001 56÷X=5 39÷X=3 3×(X-4)=46 (8+X)÷5=15 (X+5) ÷3=16 15÷(X+0.5)=1.5

12X+8X=40 12X-8X=40 12X+X=26 X+ 0.5X=6 X-0.2X=32 1.3X+X=26 3X+5X=48 14X-8X=12 6×5+2X=44 20X-50=50 28+6X=88 32-22X=10 24-3X=3 10X×(5+1)=60 99X=100-X X+3=18 X-6=12 56-2X=20 4X+2=6 X+32=76

3X+6=18 16+8X=40 2X-8=8 4X-3×9=29 8X-3X=105 X-6×5=42 X+5=7 2X+3=10 X-0.8X=6 12X+8X=4.8 7(X-2)=49 4×8+2X=36 (X-2)÷3=7 X÷5+9=21 (200-X)÷5=30 48-27+5X=31 3X-8=16 3X+9=27 5.3+7X=7.4 3X÷5=4.8

牛顿迭代法

牛顿迭代法 李保洋 数学科学学院信息与计算科学学号:060424067 指导老师:苏孟龙 摘要:牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法,即牛顿迭代法.迭代法是一种不断用变量的旧值递推新值的过程.跟迭代法相对应的是直接法或者称为一次解法,即一次性解决问题.迭代法又分为精确迭代和近似迭代.“牛顿迭代法”属于近似迭代法,本文主要讨论的是牛顿迭代法,方法本身的发现和演变和修正过程,避免二阶导数计算的Newton迭代法的一个改进,并与中国古代的算法,即盈不足术,与牛顿迭代算法的比较. 关键词:Newton迭代算法;近似求解;收敛阶;数值试验;中国古代数学; 九章算术;Duffing方程;非线性方程;收敛速度;渐进性 0 引言: 迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法或者称为一次解法,即一次性解决问题.迭代法又分为精确迭代和近似迭代.“二分法”和“牛顿迭代法”属于近似迭代法. 迭代算法是用计算机解决问题的一种基本方法.它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值.具体使用迭代法求根时应注意以下两种可能发生的情况: (1)如果方程无解,算法求出的近似根序列就不会收敛,迭代过程会变成死循环,因此在使用迭代算法前应先考察方程是否有解,并在程序中对迭代的次数给予限制. (2)方程虽然有解,但迭代公式选择不当,或迭代的初始近似根选择不合理,也会导致迭代失败. 所以利用迭代算法解决问题,需要做好以下三个方面的工作: 1、确定迭代变量.在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量. 2、建立迭代关系式.所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系).迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成. 3、对迭代过程进行控制,在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题.不能让迭代过程无休止地重复执行下去.迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定.对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件. 1牛顿迭代法:

实验三求代数方程的近似根

实验三求代数方程的近似根(解) 一、问题背景和实验目的 二、相关函数(命令)及简介 三、实验容 四、自己动手 一、问题背景和实验目的 求代数方程的根是最常见的数学问题之一(这里称为代数方程,主要是想和后面的微分方程区别开.为简明起见,在本实验的以下叙述中,把代数 方程简称为方程),当是一次多项式时,称为线性方程,否则称之为非线性方程. 当是非线性方程时,由于的多样性,尚无一般的解析解法可使用,但如果对任意的精度要求,能求出方程的近似根,则可以认为求根的计算问题已经解决,至少能满足实际要求. 本实验介绍一些求方程实根的近似值的有效方法,要求在使用这些方法前先确定求根区间,或给出某根的近似值.在实际问题抽象出的数学模型中, 可以根据物理背景确定;也可根据的草图等方法确定,还可用对分法、迭代法以及牛顿切线法大致确定根的分布情况. 通过本实验希望你能: 1. 了解对分法、迭代法、牛顿切线法求方程近似根的基本过程; 2. 求代数方程(组)的解. 二、相关函数(命令)及简介 1.abs( ):求绝对值函数. 2.diff(f):对独立变量求微分,f 为符号表达式. diff(f, 'a'):对变量a求微分,f 为符号表达式. diff(f, 'a', n):对变量 a 求 n 次微分,f 为符号表达式.例如: syms x t diff(sin(x^2)*t^6, 't', 6) ans= 720*sin(x^2) 3.roots([c(1), c(2), …, c(n+1)]):求解多项式 的所有根.例如: 求解:. p = [1 -6 -72 -27]; r = roots(p) r = 12.1229

小学五年级解方程计算步骤

小学五年级解方程计算步骤 小学阶段解方程计算题一般有以下几个步骤,大家要认真把这几个步骤记住,看到相关题型就按照下面的方法去做就可以了。 一.移项 所谓移项就是把一个数从等号的一边移到等号的另一边去。注意,加减法移项和乘除法移项不一样,移项规则:当把一个数从等号的一边移到另一边去的时候,要把这个数原来前面的运算符号改成和它相反的运算符号,比如“+”变成“-”,或是“×”变成“÷” 请看例题: 加减法移项: x + 4 = 9 x-8=19 x=9-4 x=19+8 x=5 x=27 乘除法移项: 3x=27 x÷6=8 x=27÷3 x=8×6 x=9 x=48 1.常规题目,第一步,把所有跟未知数不能直接运算的数字,转移到与未知数相反的等号 那一边。比如: 3x - 4 = 8 5x + 9 = 24 3x=8+4 5x=24 - 9 3x=12 5x=15 x=4 x=3 2.第二种情况请记住,当未知数前面出现“-”或是“÷”的时候,要把这两个符号变成 “+”或是“×”,具体如何改变请看下面例题: 20 – 3x=2 20=2 + 3x -----(注意:也就是前面提过的移项问题,改变符号在方程里面就是移项) 20-2=3x 18=3x x=6 36÷4x = 3 36=3×4x ----(注意:也就是前面提过的移项问题,改变符号在方程里面就是移项) 36=12x x=3

3.未知数在小括号里面的情况,注意,这种情况要分两种,第一种是根据乘法分配律先把 小括号去掉 例如:3(3x+4) = 57 9x + 12=57 9x=57-12 9x=45 x=5 第二种情况就是,要看括号前面的那个数跟等号后面的那个数是否倍数关系,如果是倍数关系,可以互相除一下,当然,用这一种方法的前提就是等号另一边的数只有一个数字,如果有多个,则先要计算成一个。 例如 3(3x+4) = 57 2(4x - 6) = 30+9-3 3x+4 = 57÷3 2(4x-6) = 36 3x+4 = 19 4x – 6=36÷2 3x = 19-4 4x-6=18 3x = 15 4x=18+6 x = 5 4x=24 x=6 4.第四种情况就是未知数在等号的两边都有,这种情况就是要把未知数都移项到一边,把 其它的数字移项到另一边,具体规则,如果两个未知数前面的运算符号不一样,要把未知数前面是“-”的移到“+”这一边来,如果两个未知数前面的运算符号一样,则要把小一点的未知数移到大一点的未知数那一边去。 例如: 3x +12 = 48 – 6x 3x + 48 = 8 + 5x 3x + 6x = 48-12 48-8 = 5x – 3x 9x = 36 40 = 2x x = 4 x = 20

牛顿法求非线性方程的根

学科前沿讲座论文 班级:工程力学13-1班姓名:陆树飞

学号:02130827

牛顿法求非线性方程的根 一 实验目的 (1)用牛顿迭代法求解方程的根 (2)了解迭代法的原理,了解迭代速度跟什么有关 题目:用Newton 法计算下列方程 (1) 013=--x x , 初值分别为10=x ,7.00=x ,5.00=x ; (2) 32943892940x x x +-+= 其三个根分别为1,3,98-。当选择初值02x =时 给出结果并分析现象,当6510ε-=?,迭代停止。 二 数学原理 对于方程f(x)=0,如果f(x)是线性函数,则它的求根是很容易的。牛顿迭代法实质上是一种线性化方法,其基本思想是将非线性方程f(x)=0逐步归结为某种线性方程来求解。 设已知方程f(x)=0有近似根x k (假定k f'(x )0≠) ,将函数f(x)在点x k 进行泰勒展开,有 k k k f(x)f(x )+f'(x )(x-x )+≈??? 于是方程f(x)=0可近似的表示为 k k k f(x )+f'(x )(x-x )=0 这是个线性方程,记其根为x k+1,则x k+1的计算公式为 k+1k ()x =x -'() k k f x f x ,k=0,1,2,… 这就是牛顿迭代法。

三 程序设计 (1)对于310x x --=,按照上述数学原理,编制的程序如下 program newton implicit none real :: x(0:50),fx(0:50),f1x(0:50)!分别为自变量x ,函数f(x)和一阶导数f1(x) integer :: k write(*,*) "x(0)=" read(*,*) x(0) !输入变量:初始值x(0) open(10,file='1.txt') do k=1,50,1 fx(k)=x(k-1)**3-x(k-1)-1 f1x(k)=3*x(k-1)**2-1 x(k)=x(k-1)-fx(k)/f1x(k) !牛顿法 write(*,'(I3,1x,f11.6)') k,x(k) !输出变量:迭代次数k 及x 的值 write(10,'(I3,1x,f11.6)') k,x(k) if(abs(x(k)-x(k-1))<1e-6) exit !终止迭代条件 end do stop end (2)对于32943892940x x x +-+=,按照上述数学原理,编制的程序如下 program newton implicit none

非线性方程组迭代法

实验二 非线性方程的数值解法 1.1 实验内容和要求 在科学研究和工程技术中大量的实际问题是非线性的,求非线性方程()0f x =满足一定精确度的近似根是工程计算与科学研究中诸多领域经常需要解决的问题。 实验目的:进一步理解掌握非线性方程求根的简单迭代法、埃特金Aitken 加速法、牛顿迭代法的思想和构造。 实验内容: 求方程2320x x x e -+-=的实根。 要求: (1)设计一种简单迭代法,要使迭代序列收敛,然后再用埃特金Aitken 加速迭代,计算到-8110k k x x --<为止。 (2)用牛顿迭代法,同样计算到-8110k k x x --< (3)输出迭代初值、迭代次数k 及各次迭代值,并比较算法的优劣。 1.2 算法描述 普通迭代法计算步骤: (1)给定初始近似值0x ,eps 为精确度。 (2)用迭代公式 进行迭代,直到-8110k k x x --<为止。 埃特金Aitken 加速迭代法计算步骤: (1)将()0f x =化成同解方程()x x ?= ()k k y x ?= ,()k k z y ?= 21()2k k k k k k k y x x x z y x +-=--+=22k k k k k k x z y z y x --+ (2)计算到-8110k k x x --<为止。 牛顿法计算步骤:

给定初始近似值0x ,1ε为根的容许误差,2ε为()f x 的容许误差,N 为迭代 次数的容许值。 计算00(),()f x f x ' (1)如果0()0f x '=或者迭代次数大于N ,则算法失败,结束;否则执行(2) (2)按公式0100()() f x x x f x =-'迭代一次,得到新的近似值1x ,计算11(),()f x f x ' (3)如果101x x ε-<或者12()f x ε<,则迭代终止,以1x 作为所求的根,结 束;否则执行(4) (4)以111(,(),())x f x f x '代替000(,(),())x f x f x ',转步骤(1)继续迭代。 1.3程序代码清单

解方程计算题

解方程计算题 2x+8=16 x÷5=10 x+7x=8 9x-3x=6 6x-8=4 5x+x=9 x-8=6x 4÷5x=20 2x-6=12 2x+8=16 x÷5=10 x+7x=8 9x-3x=6 6x-8=4 5x+x=9 x-8=6x 4÷5x=20 2x-6=12 7x+7=14 6x-6=0 5x+6=11 2x-8=10 1÷2x-8=4 x-5÷6=7

3x+7=28 3x-7=26 9x-x=16 24x+x=50 6÷7x-8=4 3x-8=30 6x+6=12 3x-3=1 5x-3x=4 2x+16=19 5x+8=19 14-6x=8 15+6x=27 5-8x=4 7x+8=15 7x+7=14 6x-6=0 5x+6=11 2x-8=10 2x-8=4 x-5÷6=7 3x+7=28 3x-7=26 9x-x=16 24x+x=50 6÷7x-8=4 3x-8=30 6x+6=12 3x-3=1 5x-3x=4 2x+16=19 5x+8=19 14-6x=8 15+6x=27 5-8x=4 7x+8=15 9-2x=1 4+5x=9 10-x=8 8x+9=17 9+6x=14

x+9x=4+7 2x+9=17 8-4x=6 6x-7=12 7x-9=8 x-56=1 8-7x=1 x-30=12 6x-21=21 6x-3=6 9x=18 4x-18=13 5x+9=11 6-2x=11 x+4+8=23 7x-12=8 = 15 5X-2X=18 ×2= x 26×= 2x ×16―16×=4x -X= ÷X=0. 3 X÷= x+13=33 3 - 5x=80 6x=5 4 -= 9 +4x =40 -+= -= 12 -4x=20 1/3 x+5/6 x= 12 x+34 x=1 18x-14 x= 12

用牛顿迭代法求近似根

用牛顿迭代法求近似根

————————————————————————————————作者:————————————————————————————————日期:

第四题 题目:用Newton 法求方程在 74 28140x x -+= (0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001). 解:此题是用牛顿迭代法求解近似根的问题 1. Newton 迭代法的算法公式及应用条件: 设函数在有限区间[a,b]上二阶导数存在,且满足条件 ⅰ. ()()0f a f b <; ⅱ. ()''f x 在区间[a,b]上不变号; ⅲ. ()'0f x ≠; ⅳ. ()()'f c f c b a ≤-,其中c 是a,b 中使()()''min(,)f a f b 达到的一个. 则对任意初始近似值0[,]x a b ∈,由Newton 迭代过程 ()()() 1'k k k k k f x x x x f x +=Φ=-,k=0,1,2… 所生成的迭代序列{ k x }平方收敛于方程()0f x =在区间[a,b]上的唯一解а. 对本题: )9.1()9.1(0 )8(4233642)(0 )16(71127)(0 )9.1(,0)1.0(,1428)(3225333647>?''<-=-=''<-=-='<>+-=f f x x x x x f x x x x x f f f x x x f Θ 故以1.9为起点 ?? ???='-=+9.1)()(01x x f x f x x k k k k 2. 程序编写 #include #include void main() { double x0,x=1.9; do

方程组的简单迭代法

2013-2014(1)专业课程实践论文题目:方程组的简单迭代法

一、算法理论 1.解线性方程组的两种方法: 直接法: 经过有限次运算后可求得方程组精确解的方法(不计舍入误差!) 迭代法:从解的某个近似值出发,通过构造一个无穷序列去逼近精确解的方法。 2.迭代法主要研究的问题: 1)迭代格式的构造; 2)迭代的收敛性分析; 3)收敛速度分析; 4)复杂性分析;(计算工作量) 5)初始值选择。 3.迭代法的原理: Ax=中系数矩阵的主对角线移到一边并将其系将原线性方程组b 数化为一,然后在给定迭代初值的情况下通过迭代的方法求解线性方程组的值。 4.迭代法的基本思想: Ax=(1)将线性方程组b (其中A为n阶非奇异矩阵,b为n维向量)

改写成等价形式 f Bx x += (2) 构造简单迭代格式: j k j k j f Bx x +=+)( )1( )(,,...2,1,0=k (3) 亦即 j k j k j f Bx x +=+)( )1( )( , ,...,,...,n;k ,j 1021== (4) 可算出线性方程组(1)的近似解序列:))1(0,...,k x x x ()( 我们把用公式(3)进行迭代求解的方法称为简单法,并称式(3) 为简单迭代式,矩阵B 称为迭代矩阵,)(0x 称为初始近似解,) (k x 称为k 次近似解,k 称为迭代次数。

#include #include #include using namespace std; #define kk 50 //定义最大方程元数 int n,i,c,j,hh,gg,mm; double A[kk][kk],x[kk][kk],b[kk],y[kk],a[kk],z[kk],m,nn,d,e=1,w,fff ; int main() { cout<<"输入的方程元数"<>n; cout<<"请输入方程系数矩阵:"<>A[i][j]; cout<<"请输入右边向量:"<>b[i]; cout<<"输入你想要的迭代精度(建议1e-5以上)!"<>fff; cout<<"输入最大迭代次数(建议300次以上)!"<>mm; //计算出迭代矩阵 for(i=0;i

线性方程组的迭代法及程序实现

线性方程组的迭代法及程序实现 学校代码:11517 学号:200810111217 HENAN INSTITUTE OF ENGINEERING 毕业论文 题目线性方程组的迭代法及程序实现 学生姓名 专业班级 学号 系 (部)数理科学系 指导教师职称 完成时间 2012年5月20日河南工程学院 毕业设计(论文)任务书 题目:线性方程组的迭代法及程序实现专业:信息与计算科学学号 : 姓名一、主要内容: 通过本课题的研究,学会如何运用有限元方法来解决线性代数方程组问题,特别是Gaussie-Seidel迭代法和Jacobi迭代法来求解线性方程组。进一步学会迭代方法的数学思想,并对程序代码进行解析与改进,这对于我们以后学习和研究实际问题具有重要的意义。本课题运用所学的数学专业知识来研究,有助于我们进一步掌握大学数学方面的知识,特别是迭代方法。通过这个课题的研究,我进一步掌握了迭代方法的思想,以及程序的解析与改进,对于今后类似实际问题的解决具有重要的意义。

二、基本要求: 学会编写规范论文,独立自主完成。 运用所学知识发现问题并分析、解决。 3.通过对相关资料的收集、整理,最终形成一篇具有自己观点的学术论文,以期能对线性方程组迭代法的研究发展有一定的实践指导意义。 4.在毕业论文工作中强化英语、计算机应用能力。 完成期限: 2012年月指导教师签名:专业负责人签名: 年月日 目录 中文摘要....................................................................................Ⅰ英文摘要 (Ⅱ) 1 综述 1 2 经典迭代法概述 3 2.1 Jacobi迭代法 3 2.2 Gauss?Seidel迭代法 4 2.3 SOR(successive over relaxation)迭代法 4 2.4 SSOR迭代法 5 2.5 收敛性分析5 2. 6 数值试验 6 3 matlab实现的两个例题8 3.1 例1 迭代法的收敛速度8 3.2 例 2 SOR迭代法松弛因子的选取 12致谢16参考文献17附录19

C语言编程_牛顿迭代法求方程2

牛顿迭代公式 设r 是f(x) = 0的根,选取x0作为r 初始近似值,过点(x0,f(x0)) f(x)的切线L ,L 的方程为y = f(x0)+f'(x0)(x-x0),求出L 与x 轴交点的横坐标 x1 = x0-f(x0)/f'(x0),称x1为r 的一次近似值。过点(x1,f(x1))做曲线y = f(x)的切线,并求该切线与x 轴交点的横坐标 x2 = x1-f(x1)/f'(x1),称x2为r 的二次近似值。重复以上过程,得r 的近似值序列,其中x(n+1)=x(n)-f(x(n))/f'(x(n)),称为r 的n+1次近似值,上式称为牛顿迭代公式。 解非线性方程 f(x)=0似方法。把f(x)在 x0 f(x) = f(x0)+(x -x0)f'(x0)+(x -x0)^2*f''(x0)/2! +… 取其线性部分,作为非线性方程f(x) = 0的近似方程,即泰勒展开的前两项,则有f(x0)+f'(x0)(x -x0)-f(x)=0 设f'(x0)≠0则其解为x1=x0-f(x0)/f'(x0) 这样,得到牛顿法的一个迭代序列:x(n+1)=x(n)-f(x(n))/f'(x(n))。 牛顿迭代法又称牛顿切线法,它采用以下方法求根:先任意设定一个与真实的根接近的值x 0作为第一个近似根,由x 0求出f(x 0),过(x 0,f(x 0))点做f(x)的切线,交x 轴于x 1,把它作为第二次近似根,再由x 1求出f(x 1),再过(x 1,f(x 1))点做f(x)的切线,交x 轴于x 2,再求出f(x 2),再作切线……如此继续下去,直到足够接近真正的x *为止。 ) ()()()(0' 0010 100' x f x f x x x x x f x f - =-= 因此, 就是牛顿迭代公式。 例1 用牛顿迭代法求方程2x 3-4x 2 +3x-6=0在1.5附近的根。 本题中,f(x)= 2x 3-4x 2+3x-6=((2x-4)x+3)x-6 f ’(x)= 6x 2-8x+3=(6x-8)x+3 #include "stdio.h"

第六章解线性方程组的迭代法

第五章 解线性方程组的迭代法 本章主要内容: 迭代法收敛定义,矩阵序列收敛定义,迭代法基本定理,雅可比迭代法,高斯-塞德尔迭代法,系数矩阵为严格对角占优阵的采用雅可比迭代、高斯-塞德尔迭代的收敛性。 教学目的及要求: 使学生了解迭代法收敛定义,迭代法基本定理,掌握雅可比迭代法、高斯-塞德尔迭代法。 教学重点: 雅可比迭代法,高斯-塞德尔迭代法。 教学难点: 迭代法基本定理的证明以及作用。 教学方法及手段: 应用严格的高等代数、数学分析知识,完整地证明迭代法基本定理,讲清雅可比迭代法与高斯-塞德尔迭代法的关系,介绍雅可比迭代法与高斯-塞德尔迭代法在编程中的具体实现方法。 在实验教学中,通过一个具体实例,让学生掌握雅可比迭代法与高斯-塞德尔迭代法的具体实现,并能通过数值计算实验,揭示高斯-塞德尔迭代法是对雅可比迭代法的一种改进这一事实。 教学时间: 本章的教学的讲授时间为6学时,实验学时4学时。 教学内容: 一 迭代法定义 对于给定的线性方程组x Bx f =+,设它有唯一解*x ,则 **x Bx f =+ (6.1) 又设(0)x 为任取的初始向量,按下述公式构造向量序列 (1)(),0,1,2, k k x Bx f k +=+= (6.2) 这种逐步代入求近似解的方法称为迭代法(这里B 与f 与k 无关)。如果() lim k k x →∞ 存在 (记为*x ),称此迭代法收敛,显然* x 就是方程组的解,否则称此迭代法发散。 迭代法求方程近似解的关键是是讨论由(6.1)式所构造出来的向量序列() {} k x 是否收敛。为此,我们引入误差向量 (1)(1)*k k x x ε++=- 将(6.2)式与(6.1)式相减,我们可得 (1)*()*()k k x x B x x +-=- (1)(),0,1,2, k k B k εε+== 递推下去,得 ()(1)2(2)(0)k k k k B B x B x εε--====

Newton迭代法求解非线性方程

Newton迭代法求解非 线性方程

一、 Newton 迭代法概述 构造迭代函数的一条重要途径是用近似方程来代替原方程去求根。因此,如果能将非线性方程f (x )=0用线性方程去代替,那么,求近似根问题就很容易解决,而且十分方便。牛顿(Newton)法就是一种将非线性方程线化的一种方法。 设k x 是方程f (x )=0的一个近似根,把如果)(x f 在k x 处作一阶Taylor 展开,即: )x x )(x ('f )x (f )x (f k k k -+≈ (1-1) 于是我们得到如下近似方程: 0)x x )(x ('f )x (f k k k =-+ (1-2) 设0)('≠k x f ,则方程的解为: x ?=x k +f (x k ) f (x k )? (1-3) 取x ~作为原方程的新近似根1+k x ,即令: ) x ('f ) x (f x x k k k 1k -=+, k=0,1,2,… (1-4) 上式称为牛顿迭代格式。用牛顿迭代格式求方程的根的方法就称为牛顿迭代法,简称牛顿法。 牛顿法具有明显的几何意义。方程: )x x )(x ('f )x (f y k k k -+= (1-5) 是曲线)x (f y =上点))x (f ,x (k k 处的切线方程。迭代格式(1-4)就是用切线式(1-5)的零点来代替曲线的零点。正因为如此,牛顿法也称为切线法。 牛顿迭代法对单根至少是二阶局部收敛的,而对于重根是一阶局部收敛的。一般来说,牛顿法对初值0x 的要求较高,初值足够靠近*x 时才能保证收敛。若

要保证初值在较大范围内收敛,则需对)x (f 加一些条件。如果所加的条件不满足,而导致牛顿法不收敛时,则需对牛顿法作一些改时,即可以采用下面的迭代格式: ) x ('f ) x (f x x k k k 1k λ -=+, ?=,2,1,0k (1-6) 上式中,10<λ<,称为下山因子。因此,用这种方法求方程的根,也称为牛顿下山法。 牛顿法对单根收敛速度快,但每迭代一次,除需计算)x (f k 之外,还要计算 )x ('f k 的值。如果)x (f 比较复杂,计算)x ('f k 的工作量就可能比较大。为了避免计算导数值,我们可用差商来代替导数。通常用如下几种方法: 1. 割线法 如果用 1 k k 1k k x x ) x (f )x (f ----代替)x ('f k ,则得到割线法的迭代格式为: )x (f ) x (f )x (f x x x x k 1k k 1 k k k 1k --+---= (1-7) 2. 拟牛顿法 如果用 ) x (f )) x (f x (f )x (f k 1k k k ---代替)x ('f k ,则得到拟牛顿法的迭代格式为: )) x (f x (f )x (f ) x (f x x 1k k k k 2k 1k -+--- = (1-8) 3. Steffenson 法 如果用 ) x (f ) x (f ))x (f x (f k k k k -+代替)x ('f k ,则得到拟牛顿法的迭代格式为: ) x (f ))x (f x (f ) x (f x x k k k k 2k 1 k -+- =+

数值计算_第4章 解线性方程组的迭代法

第4章解线性方程组的迭代法 用迭代法求解线性方程组与第4章非线性方程求根的方法相似,对方程组进行等价变换,构造同解方程组(对可构造各种等价方程组, 如分解,可逆,则由得到),以此构造迭代关系式 (4.1) 任取初始向量,代入迭代式中,经计算得到迭代序列。 若迭代序列收敛,设的极限为,对迭代式两边取极限 即是方程组的解,此时称迭代法收敛,否则称迭代法发散。我们将看到,不同于非线性方程的迭代方法,解线性方程组的迭代收敛与否完全决定于迭代矩阵的性质,与迭代初始值的选取无关。迭代法的优点是占有存储空间少,程序实现简单,尤其适用于大型稀疏矩阵;不尽人意之处是要面对判断迭代是否收敛和收敛速度的问题。 可以证明迭代矩阵的与谱半径是迭代收敛的充分必要条件,其中是矩阵的特征根。事实上,若为方程组的解,则有 再由迭代式可得到

由线性代数定理,的充分必要条件。 因此对迭代法(4.1)的收敛性有以下两个定理成立。 定理4.1迭代法收敛的充要条件是。 定理4.2迭代法收敛的充要条件是迭代矩阵的谱半径 因此,称谱半径小于1的矩阵为收敛矩阵。计算矩阵的谱半径,需要求解矩阵的特征值才能得到,通常这是较为繁重的工作。但是可以通过计算矩阵的范数等方法简化判断收敛的 工作。前面已经提到过,若||A||p矩阵的范数,则总有。因此,若,则必为收敛矩阵。计算矩阵的1范数和范数的方法比较简单,其中 于是,只要迭代矩阵满足或,就可以判断迭代序列 是收敛的。 要注意的是,当或时,可以有,因此不能判断迭代序列发散。

在计算中当相邻两次的向量误差的某种范数小于给定精度时,则停止迭代计算,视为方程组的近似解(有关范数的详细定义请看3.3节。) 4.1雅可比(Jacobi)迭代法 4.1.1 雅可比迭代格式 雅可比迭代计算 元线性方程组 (4.2) 写成矩阵形式为。若将式(4.2)中每个方程的留在方程左边,其余各项移到方程右边;方程两边除以则得到下列同解方程组: 记,构造迭代形式

第七讲 MATLAB中求方程的近似根(解)

第七讲MATLAB中求方程的近似根(解) 教学目的:学习matlab中求根命令,了解代数方程求根求解的四种方法,即图解法、准解析法、数值方法以及迭代方法,掌握对分法、迭代法、牛顿切法线求方程近似根的基本过程;掌握求代数方程(组)的解的求解命令. 教学重点:求方程近似解的几种迭代方法,代数方程(组)的解的求解命令的使用方法.利用所学的编程知识,结合具体的实例,编制程序进行近似求根.掌握相关的代数方程(组)的求解命令及使用技巧. 教学难点:方程的近似求解和非线性方程(组)的求解. 一、问题背景和实验目的 求代数方程0 x f的根是最常见的数学问题之一(这里称为代数方程,主要是想和 (= ) 后面的微分方程区别开.为简明起见,在本实验的以下叙述中,把代数方程简称为方程),当) f为线性方程,否则称之为非线性方程.(x (= x ) f是一次多项式时,称0 当0 (x f的多样性,尚无一般的解析解法可使用,但如f是非线性方程时,由于) ) x (= 果对任意的精度要求,能求出方程的近似根,则可以认为求根的计算问题已经解决,至少能满足实际要求.同时对于多未知量非线性方程(组)而言,简单的迭代法也是可以做出来的,但在这里我们介绍相关的命令来求解,不用迭代方法求解. 通过本实验,达到下面目的: 1. 了解对分法、迭代法、牛顿切线法求方程近似根的基本过程; 2. 求代数方程(组)的解. 首先,我们先介绍几种近似求根有关的方法: 1.对分法 对分法思想:将区域不断对分,判断根在某个分段内,再对该段对分,依此类推,直到满足精度为止.对分法适用于求有根区间内的单实根或奇重实根. 设) a f ?b f,即()0 f a>,()0 f a<,()0 f b<或()0 f b>.则 ) , (< (x [b f在] a上连续,0 ( ) 根据连续函数的介值定理,在) fξ=. a内至少存在一点ξ,使()0 , (b 下面的方法可以求出该根:

小学四年级解方程的方法详解

小学四年级解方程的方法详解 方程:含有未知数的等式叫做方程。如4x-3=21,6x-2(2x-3)=20 方程的解:使方程成立的未知数的值叫做方程的解。如上式解得x=6 解方程:求方程的解的过程叫做解方程。 解方程的依据:方程就是一架天平,―=‖两边是平衡的,一样重! 1. 等式性质:(1)等式两边同时加上或减去同一个数,等式仍然成立; (2)等式两边同时乘以或除以同一个非零的数,等式仍然成立。 2. 加减乘除法的变形: (1) 加法:a + b = 和则 a = 和-b b = 和-a 例:4+5=9 则有:4=9-5 5=9-4 (2) 减法:被减数a –减数b = 差则: 被减数a = 差+减数b 被减数a-差= 减数b 例:12-4=8则有:12=8+4 12-8=4 (3) 乘法:乘数a ×乘数b = 积则: 乘数a = 积÷乘数b 乘数b= 积÷乘数a 例:3×7=21则有:3=21÷7 7=21÷3 (4) 除法:被除数a ÷除数b = 商则: 被除数a= 商×除数b 除数b=被除数a ÷商例:63÷7=9 则有:63=9×7 7=63÷9 解方程的步骤: 1、去括号:(1)运用乘法分配律;(2)括号前边是―-‖,去掉括号要变号;括号前边是―+‖,去掉括号不变号。 2、移项:法1——运用等式性质,两边同加或同减,同乘或同除;法2——符号过墙魔法,越过―=‖时,加减号互变,乘除号互变。 注意两点:(1)总是移小的;(2)带未知数的放一边,常数值放另一边。 3、合并同类项:未知数的系数合并;常数加减计算。 4、系数化为1:利用同乘或同除,使未知数的系数化为1。

牛顿迭代法求方程的根

利用迭代算法解决问题,需要做好以下三个方面的工作: 一、确定迭代变量。在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。 二、建立迭代关系式。所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。 三、对迭代过程进行控制。在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。 最经典的迭代算法是欧几里德算法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理: 牛顿迭代法是牛顿在17世纪提出的一种求解方程f(x)=0.多数方程不存在求根公式,从而求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。 设r是f(x)=0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y=f(x)的切线L,L的方程为y=f(x0)+f'(x0)(x-x0),求出L与x轴交点的横坐标x1=x0-f(x0)/f'(x0),称x1为r的一次近似值,过点(x1,f(x1))做曲线y=f(x)的切线,并求该切线与x轴的横坐标 x2=x1-f(x1)/f'(x1)称x2为r的二次近似值,重复以上过程,得r 的近似值序列{Xn},其中Xn+1=Xn-f(Xn)/f'(Xn),称为r的n+1次近似值。上式称为牛顿迭代公式。 /* 用牛顿迭代法求下面方程 x*x*x-5*x*x+16*x-80=0的实根的过程是:

线性方程组的直接法和迭代法

线性方程组的直接法 直接法就是经过有限步算术运算,无需迭代可直接求得方程组精确解的方法。 线性方程组迭代法 迭代法就是用某种极限过程去逐步逼近线性方程组精确解的方法.该方法具有对计算机的存贮单元需求少,程序设计简单、原始系数矩阵在计算过程中不变等优点,是求解大型稀疏矩阵方程组的重要方法.迭代法不是用有限步运算求精确解,而是通过迭代产生近似解逼近精确解.如Jacobi 迭代、Gauss — Seidel 迭代、SOR 迭代法等。 1. 线性方程组的直接法 直接法就是经过有限步算术运算,无需迭代可直接求得方程组精确解的方法。 1.1 Cramer 法则 Cramer 法则用于判断具有n 个未知数的n 个线性方程的方程组解的情况。当方程组的系数行列式不等于零时,方程组有解且解唯一。如果方程组无解或者有两个不同的解时,则系数行列式必为零。如果齐次线性方程组的系数行列式不等于零,则没有非零解。如果齐次线性方程组有非零解,则系数行列式必为零。 定理1如果方程组Ax b =中0D A =≠,则Ax b =有解,且解事唯一的,解为1212,,...,n n D D D x x x D D D ===i D 是D 中第i 列换成向量b 所得的行列式。 Cramer 法则解n 元方程组有两个前提条件: 1、未知数的个数等于方程的个数。 2、系数行列式不等于零 例1 a 取何值时,线性方程组

1231231 2311x x x a ax x x x x ax ++=??++=??++=?有唯一解。 解:2111111 11011(1)11001 A a a a a a a ==--=--- 所以当1a ≠时,方程组有唯一解。 定理2当齐次线性方程组0Ax =,0A ≠时该方程组有唯一的零解。 定理3齐次线性方程组0Ax =有非零解0A <=>=。 1.2 Gauss 消元法 Gauss 消元法是线性代数中的一个算法,可用来为线性方程组求解,求出矩阵的秩,以及求出可逆方阵的逆矩阵。当用于一个矩阵时,高斯消元法会产生出一个“行梯阵式”。 1.2.1 用Gauss 消元法为线性方程组求解 eg :Gauss 消元法可用来找出下列方程组的解或其解的限制: ()()()123283211223x y z L x y z L x y z L +-=??--+=-??-++=-? 这个算法的原理是:首先,要将1L 以下的等式中的x 消除,然后再将2L 以下的等式中的y 消除。这样可使整个方程组变成一个三角形似的格式。之后再将已得出的答案一个个地代入已被简化的等式中的未知数中,就可求出其余的答案了。 在刚才的例子中,我们将132 L 和2L 相加,就可以将2L 中的x 消除了。

matlab实验报告--求代数方程的近似根

数学实验报告 实验序号: 第二次 日期:2012 年 5月10日 班级 0920861 小组成员姓名 徐易斌;王勇 王康 学号 30 12 33 实验名称:求代数方程的近似根 问题背景描述: 求代数方程0)(=x f 的根是最常见的数学问题之一,当)(x f 是一次多项式时,称0)(=x f 为线性方程,否则称之为非线性方程. 当0)(=x f 是非线性方程时,由于)(x f 的多样性,尚无一般的解析解法可使用,但如果对任意的精度要求,能求出方程的近似根,则可以认为求根的计算问题已经解决,至少能满足实际要求. 本实验介绍一些求方程实根的近似值的有效方法,要求在使用这些方法前先确定求根区间],[b a ,或给出某根的近似值0x .

实验目的: 1. 了解代数方程求根求解的四种方法:对分法、迭代法、牛顿切线法 2. 掌握对分法、迭代法、牛顿切线法求方程近似根的基本过程。 实验原理与数学模型: 1.对分法 对分法思想:将区域不断对分,判断根在某个分段内,再对该段对分,依此类推,直到满足精度为止.对分法适用于求有根区间内的单实根或奇重实根. 设)(x f 在],[b a 上连续,0)()(,()0f b <或()0f a <,()0f b >.则根据连续函数的介值定理,在),(b a 内至少存在一点 ξ,使()0f ξ=. 下面的方法可以求出该根: (1) 令02 a b x +=,计算0()f x ; (2) 若0()0f x =,则0x 是()0f x =的根,停止计算,输出结果0x x =. 若 0()()0f a f x ?<,则令1a a =,10b x =,若0()()0f a f x ?>,则令10a x =,1b b =;11 12 a b x +=. ……,有k a 、k b 以及相应的2 k k k a b x += . (3) 若()k f x ε≤ (ε为预先给定的精度要求),退出计算,输出结果2 k k k a b x +=; 反之,返回(1),重复(1),(2),(3). 以上方法可得到每次缩小一半的区间序列{[,]}k k a b ,在(,)k k a b 中含有方程的根. 当区间长k k b a -很小时,取其中点2 k k k a b x += 为根的近似值,显然有 1111111 ()()()2222 k k k k k k x b a b a b a ξ--+-≤-=??-==- 以上公式可用于估计对分次数k . 2. 迭代法 1) 迭代法的基本思想: 由方程()0f x =构造一个等价方程

相关主题
文本预览
相关文档 最新文档