线性插值的dll,大家提意见!
程序代码:using System;
using System.Collections.Generic;
using System.Text;
namespace XXCZ
{
public class Xc
{
public static double CalOne(double x,double y,params double []m) //参数格式x,y,z,共3个点的。其中z就是要求的。
{
double z = 0d;
if (m.Length == 0 || m.Length != 9) //传递的参数不合要求的话,返回0
{
return z;
}
else //符合要求
{
double A = 0d;
try
{
A = 1 / (m[3] *( m[7]-m[1]) + m[6] * ( m[1] - m[4] ) + m[0] * ( m[4] - m[7] )); //求矩阵的行列式的值的倒数
}
catch (ArithmeticException)
{
return z;
}
//if (A < 0d) //行列式的值取正
//A = -1.0d * A;
double a0 = A * (m[3] * m[7] - m[4] * m[6]) * m[2]+A * (m[6] * m[1] - m[0] * m[7] ) * m[5]+A * ( m[0] * m [4] - m[1] * m[3] ) *m[8]; //求线性参数,下二个相同
double a1 = A * (m[4] - m[7]) * m[2] + A * (m[7] - m[1]) * m[5] + A * (m[1] - m[7]) * m[8];
double a2 = A * (m[6] - m[3]) * m[2] + A * (m[0] - m[6]) * m[5] + A * (m[3] - m[0]) * m[8];
z = a0 + a1 * x + a2 * y;
return z;
}
}
}
}
关于线性插值的定义大家还请看看相关的书!我这程序是死的,用伴随矩阵来求矩阵的逆,老老实实的矩阵运算!但是运算结果有点问题(主要是精度,偏差大),该如何改进?[ 本帖最后由 qq1023569223 于 2011-4-13 17:56 编辑 ]









正吧!

结了,东西留下了!