⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 difeq.cpp

📁 实用的算法
💻 CPP
字号:
void difeq(int k, int k1, int k2, int jsf, int is1, int isf,
		   int indexv[], int ne, double s[], int nsi, int nsj,
		   double y[], int nyj, int nyk)
{
    int m = 41;
    if (k == k1)
	{
        if (n + mm % 2 == 1)
		{
            s[2*nsj+3 + indexv[1]] = 1.0;  //方程(15-37)
            s[2*nsj+3 + indexv[2]] = 0.0;
            s[2*nsj+3 + indexv[3]] = 0.0;
            s[2*nsj+jsf] = y[1];  //方程(15-31)
		}
        else
		{
            s[2*nsj+3 + indexv[1]] = 0.0;  //方程(15-37)
            s[2*nsj+3 + indexv[2]] = 1.0;
            s[2*nsj+3 + indexv[3]] = 0.0;
            s[2*nsj+jsf] = y[nyk+1];  //方程(15-31)
        }
	}
    else
	{
		if (k > k2)
		{
			s[3 + indexv[1]] = -(y[2*nyk+m] - c2) / (2.0 *
				         double(mm + 1.0));    //方程(15-38)
			s[3 + indexv[2]] = 1.0;
			s[3 + indexv[3]] = -y[m] / (2.0 * double(mm + 1.0));
			s[jsf] = y[nyk+m] - (y[2*nyk+m] - c2) * y[m] / (2.0 *
				         double(mm + 1.0));   //方程(15-32)
			s[nsj + 3 + indexv[1]] = 1.0;     //方程(15-39)
			s[nsj + 3 + indexv[2]] = 0.0;
			s[nsj + 3 + indexv[3]] = 0.0;
			s[nsj + jsf] = y[m] - anorm;      //方程(15-33)
		}
		else
		{
			s[indexv[1]] = -1.0;              //方程(15-34)
			s[indexv[2]] = -0.5 * h;
			s[indexv[3]] = 0.0;
			s[3 + indexv[1]] = 1.0;
			s[3 + indexv[2]] = -0.5 * h;
			s[3 + indexv[3]] = 0.0;
			double temp = h/(1.0 - pow((x[k]+x[k - 1]),2)* 0.25);
			double temp2= 0.5 * (y[2*nyk+k] + y[2*nyk+k - 1]) - c2
				          * 0.25 * pow((x[k] + x[k - 1]) , 2);
			s[nsj+indexv[1]] = temp * temp2 * 0.5;  //方程(15-35)
			s[nsj+indexv[2]] = -1.0 - 0.5 * temp * double(mm + 1.0)
				               * (x[k] + x[k - 1]);
			s[nsj+indexv[3]] = 0.25 * temp * (y[k] + y[k - 1]);
			s[nsj+3 + indexv[1]] = s[nsj+indexv[1]];
			s[nsj+3 + indexv[2]] = 2.0 + s[nsj+indexv[2]];
			s[nsj+3 + indexv[3]] = s[nsj+indexv[3]];
			s[2*nsj+indexv[1]] = 0.0;  //方程(15-36)
			s[2*nsj+indexv[2]] = 0.0;
			s[2*nsj+indexv[3]] = -1.0;
			s[2*nsj+3 + indexv[1]] = 0.0;
			s[2*nsj+3 + indexv[2]] = 0.0;
			s[2*nsj+3 + indexv[3]] = 1.0;
			s[jsf] = y[k] - y[k - 1] - 0.5 * h * (y[nyk+k] +
				       y[nyk+k - 1]);  //方程(15-26)
			double dum = (x[k] + x[k - 1]) * 0.5 * double(mm + 1.0)
				        * (y[nyk+k] + y[nyk+k - 1]);    //方程(15-27)
			dum = dum - temp2 * 0.5 * (y[k] + y[k - 1]);
			s[nsj+jsf] = y[nyk+k] - y[nyk+k - 1] - temp * dum;
			s[2*nsj+jsf] = y[2*nyk+k] - y[2*nyk+k - 1]; //方程(15-30)
		}
	}
}

⌨️ 快捷键说明

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