最小二乘法C#源码转
来源:互联网 发布:c语言四则运算程序 编辑:程序博客网 时间:2024/05/17 22:27
#region 最小二乘法拟合
///<summary>
///用最小二乘法拟合二元多次曲线
///例如y=ax+b
///其中MultiLine将返回a,b两个参数。
///a对应MultiLine[1]
///b对应MultiLine[0]
///</summary>
///<param name="arrX">已知点的x坐标集合</param>
///<param name="arrY">已知点的y坐标集合</param>
///<param name="length">已知点的个数</param>
///<param name="dimension">方程的最高次数</param>
publicstaticdouble[]MultiLine(double[] arrX,double[] arrY,int length,int dimension)//二元多次线性方程拟合曲线
{
int n = dimension+1;//dimension次方程需要求 dimension+1个 系数
double[,]Guass=newdouble[n, n +1];//高斯矩阵 例如:y=a0+a1*x+a2*x*x
for(int i =0; i < n; i++)
{
int j;
for(j=0; j < n; j++)
{
Guass[i, j]=SumArr(arrX, j + i, length);
}
Guass[i, j]=SumArr(arrX, i, arrY,1, length);
}
returnComputGauss(Guass, n);
}
privatestaticdoubleSumArr(double[] arr,int n,int length)//求数组的元素的n次方的和
{
double s =0;
for(int i =0; i < length; i++)
{
if(arr[i]!=0|| n!=0)
s= s+Math.Pow(arr[i], n);
else
s= s+1;
}
return s;
}
privatestaticdoubleSumArr(double[] arr1,int n1,double[] arr2,int n2,int length)
{
double s =0;
for(int i =0; i < length; i++)
{
if((arr1[i]!=0|| n1!=0)&&(arr2[i]!=0|| n2!=0))
s= s+Math.Pow(arr1[i], n1)*Math.Pow(arr2[i], n2);
else
s= s+1;
}
return s;
}
privatestaticdouble[]ComputGauss(double[,]Guass,int n)
{
int i, j;
int k, m;
double temp;
double max;
double s;
double[] x =newdouble[n];
for(i=0; i < n; i++) x[i]=0.0;//初始化
for(j=0; j < n; j++)
{
max=0;
k= j;
for(i= j; i < n; i++)
{
if(Math.Abs(Guass[i, j])> max)
{
max=Guass[i, j];
k= i;
}
}
if(k!= j)
{
for(m= j; m < n+1; m++)
{
temp=Guass[j, m];
Guass[j, m]=Guass[k, m];
Guass[k, m]= temp;
}
}
if(0== max)
{
// "此线性方程为奇异线性方程"
return x;
}
for(i= j+1; i < n; i++)
{
s=Guass[i, j];
for(m= j; m < n+1; m++)
{
Guass[i, m]=Guass[i, m]-Guass[j, m]* s/(Guass[j, j]);
}
}
}
//结束for (j=0;j<n;j++)
for(i= n-1; i >=0; i--)
{
s=0;
for(j= i+1; j < n; j++)
{
s= s+Guass[i, j]* x[j];
}
x[i]=(Guass[i, n]- s)/Guass[i, i];
}
return x;
}//返回值是函数的系数
#endregion
0 0
- 最小二乘法C#源码转
- IOS最小二乘法源码
- C#最小二乘法直线拟合算法
- 最小二乘法C#实现,简单代码
- 最小二乘法(转)
- 最小二乘法
- 最小二乘法
- 最小二乘法
- 最小二乘法
- 最小二乘法
- 最小二乘法
- 最小二乘法
- 最小二乘法
- 最小二乘法
- 最小二乘法
- 最小二乘法
- 最小二乘法
- 最小二乘法
- 内核和用户空间的消息传递-异步通知 (1)
- ajax长连接
- Java-Collections的sort方法对 list 进行排序
- java的反射原理
- POJ 2249 Binomial Showdown(排列组合)
- 最小二乘法C#源码转
- 百度地图只定位
- bootstrap使用问题记录1
- Swift学习第八枪--协议(二)
- hadoop学习之HDFS(2.2):centOS7安装高可用(HA)完全分布式集群hadoop2.7.2
- C#初学者对Equals方法的几个常见误解
- 1 微信公众号申请
- Lesson two
- android studio插件