📄 牛顿下山法.cpp
字号:
#include<iostream>
#include<cmath>
using namespace std;
double f(double x)
{
return x*x*x-x-1;
}
double fx(double x)
{
return 3*x*x-1;
}
void main()
{
int h=0,k=0,m,n;
double x0,e,x1,j=1;
cout<<"输入 x0,n,m,e"<<endl;
cin>>x0>>n>>m>>e;
do
{
if(fx(x0)==0){
cout<<"error!";
break;
}
x1=x0-f(x0)/fx(x0);
while(fabs(f(x1))>fabs(f(x0)))
{
j=j/2;
x1=x0-j*f(x0)/fx(x0);
h++;
cout<<"下山次数 "<<h<<' '<<x1<<endl;
}
if(fabs(x1-x0)<e)
{
cout<<"下山结果: "<<x1<<endl;
break;
}
x0=x1;
k++;
}while(k!=n);
if(k>=n)cout<<"重新输入x0:"<<endl;
cout<<"下山次数以及下山因子是:"<<h<<' '<<j<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -