牛顿迭代法(欧几里得算法(辗转相除),斐波那契算法)
2013-12-14 17:49
197 查看
牛顿迭代公式步骤:
设r是f(x)=0的根,选取作为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的n+1次近似值序列,其中Xn+1
= Xn - f(Xn)/f'(Xn)称为r的n+1次近似值;
(重复次数可自己去尽量小的ε, 当两次求出的根之差|xn+1-xn|≤ε就认为
xn+1足够接近于真实根。)
迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。
形象举例:
军人在进攻时常采用交替掩护进攻的方式,若在数轴上的点表示A,B两人的位置,规定在前面的数大于后面的数,则是A>B,B>A交替出现。但现在假设军中有一个胆小鬼,同时大家又都很照顾他,每次冲锋都是让他跟在后面,每当前面的人占据一个新的位置,就把位置交给他,然后其他人再往前占领新的位置。也就是A始终在B的前面,A向前迈进,B跟上,A把自己的位置交给B(即执行B
= A),然后A 再前进占领新的位置,B再跟上,直到占领所有的阵地,前进结束。像这种两个数一前一后逐步向某个位置逼近的方法称为迭代法。
步骤:
一、确定迭代变量;
二、建立迭代关系;
三、对迭代过程进行控制;
举例:
设r是f(x)=0的根,选取作为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的n+1次近似值序列,其中Xn+1
= Xn - f(Xn)/f'(Xn)称为r的n+1次近似值;
(重复次数可自己去尽量小的ε, 当两次求出的根之差|xn+1-xn|≤ε就认为
xn+1足够接近于真实根。)
迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。
形象举例:
军人在进攻时常采用交替掩护进攻的方式,若在数轴上的点表示A,B两人的位置,规定在前面的数大于后面的数,则是A>B,B>A交替出现。但现在假设军中有一个胆小鬼,同时大家又都很照顾他,每次冲锋都是让他跟在后面,每当前面的人占据一个新的位置,就把位置交给他,然后其他人再往前占领新的位置。也就是A始终在B的前面,A向前迈进,B跟上,A把自己的位置交给B(即执行B
= A),然后A 再前进占领新的位置,B再跟上,直到占领所有的阵地,前进结束。像这种两个数一前一后逐步向某个位置逼近的方法称为迭代法。
步骤:
一、确定迭代变量;
二、建立迭代关系;
三、对迭代过程进行控制;
举例:
//欧几里得算法(又称辗转相除法) //求最大公约数 //循环 int gcd(int a, int b) { //排错 if(a<=0 || b<=0) return 0; int temp; while(b > 0) { temp = a % b; a = b; b = temp; } return a; } //递归 int gcd(int a, int b) { if(a==0) return b; if(b==0) return a; return gcd(b, a%b); }
//斐波那契数列(Fibonacci) //0、1、1、2、3、5、8、13、21、34。。。 //循环 int Fib(int n) { //排错 if(n < 1) return 0; if(n==1 || n==2) return 1; int f1 = 1 f2=1, fn; for(int i=3; i<=n; i++) { fn = f1 + f2; f1 = f2; f2 = fn; } } //递归剪枝 double a[10000]; double Fbi(int n) { if(n < 2) return n > 0 ? 1 : 0; //剪枝,已经计算就不再计算 if(a != 0) return a ; a[i-1] = fbi(i-1); a[i-2] = fbi(i-2); return a[n-1]+[n-2]; }
相关文章推荐
- 欧几里得算法(辗转相除)及其扩展证明
- 欧几里得算法(辗转相除)&扩展欧几里得
- 欧几里得算法(辗转相除)
- [读书笔记] 欧几里得算法与该算法的扩充 C#
- C语言程序设计 牛顿迭代法
- 辗转相除求最大公约数
- 利用牛顿迭代法求平方根
- 欧几里得算法求两个非负整数的最大公因子
- 欧几里得算法——求最大公约数
- 辗转相除法---欧几里得算法
- 【菜鸟做水题】:杭电 hide handkerchief (辗转相除判断2数互质)
- 【专题】三分法和牛顿迭代法总结
- java欧几里得算法求最大公约数
- 庞果网在线编程---倒水---扩展欧几里得算法
- 欧几里得算法和扩展欧几里得算法
- [读书笔记]使用牛顿迭代法计算平方根(Quake III)
- 辗转相除进化版--stein算法
- 最大公约数,欧几里得算法
- leetcode:Sqrt(x) 牛顿迭代法求整数开方
- 欧几里得算法求两个整数的最大公因数