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

📄 新建 文本文档.txt

📁 对采集的数据进行处理
💻 TXT
字号:
bool chebyshev_interp_C(long iNPoints, long  iNRank, double dTimeObs[60], double AObs[60],
					   double dTStart, double dTEnd, double Coff[MODELCLASS + 1])
{  
	long M, N, i, j, k;
	double t[60], A[60], dt;
	double B[60][5], BTB[5][5], F[5], Q[5], W, G, tao; //T矩阵 BTB BTA切比雪夫多项式及其系数矩阵
	

	M = iNPoints;      //点数
	N = iNRank + 1;      //阶数

	for (i=0; i<M; i++)
	{
		t[i] = dTimeObs[i];
		A[i] = AObs[i];
	}

	dt=dTEnd - dTStart;

    
	for (i=0; i<M; i++)                   //且比雪夫多项式B[M][N]建立
	{
		tao = 2 * (t[i] - dTStart) / dt - 1;
	    B[i][0] = 1.;
		B[i][1] = tao; 
		for (j=2; j<N+1; j++)
		{
			B[i][j] = 2 * tao * B[i][j-1] - B[i][j-2];
		}
	}
	
	for (i=0; i<N; i++)                  //求: BTB->n[N][N] ;BTX->F[N]
	{ 
		for (j=0; j<=i; j++)
		{
			BTB[i][j] = 0;
			for (k=0; k<M; k++)
			{
				BTB[i][j] += B[k][i] * B[k][j];
			}
			BTB[j][i] = BTB[i][j];
		}
		F[i] = 0;
		for (k=0; k<M; k++)
		{
			F[i] += B[k][i] * A[k];
		}
	}

//////////////////////////////////最小二乘////////////////////////////////	
	for (k=0; k<N; k++)
	{
		M = N - k - 1;
		if ((BTB[0][0] > -1.e-7) && (BTB[0][0] < 1.e-7))
		{
			printf("In chebyshev_interp_C: Matrix Singularity Error !!!\n");
			return (false);
		}

		W = 1. / BTB[0][0];

		for (i=1; i<N; i++)
		{
			G = BTB[i][0];
			Q[i] = G * W;
			
			if (i <= M)
			{
				Q[i] = -Q[i];
			}

			for (j=1; j<=i; j++)
			{
				BTB[i-1][j-1] = BTB[i][j] + G * Q[j];
			}
		}
		BTB[N-1][N-1] = W;

		for (i=1; i<N; i++)
		{
			BTB[N-1][i-1] = Q[i];
		}
	}

	for (i=0; i<N-1; i++)
	{
		for (j=i+1; j<N; j++) 
		{
			BTB[i][j] = BTB[j][i];
		}
	}

	for (i=0; i<N; i++)
	{
		Q[i] = F[i];
	}

	for (i=0; i<N; i++)
	{
		A[i] = 0.;
		for (j=0; j<N; j++) 
		{
			A[i] += Q[j] * BTB[i][j];
		}
	}

	for (i=0; i<N; i++)
	{
		Coff[i] = A[i];
	}

	return (true);
}

⌨️ 快捷键说明

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