• C# 多点最小二乘法拟合平面算法


         /// <summary>
            /// 实现三阶行列式求值计算
            /// </summary>
            /// <param name="x1"></param>
            /// <param name="y1"></param>
            /// <param name="z1"></param>
            /// <param name="x2"></param>
            /// <param name="y2"></param>
            /// <param name="z2"></param>
            /// <param name="x3"></param>
            /// <param name="y3"></param>
            /// <param name="z3"></param>
            /// <returns></returns>
            private double gDeterm3(double x1,
                                    double y1,
                                    double z1,
                                    double x2,
                                    double y2,
                                    double z2,
                                    double x3,
                                    double y3,
                                    double z3)
            {
                return x1 * y2 * z3 +
                       y1 * z2 * x3 +
                       z1 * x2 * y3 -
                       z1 * y2 * x3 -
                       y1 * x2 * z3 -
                       x1 * z2 * y3;
            }
    
    
            
            private void button1_Click(object sender, EventArgs e)
            {   //初始化坐标值
                double[] xArr = new double[16] { 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3 };
                double[] yArr = new double[16] { 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3 };
                double[] zArr = new double[16] { 5, 4, 1, 1, 9, 7, 3, -1, 9, 5, 2, -3, 1, -2, 0, 3 };
                //初始化需要的变量
                double x1 = 0d, x2 = 0d, y1 = 0d, y2 = 0d, z1 = 0d, xz = 0d, yz = 0d, xy = 0d, r = 0d;

           //计算 for (int i = 0; i < xArr.Length; i++) { x1 += xArr[i]; x2 += xArr[i] * xArr[i]; xz += xArr[i] * zArr[i]; y1 += yArr[i]; y2 += yArr[i] * yArr[i]; yz += yArr[i] * zArr[i]; z1 += zArr[i]; xy += xArr[i] * yArr[i]; } string res = ""; r = gDeterm3(x2, xy, x1, xy, y2, y1, x1, y1, xArr.Length); res += "R ="+r+","; if (r != 0) { res += "A =" + gDeterm3(xz, xy, x1, yz, y2, y1, z1, y1, xArr.Length) / r + ","; res += "B =" + gDeterm3(x2, xz, x1, xy, yz, y1, x1, z1, xArr.Length) / r + ","; res += "C =" + gDeterm3(x2, xy, xz, xy, y2, yz, x1, y1, z1) / r; } this.label1.Text = res; }

      

  • 相关阅读:
    流量数据iftop命令
    DNS A记录和CNAME记录
    centos6.5安装mysql
    Python列表插入字典(转)
    列表转字典
    python 二分法O(logn)
    centos 6.5搭建Samba
    反爬虫-----看这一篇就够了
    windows常用命令
    requests中文页面乱码解决方案【转】
  • 原文地址:https://www.cnblogs.com/XuYiHe/p/16152464.html
Copyright © 2020-2023  润新知