用牛顿迭代法求方程的近似解课件
- 格式:ppt
- 大小:2.69 MB
- 文档页数:23
有一种迭代方法叫牛顿迭代法,是用于求方程或方程组近似根的一种常用的算法设计方法。
设方程为f(x)=0,用某种数学方法导出等价的形式x(n+1) = g(x(n)) = x (n)–f(x(n))/f‘(x(n)).然后按以下步骤执行:(1) 选一个方程的近似根,赋给变量x1;(2) 将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0;(3) 当x0与x1的差的绝对值还小于指定的精度要求时,重复步骤(2)的计算。
若方程有根,并且用上述方法计算出来的近似根序列收敛,则按上述方法求得的x0就认为是方程的根。
例1:已知f(x) = cos(x) - x。
x的初值为3.14159/4,用牛顿法求解方程f(x) =0的近似值,要求精确到10E-6。
算法分析:f(x)的Newton代法构造方程为:x(n+1) = xn - (cos(xn)-xn) / (-sin(xn)-1)。
#include<stdio.h>double F1(double x); //要求解的函数double F2(double x); //要求解的函数的一阶导数函数double Newton(double x0, double e);//通用Newton迭代子程序int main(){double x0 = 3.14159/4;double e = 10E-6;printf("x = %f\n", Newton(x0, e));getchar();return 0;}double F1(double x) //要求解的函数{return cos(x) - x;}double F2(double x) //要求解的函数的一阶导数函数{return -sin(x) - 1;}double Newton(double x0, double e)//通用Newton迭代子程序{double x1;do{x1 = x0;x0 = x1 - F1(x1) / F2(x1);} while (fabs(x0 - x1) > e);return x0; //若返回x0和x1的平均值则更佳}例2:用牛顿迭代法求方程x^2 - 5x + 6 = 0,要求精确到10E-6。