?? 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 + -