方程的牛顿法

2013-2014(1)专业课程实践论文

题目:方程的牛顿法

一、算法理论

1.牛顿迭代法原理

设已知方程f (x ) =0的近似根x 0, 则在x 0附近f (x ) 可用一阶泰勒多项式p (x ) =f (x 0) +f ' (x 0)(x -x 0) 近似代替。因此, 方程f (x ) =0可近似地表示为

p (x ) =0。用x 1表示p (x ) =0的根, 它与f (x ) =0的根差异不大。

设f ' (x 0) ≠0, 由于x 1满足f (x 0) +f ' (x 0)(x 1-x 0) =0, 解得

x 1=x 0-

f (x 0)

f ' (x 0)

重复这一过程, 得到迭代格式

x n +1=x n -

f (x n )

f ' (x n )

这就是著名的牛顿迭代公式, 它相应的不动点方程为

g (x ) =x -

f (x )

f ' (x )

2. 牛顿迭代法的几何解析

在x 0处作曲线的切线,切线方程为y =f (x 0) +f ' (x 0)(x -x 0) 。令y =0,可得切线与x 轴的交点坐标x 1=x 0-牛顿法又称“切线法”。

3.牛顿迭代法的收敛性

定义 设迭代过程x k +1=ϕ(x k ) 收敛于方程x =ϕ(x ) 的根x *,如果迭代误差

f (x 0)

,这就是牛顿法的迭代公式。因此,f ' (x 0)

εk =x k -x *当k →∞时成立下列关系式

εk +1

→C (C ≠0为常数) , p εk

则迭代过程是p 阶收敛的。特别的,p =1时称为线性收敛,p >1时称为超线性收敛,p =2时称为平方收敛

定理1 对于迭代过程x k +1=ϕ(x k ) ,如果ϕ(p ) (x ) 在所求根x *的临近连续,并且 则该迭代过程在点 邻近是 阶收敛的。

ϕ'(x *) =ϕ''(x *) = =ϕ(p -1) (x *) =0, ϕ(p ) (x *) ≠0

定理2 如果x *是方程f (x ) 的一个单根,并且f (x ) 在x *及其附近具有连续的二阶导数,则只要初始近似根x 0充分靠近x *,牛顿法在根x *的临近平法收敛。 定理3 设函数f (x ) 在[a , b ]上存在二阶连续导数,且满足条件: (1)f (a ) f (b )

(2)当x ∈[a , b ]时,f '(x ) ≠0; (3)当x ∈[a , b ]时,f ''(x ) 不变号; (4)

f (0)f (1)

≤1, , ''f (0)f (1)

则对于任意初始值x ∈[a , b ],由牛顿迭代格式确定的序列{x k }收敛于f (x ) =0在区间[a , b ]内唯一的根x *。

定理4 设函数f (x ) 在区间[a , b ]内有二阶导数,如果x ∈[a , b ],满足: (1)f '(x 0) ≠0, f ''(x 0) ≠0; (2)f '(x 0) >

2

f ''(x 0)

f (x 0) ; 2

则以x 0为初始值,由牛顿迭代法所确定的序列{x k }收敛于方程f (x ) =0的根

x *。

#include #include #include #define EPS 1e-6 #define N 100

float f(float x) { return x*x*x+x*x-3*x-3; }

float fd(float x) { return 3*x*x+2*x-3; }

