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

📄 numanalysis.cpp

📁 研究生课程数值分析的Newton迭代算法
💻 CPP
字号:
// NumAnalysis.cpp: implementation of the NumAnalysis class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "083007_NA.h"
#include "NumAnalysis.h"
#include "math.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

NumAnalysis::NumAnalysis()
{

}

NumAnalysis::~NumAnalysis()
{

}

float NumAnalysis::Newton(int A,int B, float C, double D)
{
    float x1, x2;//x1为迭代初值;x2为迭代结果
	double f,f1;
	double w;//误差
	int i=0;
	x1=C;
	w=1.000;
	while(w>D)
	{
		if(i<100){
		f=pow(x1,A)+exp(-pow(x1,B))*cos(x1);
		f1=A*pow(x1,A-1)-exp(-pow(x1,B))*(B*(pow(x1,B-1)+sin(x1)));
		x2= (float) x1-f/f1;
		w= fabs(x2-x1);
		x1=x2;
		i++;
		NL=i;
		}
		else
		{
		    
			return 100;
		}
	}
	return  x2;
}

float NumAnalysis::newton(float x0)
{
    double x1, x2;//x1为迭代初值;x2为迭代结果
	double f,f1;
	double w;//误差
	int i=0;
	x1=x0;
	w=1.000;
	while(w>0.00005)
	{
		if(i<100){
		f=pow(x1,3)/3-x1;
		f1=pow(x1,2)-1.0;
		x2= (double) x1-f/f1;
		w= fabs(x2-x1);
		x1=x2;
		i++;
		NL=i;
		}
		else
		{
		    
			return 100;
		}
	}
	return  x2;
}

float NumAnalysis::Shoulian(float s, float D)
{
    float x1, x2;//x1为迭代初值;x2为迭代结果
	double f,f1;
	double w;//误差
	int i=0;
	x1=s;
	w=1.000;
	while(w>D)
	{
		if(i<100){
		f=pow(x1,3)/3-x1;
		f1=pow(x1,2)-1;
		x2= (float) x1-f/f1;
		w= fabs(x2-x1);
		x1=x2;
		i++;
		NL=i;
		}
		else
		{
		    
			return 100;
		}
	}
	return  x2;
}

⌨️ 快捷键说明

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