?? 10.牛頓下山法.cpp
字號:
#include "iostream.h"
#include "math.h"
void main ()
{
int m = 0 ;
double y ;
double f1 ;
double f0 ;
double f ;
double x2 , x1 , x0 ;
cout << "輸入初值x0: " ;
cin >> x0 ; // 0.1_2.1
cout << "輸入下山因子y(0 <y<1): " ;
cin >> y ;
while ( m < 100)
{
f1 = x0 * exp( x0 ) - 1;
f0 = (1 + x0 ) * exp( x0 ) ;
f = f1 ;
x1 = x0 - f1 / f0 ;
x2 = y * x1 + ( 1 - y ) * x0 ;
f1 = x1 * exp( x1 ) - 1;
if (fabs(f1) >= fabs(f) )
{
y = y / 2 ;
continue ;
}
m++ ;
if (fabs(f1) < 1e-7)
{
cout << " 方程的根是:" << x2 << endl ;
cout << "迭代的次數是:" << m << endl ;
break ;
}
if (fabs(x2 - x0) < 1e-7 && fabs( x2 ) < 1)
{
cout << " 方程的根是:" << x2 << endl ;
cout << "迭代的次數是:" << m << endl ;
break ;
}
if (fabs((x2 - x0) / x2) < 1e-7 && fabs( x2 ) >= 1)
{
cout << " 方程的根是:" << x2 << endl ;
cout << "迭代的次數是:" << m << endl ;
break ;
}
x0 = x2 ;
}
if( m == 100)
{
cout << "迭代失敗 " << endl ;
cout << "迭代次數超過100次! " << endl ;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -