📄 chazhi.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 + -