• / 4
  • 下载费用:10 金币  

最小二乘法拟合任意次曲线(C#).doc

关 键 词:
最小二乘法拟合任意次曲线(C#).doc
资源描述:
最小二乘法拟合任意次曲线(C#)说明:代码较为简洁没有过多的说明,如有不明白之处可查阅相关最小二乘法计算步骤资料和求解线性方程组的资料。另外该方法只能实现二元N次拟合,多元方程不适用。以下是最小二乘法类的实现:public class MatrixEquation{private double[,] gaussMatrix;private int coe;public MatrixEquation(){}public MatrixEquation(double[] arrX, double[] arrY, int n){coe = n;gaussMatrix= GetGauss(GetXPowSum(arrX, n), GetXPowYSum(arrX, arrY, n), n);}public double[,] GetGaussMatrix(){ return gaussMatrix;}public double[] GetResult(){return ComputeGauss(gaussMatrix, coe);}/// /// 计算获取x散点的幂次和数组/// /// x散点序列/// 函数拟合次数/// protected double[] GetXPowSum(double[] arrX, int n){int m = arrX.Length;//X散点的个数double[] xPow = new double[2 * n + 1]; //存储X散点的幂次值for (int i = 0; i /// 计算获取xy的幂次和序列/// /// x散点序列/// y散点序列/// 拟合曲线次数/// protected double[] GetXPowYSum(double[] arrX, double[] arrY, int n){int m = arrX.Length;//X散点的个数double[] xyPow = new double[n + 1]; //仓储X散点的幂次值for (int i = 0; i /// 获取高斯矩阵(增广矩阵)/// /// X的幂次和/// XY的幂次和/// 拟合曲线次数/// protected double[,] GetGauss(double[] arrX, double[] arrXY, int n){double[,] gauss = new double[n+1, n + 2];for (int i = 0; i /// 求解拟合曲线的系数/// /// 线性方程的增广矩阵/// 方程次数/// protected double[] ComputeGauss(double[,] gauss, int n){double[] a = new double[n + 1];double s;int matrixLine = n + 1;for (int i = 0; i max){max = gauss[i, j];k = i;}}//判断 j行否为最大值行 若不是将j行调换为最大值行if (k != j){double temp;for (int m = j; m = 0; i--){s = 0;for (int j = i + 1; j matrixLine; j++){s += gauss[i, j] * a[j];}a[i] =Math.Round( (gauss[i, matrixLine] - s) / gauss[i, i],6);}//返回方程的解 即拟合曲线的系数return a;}}
展开阅读全文
  微传网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:最小二乘法拟合任意次曲线(C#).doc
链接地址:https://www.weizhuannet.com/p-9847312.html
微传网是一个办公文档、学习资料下载的在线文档分享平台!

微传网博客

网站资源均来自网络,如有侵权,请联系客服删除!

 网站客服QQ:80879498  会员QQ群:727456886

copyright@ 2018-2028 微传网络工作室版权所有

     经营许可证编号:冀ICP备18006529号-1 ,公安局备案号:13028102000124

收起
展开