rtbis.cpp

来自「工程算法 这是一个很有用的工程数值算法集锦」· C++ 代码 · 共 37 行

CPP
37
字号
double rtbis(double x1,double x2,double xacc)
{
	int jmax,j;
	double fmid,f,xmid,dx,t;
    jmax = 40;
    fmid = func(x2);
    f = func(x1);
    if ((f * fmid) >= 0.0) 
	{
        cout<< "root must be bracketed for bisection."<<endl;
    }
    if (f < 0.0)
	{
        t = x1;
		
        dx = x2 - x1;
	}
    else
	{
        t = x2;
        dx = x1 - x2;
    }
    for (j = 1; j<=jmax; j++)
	{
        dx = dx * 0.5;
        xmid = t + dx;
        fmid = func(xmid);
        if (fmid <= 0)
		{
			t= xmid;
		}
        if ((fabs(dx) < xacc) || (fmid == 0)) break;
    }
	return t;
    cout<< "too many bisections"<<endl;
}

⌨️ 快捷键说明

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