main() { int i=0,n=0; float x[N]; printf("请输入初始值x[0]:\n"); scanf("%f",&x[0]); do { x[i+1]=x[i]-f(x[i])/fd(x[i]); if((n++>N)||fd(x[i])==0) { printf("迭代失败\n"); break; } x[i]=x[i+1]; i++; }

while(fabs(x[i]-x[i-1])>EPS||fabs(f(x[i]))>EPS); for(i=0;i

例1.用牛顿法求方程f (x ) =x (x +1) 2-1=0在0.4附近的根,并精确到6位有效数字。

解:在vc++6.0窗口输入下面程序

#include #include #include #define EPS 1e-6 #define N 100

float f(float x) { return x*(x+1)*(x+1)-1; }

float fd(float x) { return (x+1)*(x+1)+2*x*(x+1); }

main() { int i=0,n=0; float x[N]; printf("请输入初始值x[0]:"); scanf("%f",&x[0]); do { x[i+1]=x[i]-f(x[i])/fd(x[i]); if((n++>N)||fd(x[i])==0) { printf("迭代失败\n"); break; } x[i]=x[i+1]; i++; }

while(fabs(x[i]-x[i-1])>EPS||fabs(f(x[i]))>EPS); for(i=0;i

{ printf("x[%d]=%.6f\t\n",i+1,x[i]); } }

程序结果如下:

例2.用牛顿发求方程2xe x -1=0在区间[0,1]内的根。要求精确度为10-4。 解:在vc++6.0窗口输入下面程序 #include #include #include #define EPS 1e-6 #define E 2.7182 #define N 100

float f(float x) { return 2*x*E*E-1; }

float fd(float x) { return 2*E*E; }

main() { int i=0,n=0;

float x[N]; printf("请输入初始值x[0]:"); scanf("%f",&x[0]); do { x[i+1]=x[i]-f(x[i])/fd(x[i]); if((n++>N)||fd(x[i])==0) { printf("迭代失败\n"); break; } x[i]=x[i+1]; i++; }

while(fabs(x[i]-x[i-1])>EPS||fabs(f(x[i]))>EPS); for(i=0;i

程序结果如下:

2013-2014(1)专业课程实践论文

题目:方程的牛顿法

一、算法理论

1.牛顿迭代法原理

设已知方程f (x ) =0的近似根x 0, 则在x 0附近f (x ) 可用一阶泰勒多项式p (x ) =f (x 0) +f ' (x 0)(x -x 0) 近似代替。因此, 方程f (x ) =0可近似地表示为

p (x ) =0。用x 1表示p (x ) =0的根, 它与f (x ) =0的根差异不大。

设f ' (x 0) ≠0, 由于x 1满足f (x 0) +f ' (x 0)(x 1-x 0) =0, 解得

x 1=x 0-

f (x 0)

f ' (x 0)

重复这一过程, 得到迭代格式

x n +1=x n -

f (x n )

f ' (x n )

这就是著名的牛顿迭代公式, 它相应的不动点方程为

g (x ) =x -

f (x )

f ' (x )

2. 牛顿迭代法的几何解析

在x 0处作曲线的切线,切线方程为y =f (x 0) +f ' (x 0)(x -x 0) 。令y =0,可得切线与x 轴的交点坐标x 1=x 0-牛顿法又称“切线法”。

3.牛顿迭代法的收敛性

定义 设迭代过程x k +1=ϕ(x k ) 收敛于方程x =ϕ(x ) 的根x *,如果迭代误差

f (x 0)

,这就是牛顿法的迭代公式。因此,f ' (x 0)

εk =x k -x *当k →∞时成立下列关系式

εk +1

→C (C ≠0为常数) , p εk

则迭代过程是p 阶收敛的。特别的,p =1时称为线性收敛,p >1时称为超线性收敛,p =2时称为平方收敛

定理1 对于迭代过程x k +1=ϕ(x k ) ,如果ϕ(p ) (x ) 在所求根x *的临近连续,并且 则该迭代过程在点 邻近是 阶收敛的。

ϕ'(x *) =ϕ''(x *) = =ϕ(p -1) (x *) =0, ϕ(p ) (x *) ≠0

定理2 如果x *是方程f (x ) 的一个单根,并且f (x ) 在x *及其附近具有连续的二阶导数,则只要初始近似根x 0充分靠近x *,牛顿法在根x *的临近平法收敛。 定理3 设函数f (x ) 在[a , b ]上存在二阶连续导数,且满足条件: (1)f (a ) f (b )

(2)当x ∈[a , b ]时,f '(x ) ≠0; (3)当x ∈[a , b ]时,f ''(x ) 不变号; (4)

f (0)f (1)

≤1, , ''f (0)f (1)

则对于任意初始值x ∈[a , b ],由牛顿迭代格式确定的序列{x k }收敛于f (x ) =0在区间[a , b ]内唯一的根x *。

定理4 设函数f (x ) 在区间[a , b ]内有二阶导数,如果x ∈[a , b ],满足: (1)f '(x 0) ≠0, f ''(x 0) ≠0; (2)f '(x 0) >

2

f ''(x 0)

f (x 0) ; 2

则以x 0为初始值,由牛顿迭代法所确定的序列{x k }收敛于方程f (x ) =0的根

x *。

#include #include #include #define EPS 1e-6 #define N 100

float f(float x) { return x*x*x+x*x-3*x-3; }

float fd(float x) { return 3*x*x+2*x-3; }

main() { int i=0,n=0; float x[N]; printf("请输入初始值x[0]:\n"); scanf("%f",&x[0]); do { x[i+1]=x[i]-f(x[i])/fd(x[i]); if((n++>N)||fd(x[i])==0) { printf("迭代失败\n"); break; } x[i]=x[i+1]; i++; }

while(fabs(x[i]-x[i-1])>EPS||fabs(f(x[i]))>EPS); for(i=0;i

例1.用牛顿法求方程f (x ) =x (x +1) 2-1=0在0.4附近的根,并精确到6位有效数字。

解:在vc++6.0窗口输入下面程序

#include #include #include #define EPS 1e-6 #define N 100

float f(float x) { return x*(x+1)*(x+1)-1; }

float fd(float x) { return (x+1)*(x+1)+2*x*(x+1); }

main() { int i=0,n=0; float x[N]; printf("请输入初始值x[0]:"); scanf("%f",&x[0]); do { x[i+1]=x[i]-f(x[i])/fd(x[i]); if((n++>N)||fd(x[i])==0) { printf("迭代失败\n"); break; } x[i]=x[i+1]; i++; }

while(fabs(x[i]-x[i-1])>EPS||fabs(f(x[i]))>EPS); for(i=0;i

{ printf("x[%d]=%.6f\t\n",i+1,x[i]); } }

程序结果如下:

例2.用牛顿发求方程2xe x -1=0在区间[0,1]内的根。要求精确度为10-4。 解:在vc++6.0窗口输入下面程序 #include #include #include #define EPS 1e-6 #define E 2.7182 #define N 100

float f(float x) { return 2*x*E*E-1; }

float fd(float x) { return 2*E*E; }

main() { int i=0,n=0;

float x[N]; printf("请输入初始值x[0]:"); scanf("%f",&x[0]); do { x[i+1]=x[i]-f(x[i])/fd(x[i]); if((n++>N)||fd(x[i])==0) { printf("迭代失败\n"); break; } x[i]=x[i+1]; i++; }

while(fabs(x[i]-x[i-1])>EPS||fabs(f(x[i]))>EPS); for(i=0;i

程序结果如下:


相关文章

  • 中考复习_用去分母法或换元法求分式方程的解
  • 用去分母法或换元法求分式方程的解 一.选择题 1. (2011•江苏宿迁,5,3)方程 2x1 错误!未找到引用源.的解是( ) 1 x1x1 A.﹣1 B.2 C.1 D.0 考点:解分式方程. 专题:计算题. 分析:观察可得最简 ...查看


  • 一元整式方程
  • 21.1 一元整式方程 教学目标 知识与技能:知道一元整式方程与高次方程的有关概念,知道一元整式方程的一般形式. 过程与方法:经历从具体问题中的数量相等关系引进含字母系数的方程的过程,理解含字母系数的一元一次方程.一元二次方程的概念,掌握它 ...查看


  • 常微分方程
  • < 常微分方程 >课程教学大纲 一.课程基本信息 课程代码:110044 课程名称:常微分方程 英文名称:Ordinary Differential Equation 课程类别:专业必修课 学 时:45 学 分:2.5 适用对象 ...查看


  • 二元二次方程组的解法,分式方程的解法,无理方程的解法教案
  • 学大教育(佛山)个性化学习中心Foshan Xueda Education Individualized learning center个性化教学辅导教案学科:数学 任课教师:谭盛德 姓名 教学 目标 重点 难点 郭海杰 年级 高一 授课时 ...查看


  • 发现数学新定理
  • 发现数学新定理,论证阿贝尔定理的错误 一元五次或更高次的一元方程没有一般的代数求根公式存在,被数学史上称之为阿贝尔定理,可惜原来是一个错误定理.下面让我来论证他的错误性. 为了让诸位更清楚我的论证过程 首先我把我的大致论证思路作一个简单介绍 ...查看


  • [一元二次方程]教学设计
  • <一元二次方程>教学设计 一.内容和内容解析 1.内容 一元二次方程的概念,一元二次方程的一般形式. 2.内容解析 一元二次方程是方程在一元一次方程基础上 "次"的推广,同时它是解决诸多实际问题的需要,为勾股 ...查看


  • 代数方程 解法
  • 代数方程 解法 化归思想:高次化低次:降次的方法:因式分解,换元 分式化整式:化整式的方法:去分母,换元 无理化有理:化有理方程的方法:平方法,换元 多元化一元:代入和加减消元 1. 一元一次方程和一元二次方程的解法 一元二次方程的解法主要 ...查看


  • 特殊的高次方程的解法1
  • 特殊的一元高次方程的解法1 教学目标 知识与技能:理解和掌握二项方程的意义以及二项方程的解法: 过程与方法:学会把一个代数式看作一个整体,掌握可以通过换元转化为二项方程的方程的解法, 经历知识的产生过程,感受自主探究的快乐. 教学重点及难点 ...查看


  • 分式方程教案(2)
  • 分式方程(1) 一.教学目标1.使学生理解分式方程的意义. 2.使学生掌握可化为一元一次方程的分式方程的一般解法. 3.了解解分式方程解的检验方法. 4.在学生掌握了分式方程的一般解法和分式方程验根方法的基础上,使学生进一步掌握可化为一元一 ...查看


  • 最新人教版数学八年级上册 分式方程
  • 最新人教版数学八年级上册 分式方程 1.分式方程的概念 分母中含未知数的方程叫做分式方程. 谈重点 分式方程与整式方程的区别 从分式方程的定义可以看出分式方程有两个重要特征:一是方程:二是分母中含未知数.因此整式方程和分式方程的根本区别就在 ...查看


热门内容