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

📄 chazhi.cpp

📁 数值分析中实现对给定数表进行插值、曲面拟合、逼近
💻 CPP
字号:
#include "ChaZhi.h"

//初始化f(x,y)
void IniTabFxy(POINT fxy[11][21])
{
	int i,j;
	for (i=0; i<11; i++)
	{
		for (j=0; j<21; j++)
		{
			fxy[i][j].a1 = i * 0.08;
            fxy[i][j].a2 = 0.5 + j * 0.05;
		}
	}
}

//作分片二次插值
double PartInsertValue(POINT ftu[6][6],double t,double u)
{
	int i,j,m,n;
	double p22 = 0.0;
	double h1 = 0.2, h2 = 0.4;
	double Lk[3] = {0}, Lr[3] = {0};
	//找到满足条件的i,使得ti-h1/2 < t < ti+h1/2
	if (t <= ftu[1][0].a1 - h1/2) i=1;
	else if (t > ftu[4][0].a1 + h1/2) i=4;  //这里节点数目为n+1=6,故n-1=4
	else
	{
		for (i=0; t > (ftu[i][0].a1 + h1 / 2); i++)
		{}
	}
	//找到满足条件的j,使得uj-h2/2 < u < uj+h2/2
    if (u <= ftu[0][1].a2 - h2/2) j=1;
	else if (u > ftu[0][4].a2 + h2/2) j=4;  
	else
	{
		for (j=0; u > (ftu[0][j].a2 + h2 / 2); j++)
		{}
		
	}
	//计算Lk和Lr
	for (m=0; m<=2; m++)
	{
		Lk[m] = Lr[m] = 1.0;
		for (n=0; n<=2; n++)
		{
			if (n != m)
			{
				Lk[m] = Lk[m] * (t-ftu[i+n-1][0].a1)/(ftu[i+m-1][0].a1 - ftu[i+n-1][0].a1);
				Lr[m] = Lr[m] * (u-ftu[0][j+n-1].a2)/(ftu[0][j+m-1].a2 - ftu[0][j+n-1].a2);
			}
		}
	}

	for (m=0; m<3; m++)
	{
		for (n=0; n<3; n++)
		{
			p22 = p22 + Lk[m]*Lr[n]*ftu[m+i-1][n+j-1].a3;
		}
	}
	return p22;
}

⌨️ 快捷键说明

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