牛顿迭代法
2010-04-12 23:52
309 查看
设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的近似值序列,其中x(n+1)=x(n)-f(x(n)) /f'(x(n)),称为r的n+1次近似值,上式称为牛顿迭代公式。
相关习题:
《C程序设计》(第三版)6.12
《C程序设计教程》 5.12
Solution by Mutoo:
// 求 f(x)=2x^3-4x^2+3x-6 在1.5 附近的根
Code:
#include<stdio.h>
#include<math.h>
double F(double x) // 构造方程
{
return 2*pow(x,3)-4*pow(x,2)+3*x-6; // f(x)=2x^3-4x^2+3x-6
}
double f(double x) // 构造方程的导数(用于求斜率)
{
return 6*pow(x,2)-8*x+3; //f'(x)=6x^3-8x+3
}
/**********
切线:(y-y0)=k(x-x0)
移项:x = x0 - y0/k
其中:
k=f'(x)
y0=f(x)
**********/
void main()
{
double X0,Xn;
X0 = Xn = 1.5; // 初始值
do
{
X0 = Xn;
Xn = X0-F(X0)/f(X0);
}while(fabs(F(Xn))>10e-6); // 误差指导
printf("root=%lf/n",Xn);
}
相关习题:
《C程序设计》(第三版)6.12
《C程序设计教程》 5.12
Solution by Mutoo:
// 求 f(x)=2x^3-4x^2+3x-6 在1.5 附近的根
Code:
#include<stdio.h>
#include<math.h>
double F(double x) // 构造方程
{
return 2*pow(x,3)-4*pow(x,2)+3*x-6; // f(x)=2x^3-4x^2+3x-6
}
double f(double x) // 构造方程的导数(用于求斜率)
{
return 6*pow(x,2)-8*x+3; //f'(x)=6x^3-8x+3
}
/**********
切线:(y-y0)=k(x-x0)
移项:x = x0 - y0/k
其中:
k=f'(x)
y0=f(x)
**********/
void main()
{
double X0,Xn;
X0 = Xn = 1.5; // 初始值
do
{
X0 = Xn;
Xn = X0-F(X0)/f(X0);
}while(fabs(F(Xn))>10e-6); // 误差指导
printf("root=%lf/n",Xn);
}
相关文章推荐
- 牛顿迭代法快速寻找平方根
- 谭浩强的牛顿迭代法程序
- 牛顿迭代法解非线性方程 x ^ 3 = a, 即求a的开三次方
- 利用牛顿迭代法求平方根
- 牛顿迭代法
- 很牛的牛顿迭代法
- matlab实现牛顿迭代法求解非线性方程组
- 牛顿迭代法求一个数的平方根
- 牛顿迭代法
- 牛顿迭代法求高精度开方
- 牛顿迭代法快速寻找平方根
- HDU2899 Strange fuction(牛顿迭代法)
- 牛顿迭代法(Newton's Method)
- leetcode:Sqrt(x) 牛顿迭代法求整数开方
- 3元一次方程(牛顿迭代法求方程的根)
- UVa 10428 The Roots,牛顿迭代法
- 非线性最优化(一)——牛顿迭代法
- 利用牛顿迭代法求平方根
- 牛顿迭代法在求解步进电机在不同脉冲对应的时刻的用处
- 牛顿迭代法快速寻找平方根