⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 10.牛顿下山法.cpp

📁 牛顿下山法
💻 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 + -