📄 newton.cpp
字号:
#include <stdio.h>
#include <math.h>
#define MN 51
int RN=1;
double X0[MN],Y0[MN],Z0[MN],X1[MN],ERR[MN];
double A0=1.0,B0=3.0,EPS=0.4E-13;
double f(double x){return 2*x*x*x-4*x*x+3*x-6;}
double g(double x){return 6*x*x-8*x+3.0;}
int NEWTON()
{
int k;
if (f(A0)>0 ) X0[0]=A0;
else X0[0]=B0;
Y0[0]=f(X0[0]);
Z0[0]=g(X0[0]);
X1[0]=X0[0]-Y0[0]/Z0[0];
ERR[0]=fabs(X1[0]-X0[0]);
for(k=1;k<MN;k++)
{
X0[k]=X1[k-1];
Y0[k]=f(X0[k]);
Z0[k]=g(X0[k]);
X1[k]=X0[k]-Y0[k]/Z0[k];
ERR[k]=fabs(X1[k]-X0[k]);
if(ERR[k]<EPS)break;
}
RN=k+1;
return 0;
}
int ShowTable()
{
int K;
printf("===================================================\n");
printf(" K X0[K] Y0[K] Z0[K] ERR[K] \n");
printf("---------------------------------------------------\n");
for(K=0;K<RN;K++)
printf("\n %2d %10.6f %12.8f %12.8f %12.4e",K,X0[K],Y0[K],Z0[K],ERR[K]);
printf("\n--------------------------------------------------\n");
printf(" 解为=%12.8f",X0[RN-1]);
printf("\n==================================================\n");
return 0;
}
void main()
{
NEWTON();
ShowTable();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -