2013-2014 (1)专业课程实践论文
题目:一维搜索牛顿法
一、算法理论
牛顿法是一种函数逼近法,基本思想是:在极小点附近用 函数的二阶泰勒多项式近似代替目标函数,从而求得目标函数 的极小点的近似值。
对f (x)在xk点2013-2014 (1)专业课程实践论文
题目:一维搜索牛顿法
一、算法理论
牛顿法是一种函数逼近法,基本思想是:在极小点附近用 函数的二阶泰勒多项式近似代替目标函数,从而求得目标函数 的极小点的近似值。
对f (x)在xk点二阶泰勒展开:
f (x) = f(X ) + " )(X f ) + 2 f "(xk )(X - Xk )2 + 心-Xk )2) 略去高阶项得
f (x)牝 f (x)+「*)(x—x)+2Ek)(x一xk)2
两边对 x 求导,f '(x)机 f '(x ) + f "(x )(x 一 x )
令 f '(x)=0 ,得到
f \ x )
— f "(x ) k
x =x
k+1 k
f \ x )
1
f "(x )
k
作为新的迭代点,继续迭代,直到达到精度,这样就得到了
函数f的一个驻点
。以上过程即Newton法。
二、算法框图
停,失败
X砰1
七甘=妙TL) /S)
三、算法程序
#include<iostream>
#include<> using namespace std;
double fun(double t)
{
return (t*t*t-2*t+1);
}
double dfun(double t)
{
return (3*t*t-2);
}
void NewtonIterative(double(*pfun)(double t),double (*pdfun)(double t)) {
int maxflag=1000,k=1;
double t0=1,err=,t;
do
{
t0=t;
t=t0-pfun(t0)/pdfun(t0);
k++;
}while(fabs(t-t0)>err&&k<maxflag);
if(k>=maxflag)
cout<<endl<<"牛顿迭代失败!迭代次数为k="<<k<<endl;
else
{
cout<<endl<<"牛顿迭代
一维搜索牛顿法 来自淘豆网m.daumloan.com转载请标明出处.