Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
代码2:用定点法求根的必要条件 我尝试用C++的简单定点法求根,但点是 XR < /代码>是代码> f(x)< /C>的根,也是拐点。此外,方程比普通的不动点法稍微复杂一点。 方程中添加常数c,以检查收敛到根xr的速度_C++_Numerical Methods - Fatal编程技术网

代码2:用定点法求根的必要条件 我尝试用C++的简单定点法求根,但点是 XR < /代码>是代码> f(x)< /C>的根,也是拐点。此外,方程比普通的不动点法稍微复杂一点。 方程中添加常数c,以检查收敛到根xr的速度

代码2:用定点法求根的必要条件 我尝试用C++的简单定点法求根,但点是 XR < /代码>是代码> f(x)< /C>的根,也是拐点。此外,方程比普通的不动点法稍微复杂一点。 方程中添加常数c,以检查收敛到根xr的速度,c++,numerical-methods,C++,Numerical Methods,我打算找到一个根,然后检查根是否是拐点,但它不起作用,我在代码中找不到问题。 我需要你的帮助 真正的问题是 考虑根查找问题f(x)=0与根xr,与f(x)=0。 将其转化为简单的定点问题 x=x+c*f(x)=g(x) c是一个非零常数。如何选择c以确保数据的快速收敛 x(n+1)=x(n)+c*f(x(n)) ( x(n+1) means the value of the n+1th of X ) 到c(前提是选择的x0距离xr足够近?)。将选择c的方法应用于根查找问题x*x*x-5=0

我打算找到一个根,然后检查根是否是拐点,但它不起作用,我在代码中找不到问题。 我需要你的帮助

真正的问题是

考虑根查找问题
f(x)=0
与根
xr
,与f
(x)=0
。 将其转化为简单的定点问题

x=x+c*f(x)=g(x)
c是一个非零常数。如何选择c以确保数据的快速收敛

x(n+1)=x(n)+c*f(x(n))  ( x(n+1) means the value of the n+1th of X )
c
(前提是选择的
x0
距离xr足够近?)。将选择c的方法应用于根查找问题
x*x*x-5=0
。用
x0=1.0
启动程序,用几个c值运行,并讨论结果中观察到的趋势(换句话说,c值对收敛行为的影响)

#包括
#包括
#包括
#包括
双gx(双x,双c)
{
返回(x+c*(x*x*x-5));
}
双gxpr(双x,双c)
{
返回(x+c*(3*x*x));
}
无效简单固定点(双x,双c)
{
int i=1;
长双x2=0.0;
长双x3=0.0;
长双ea=0.0;
长双ea2=0.0;
长双es=功率(10,-6);
printf(“简单定点法”);
Lbl:
x2=gx(x,c);
printf(“迭代=%d根=%.5f近似错误=%.15f\n”,i++,
x2,ea);
如果(ea=fabs((x2-x)/x2*100)希望这对您有所帮助:

//f(x+dx) = f(x) + (dfdx) * dx;
eps = 1.0;    
dx = 1e-7; //something small
x = x0;
while (eps > mineps) {
  f1 = f(x);
  f2 = f(x + dx);      
  f3 = f(x + dx + dx);        
  d2fdx2 = (f3 - f2 - f2 + f1) / dx / dx;
  dfdx = (f2 - f1) / dx;
  x -= (relax1 * f1 / dfdx + relax2 * dfdx / d2fdx2); //relax - something less 1
  eps = max(abs(dfdx), abs(f1));
}

函数
f(x)=x^3-5
f'(x)=3x^2
x=0
处有一个拐点,但它不是
f
的根。你的意思是
f(x)=(x-5)^ 3 < /代码>?请更改C++代码以不使用<代码> Goto < /Cord>语句。请解释函数<代码> GXPR <代码>的作用,因为任务不重复迭代<代码> xNETX+x+C*F'(x)。
Goto很好。忽略上面的帖子。@LutzL实际上,正如你所说的,这是不能接受的。但是,当使用方程xnext=x+c*f(x)时,可以得到xr。@LutzL gxpr是得到一个拐点。我想表达g'(xr)=xr xr+c*f'(xr)
//f(x+dx) = f(x) + (dfdx) * dx;
eps = 1.0;    
dx = 1e-7; //something small
x = x0;
while (eps > mineps) {
  f1 = f(x);
  f2 = f(x + dx);      
  f3 = f(x + dx + dx);        
  d2fdx2 = (f3 - f2 - f2 + f1) / dx / dx;
  dfdx = (f2 - f1) / dx;
  x -= (relax1 * f1 / dfdx + relax2 * dfdx / d2fdx2); //relax - something less 1
  eps = max(abs(dfdx), abs(f1));
}