
高分悬赏 求三维数据点C语言插值计算程序
已知计算域点的坐标文件point_coordinate.txt,每一行分别对应该点xyz的坐标,如:000111-1111-11-1-1111-1-11-11-1-1-1...
已知计算域点的坐标文件point_coordinate.txt,每一行分别对应该点xyz的坐标,如:
0 0 0
1 1 1
-1 1 1
1 -1 1
-1 -1 1
1 1 -1
-1 1 -1
1 -1 -1
-1 -1 -1
和点的V数据文件point_data.txt,每一行分别对应该点V数据xyz方向的分量,如:
0 0 0.01
-0.5 0.01 0.01
0.01 -0.5 0.01
0.01 0.5 0.01
0.5 0.01 0.01
-0.3 0.01 0.01
0.01 -0.3 0.01
0.01 0.3 0.01
0.3 0.01 0.01
求一C语言插值计算程序,读入这两个文件,计算计算域内任意点V数据xyz方向的分量,不考虑计算效率和精度,能用就行。 展开
0 0 0
1 1 1
-1 1 1
1 -1 1
-1 -1 1
1 1 -1
-1 1 -1
1 -1 -1
-1 -1 -1
和点的V数据文件point_data.txt,每一行分别对应该点V数据xyz方向的分量,如:
0 0 0.01
-0.5 0.01 0.01
0.01 -0.5 0.01
0.01 0.5 0.01
0.5 0.01 0.01
-0.3 0.01 0.01
0.01 -0.3 0.01
0.01 0.3 0.01
0.3 0.01 0.01
求一C语言插值计算程序,读入这两个文件,计算计算域内任意点V数据xyz方向的分量,不考虑计算效率和精度,能用就行。 展开
2010-07-23
展开全部
问题补充,因字数限制,挪到这
1.拉格朗日插值简介:
对给定的n个插值节点x1,x2,…,xn,及其对应的函数值y1=f(x1), y2=f(x2),…, yn=f(xn);使用拉格朗日插值公式,计算在x点处的对应的函数值f(x);
2.一维拉格朗日插值c语言程序:
Int lagrange(x0, y0, n, x, y)
Float xo[], yo[], x;
Int n;
Float *y
{
Int i, j;
Float p;
*y=0;
If (n>1)
{
For(i=0;i<n;i++)
{
P=1;
For(j=1;j<n;j++)
{
If(i!=J)
P=p*(x-x0[j]/x0[i]-x0[j]);
}
*y=*y+p*y0[i];
Return(0);
}
Else
Return(-1);
}
3.例题。已知函数如下表所示,求x=0.472处的函数值:
X 0.46 0.47 0.48 0.49
Y 0.484655 0.4903745 0.502750 0.511668
计算这个问题的c语言程序如下:
#minclude stdio
#includeM<nath.h>
Main()
{
Float x0[4]={ 0.46, 0.47,0.48,0.49};
Float y0[4]={ 0.484655 ,0.4903745 ,0.502750 ,0.511668};
Float x, y;
Int n, rtn;
N=4;
X=0.472;
Rth=lagrange(x0,y0,n,x,&y);
If(rtn=0)
{
Prinf(“Y(0.472)=:%f\n”,y);
}
Else
{
Prinf(“n must be larger than 1.\n”);
}
}
计算结果:Y(0.472)=:0.495553
4.问题补充
我的问题与上面的例子类似,计算三维空间一点(x,y,z)对应的函数值(Vx,Vy,Vz).不同的是自变量(point_coordinate.txt)为三维空间散乱点(不是正方体的顶点),因变量(point_data.txt)为矢量(向量 )。插值算法比较多,常数法,拉格朗日插值,埃特金插值,三阶样条插值等。最简单的就是常数法,查找离目标点(x,y,z)距离最近的已知自变量(Xi,Yi,Zi),把该点的函数值赋给目标点做函数值,求高手帮忙写写。
1.拉格朗日插值简介:
对给定的n个插值节点x1,x2,…,xn,及其对应的函数值y1=f(x1), y2=f(x2),…, yn=f(xn);使用拉格朗日插值公式,计算在x点处的对应的函数值f(x);
2.一维拉格朗日插值c语言程序:
Int lagrange(x0, y0, n, x, y)
Float xo[], yo[], x;
Int n;
Float *y
{
Int i, j;
Float p;
*y=0;
If (n>1)
{
For(i=0;i<n;i++)
{
P=1;
For(j=1;j<n;j++)
{
If(i!=J)
P=p*(x-x0[j]/x0[i]-x0[j]);
}
*y=*y+p*y0[i];
Return(0);
}
Else
Return(-1);
}
3.例题。已知函数如下表所示,求x=0.472处的函数值:
X 0.46 0.47 0.48 0.49
Y 0.484655 0.4903745 0.502750 0.511668
计算这个问题的c语言程序如下:
#minclude stdio
#includeM<nath.h>
Main()
{
Float x0[4]={ 0.46, 0.47,0.48,0.49};
Float y0[4]={ 0.484655 ,0.4903745 ,0.502750 ,0.511668};
Float x, y;
Int n, rtn;
N=4;
X=0.472;
Rth=lagrange(x0,y0,n,x,&y);
If(rtn=0)
{
Prinf(“Y(0.472)=:%f\n”,y);
}
Else
{
Prinf(“n must be larger than 1.\n”);
}
}
计算结果:Y(0.472)=:0.495553
4.问题补充
我的问题与上面的例子类似,计算三维空间一点(x,y,z)对应的函数值(Vx,Vy,Vz).不同的是自变量(point_coordinate.txt)为三维空间散乱点(不是正方体的顶点),因变量(point_data.txt)为矢量(向量 )。插值算法比较多,常数法,拉格朗日插值,埃特金插值,三阶样条插值等。最简单的就是常数法,查找离目标点(x,y,z)距离最近的已知自变量(Xi,Yi,Zi),把该点的函数值赋给目标点做函数值,求高手帮忙写写。
参考资料: 实用计算机数值计算方法及程序设计(C语言版)
展开全部
学习C语言就上败笔
参考资料: 百度搜索 败笔网络安全小组 第一个就是
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不明白
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询