📄 正割法.cpp
字号:
#include<math.h>
#include<stdio.h>
#define MaxK 1000
#define EPS 0.5e-8
double f(double x)
{
return x*x*x-x-1;
}
int ZhengGe(double x0,double &x1,double eps)
{
int flag=1,num=0;
double x2=x1;
printf("k xk f(xk)\n");
printf("-----------------------------------------------\n");
printf("0 %f %f\n",x0,f(x0));
printf("1 %f %f\n",x1,f(x1));
do{
x1=x2;
if(f(x1)-f(x0)==0)
{flag=-1;break;}
x2=x1-(f(x1)/(f(x1)-f(x0)))*(x1-x0);//x2为我们所要测量的近似根
x0=x1;
num++;//记录迭代次数
if(num>MaxK)
{flag=-2;break;
}
printf("%d %f %f\n",num+1 ,x2,f(x2) );
}while(fabs(x2-x1)>=eps);
printf("-------------------------------------------------\n");
x1=x2;
return flag;
}
void main()
{
double x0=1,x1=2;
int k=ZhengGe(x0,x1,EPS);
if(k==1)
printf("the root is x=%f\n",x1);
else if(k==-1)
printf("除零错误!\n");
else if(k==-2)
printf("迭代次数越界!\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -