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

📄 newton法.cpp

📁 大量数值计算的算法
💻 CPP
字号:
//*************************************
//程序功能:Newton法  求线性方程的解
//
//作    者:杭永东
//
//日    期: 2002.03.28
//*************************************

#include <math.h>
#include <iostream.h>
#include <stdio.h>

//*************************************
//
// 注:更改此宏定义的表达式可以解不同的线性方程
//   根据宏定义要求,x必须以(x)形式出现式中
//
//*************************************

#define f(x) pow((x),6.0L)-6.0L*pow((x),5.0L)+10.0L*pow((x),4.0L)-32*(x)+32
#define df(x) 5.0L*pow((x),5.0L)-30.0L*pow((x),4.0L)+40.0L*pow((x),3.0L)-32.0L
#define ddf(x) 25.0L*pow((x),4.0L)-120.0L*pow((x),3.0L)+120.0L*pow((x),2.0L)

long double x0,e;

long double Newton(long double x0)
{
	printf("\n%.9f",x0);
	long double f0=f(x0);
	long double f1=df(x0);
	long double f2=ddf(x0);


	long double x1=x0-f0/f1; //一般情况
//	long double x1=x0-4.0L*(f0/f1); //已知重根数的情况
//	long double x1=x0-(f0*f1)/(pow(f1,2.0L)-f0*f2);   //不知重根数的情况

	if((((x1-x0)>0)? (x1-x0): (x0-x1))<e)
		return x1;
	return Newton(x1);
}


main()
{
	cout<<"Please input x0,e:";
	cin>>x0>>e;
	printf("\n%0.9f",Newton(x0));
}


⌨️ 快捷键说明

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