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

📄 newton.cpp

📁 牛顿计算方法,解非线性方程f(x)=0牛顿方法是一种将非线性函数线性化的方法。 牛顿迭代法求方程的一个实根
💻 CPP
字号:
// Newton.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<stdio.h>
#include<math.h>
#include<iostream>
#define f(x) (x*x+10*cos(x))//原函数 x^2+10cosx
#define g(x) (2*x-10*sin(x))//导函数 2x-10sinx
#define MAXREPT 1e4
#define x0  1.6
#define x1  10
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	int i,k = 0;
	double epsilon;
	double x_k = x0,x_k1 = x1,x_k2 = x1;

	cout<<"求x*x+10*cos(x)的近似根,x0=1.6"<<endl;
	cout<<"请输入求解精度:";
	cin>>epsilon;
    cout<<"迭代开始:"<<endl;

	for(i = 0;i < MAXREPT;i++)
	{
		cout<<"Got..."<<x_k2<<endl;
		k++;

		if(g(x_k) == 0)
			break;
		else
			x_k2=x_k1-f(x_k1)/g(x_k1);

	    if(fabs(x_k2-x_k1)<epsilon)
	    {
			
		    cout<<"所得满足精度的解为:"<<endl;
			cout<<"!Root="<<x_k2<<endl;
			cout<<"迭代次数为:"<<k<<endl;	
			system("pause");
			return 0;
		}
		x_k=x_k1;x_k1=x_k2;
	}
	cout<<"经过 "<<MAXREPT<<" 次迭代后,未达到所需精度要求"<<endl;system("pause");

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -