steffenson加速收敛法.cpp

来自「大量数值计算的算法」· C++ 代码 · 共 41 行

CPP
41
字号
//*************************************
//程序功能:Steffenson加速收敛法  求线性方程的解
//
//作    者:杭永东
//
//日    期: 2002.03.26
//*************************************

#include <math.h>
#include <iostream.h>
#include <stdio.h>

//*************************************
//
//注:更改此宏定义的表达式可以解不同的线性方程
//   根据宏定义要求,x必须以(x)形式出现式中
//
//*************************************

#define fi(x) atan((x))

long double x0,e;

long double Dd(long double x0)
{
	printf("\n%.9f",x0);
	long double y=fi(x0);
	long double z=fi(y);
	long double x1=x0-pow((y-x0),2.0L)/(z-2.0L*y+x0);

	if((((x1-x0)>0)? (x1-x0): (x0-x1))<e)
		return x1;
	return Dd(x1);
}

main()
{
	cout<<"Please input x0,e:";
	cin>>x0>>e;
	printf("\n%.9f",Dd(x0));
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?