rzextr.cpp

来自「提供了4种解常微分方程组的c++代码:定步长四阶龙格-库塔(Runge-Kutt」· C++ 代码 · 共 57 行

CPP
57
字号
void rzextr(int iest,double xest,double  yest[],double yz[],double  dy[],int nv,int nuse)
{
	int j,m1,k;
    double  fx[8],yy,v,c,b1,b,ddy;
    static double x[12],d[11][ 8];
    x[iest] = xest;
    if (iest == 1)
	{
        for (j = 1; j<= nv; j++)
		{
            yz[j] = yest[j];
            d[j][1] = yest[j];
            dy[j] = yest[j];
		}
	}
    else
	{
        m1 = iest;
        if (nuse < iest) m1 = nuse;
        for( k = 1; k<= m1 - 1; k++)
		{
            fx[k + 1] = x[iest - k] / xest;
        }
        for (j = 1; j<= nv; j++)
		{
            yy = yest[j];
            v = d[j][1];
            c = yy;
            d[j][1] = yy;
            for (k = 2; k<=m1; k++)
			{
                b1 = fx[k] * v;
                b = b1 - c;
                if( b != 0.0)
				{
                    b = (c - v) / b;
                    ddy = c * b;
                    c = b1 * b;
				}
                else
				{
                    ddy = v;
                }
                if (k != m1)  v = d[j][k];
                d[j][k] = ddy;
                yy = yy + ddy;
            }
            dy[j] = ddy;
            yz[j] = yy;
		}
    }
	for (j = 1; j<=7; j++)
	{
    fx[j]=0.0;
	}
}

⌨️ 快捷键说明

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