📄 牛顿迭代法求根.c
字号:
//////////////////////////////////////////////////////////////
// 牛顿迭代法求根 //
//////////////////////////////////////////////////////////////
#include<stdio.h>
#include <math.h>
#define iterate(x) (x-((x*x-3)*x-1)/(3*x*x-3))
#define f(x) ((x*x-3)*x-1)
#define x0 1.5 // 迭代初值 x0
#define MAXREPT 1000 //最大迭代次数
#define epsilon 0.0001 //精度
void main()
{
int i;
double x_k=x0,x_k1=x0;
for(i=0;i<MAXREPT;i++)
{
printf("Got...%f\n",x_k1);
x_k1=iterate(x_k); // 迭代
if (fabs(x_k1-x_k)<epsilon||fabs(f(x_k1))<epsilon)
{
printf("! Root: %f\n",x_k1);//满足精度输出
return;
}
x_k=x_k1;
}
printf("After %d repeate, no solved.\n",MAXREPT);
}
//---------------------End of File-----------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -