📄 newton法.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 + -