斯特芬森加速迭代法(Steffensen)-埃特金方法(Aitken) 一元非线性方程求根 C语言实现
2017-12-12 20:42
5392 查看
斯特芬森加速迭代法(Steffensen)/埃特金方法(Aitken) 一元非线性方程求根 C语言实现
标签:计算方法实验
斯特芬森加速迭代法(Steffensen)/埃特金方法(Aitken)较迭代法的优点: 1.迭代法收敛-->加速收敛 2.迭代法不收敛-->收敛
/* 方程f(x) = x^3 - 3 * x - 1 = 0有三个实根x1 = 1.8793, x2 = -0.34727, x3 = -1.53209. 本实验采用下面两种计算格式,求的根x1或x2或x3. */ #include <stdio.h> #include <math.h> double f1(double x){ //迭代函数f1(x) return (3.0 * x + 1) / (x * x); } double f2(double x){ //迭代函数f2(x) return 1.0 / (x * x - 3); } double Steffensen(double x){ return x -((f1(x) - x) * (f1(x) - x) / (f1(f1(x)) - 2.0 * f1(x) + x)); } int main(){ double x1, d; double x0 = 0.5; //迭代初值 double eps = 0.0001; //求解精度 int k = 0; //迭代次数 do{ k++; x1 = Steffensen(x0); ///迭代函数 printf("%d %f\n", k, x1); d = fabs(x1 - x0); x0 = x1; }while(d >= eps); printf("the root of f(x) = 0 is x = %f, k = %d\n", x1, k); return 0; }
f1(x):
f1(x)Steffensen加速后:
f2(x):
f2(x)Steffensen加速后:
相关文章推荐
- 二分法 一元非线性方程求根 C语言实现
- 不动点迭代法 一元非线性方程求根 C语言实现
- 牛顿迭代法 一元非线性方程求根 C语言实现
- 弦截法 一元非线性方程求根 C语言实现
- matlab实现正割法求根和Aitken加速方法
- 用java的jni调用C语言的API,实现带图形界面的一元稀疏多项式计算器
- C语言:用链表实现一元多项式的加法
- PAT Basic 1010. 一元多项式求导 (25)(C语言实现)
- C语言实现斐波那契数列 迭代法
- PAT 3-04 一元多项式的乘法与加法运算(C语言实现)
- 一元多项式的乘法运算(C语言)实现
- 华为面试题:一元多项式的化简 C语言实现源码
- C语言实现一元多项式求积
- 图像二值化(迭代法,C语言实现)
- 一元多项式加减乘除运算-C语言实现
- C语言实现一元多项式的加减运算
- 99、插值法,函数逼近,曲线拟和,数值积分,数值微分,解线性方程组的直接方法,解线性方程组的迭代法,非线性方程求根,常微分方程的数值解法
- 数值分析——c++实现非线性方程求根的方法
- 椭圆曲线密码的C语言设计与实现
- linux下用c语言实现ls -l 对文件或者目录的属性遍历