コード例 #1
0
 private void Inversebutton_Click(object sender, EventArgs e)
 {
     try
     {
         if (MatrixDTextBox.Text == "")
         {
             MessageBox.Show("请输入数据", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
             return;
         }
         if (!matrixD.ReadAndCheckMatrix(MatrixDTextBox))
         {
             MessageBox.Show("矩阵行列有误", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
             return;
         }
         if (!OneMatrix.MatrixInverse(matrixD))
         {
             MessageBox.Show("该矩阵无逆矩阵", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
             return;
         }
         else
         {
             MatrixETextBox.Text = "";
             var fontsize = (int)(MatrixETextBox.Width / (Math.Max(matrixD.Columns, matrixD.Rows))) / 15;
             MatrixETextBox.Font = new System.Drawing.Font(MatrixETextBox.Font.FontFamily, fontsize);
             Matrix.WriteMatrix(MatrixETextBox, matrixD);
         }
     }
     catch
     {
         MessageBox.Show("出现未知错误!");
     }
 }
コード例 #2
0
 private void ComputeRankbutton_Click(object sender, EventArgs e)
 {
     try
     {
         if (MatrixDTextBox.Text == "")
         {
             MessageBox.Show("请输入数据", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
             return;
         }
         if (!matrixD.ReadAndCheckMatrix(MatrixDTextBox))
         {
             MessageBox.Show("矩阵行列有误", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
             return;
         }
         //matrixE.Init(0, 0);
         MatrixETextBox.Text = "";
         int      temp   = OneMatrix.ComputeRankGauss(matrixD);
         double[] result = new double[1] {
             temp
         };
         matrixE.Init(1, 1);
         matrixE.SetData(result);
         var fontsize = (int)(MatrixETextBox.Width / (Math.Max(matrixE.Columns, matrixE.Rows))) / 5;
         MatrixETextBox.Font = new System.Drawing.Font(MatrixETextBox.Font.FontFamily, fontsize);
         Matrix.WriteMatrix(MatrixETextBox, matrixE);
     }
     catch
     {
         MessageBox.Show("出现未知错误!");
     }
 }
コード例 #3
0
 private void Transposebutton_Click(object sender, EventArgs e)
 {
     if (MatrixDTextBox.Text == "")
     {
         MessageBox.Show("请输入数据", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
         return;
     }
     if (!matrixD.ReadAndCheckMatrix(MatrixDTextBox))
     {
         MessageBox.Show("矩阵行列有误", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
         return;
     }
     try
     {
         MatrixETextBox.Text = "";
         matrixE             = OneMatrix.MatrixTranspose(matrixD);
         Matrix.WriteMatrix(MatrixETextBox, matrixE);
         var fontsize = (int)(MatrixETextBox.Width / (Math.Max(matrixE.Columns, matrixE.Rows))) / 5;
         MatrixETextBox.Font = new System.Drawing.Font(MatrixETextBox.Font.FontFamily, fontsize);
     }
     catch
     {
         MessageBox.Show("出现未知错误!");
     }
     //var buttonsize = MatrixETextBox.Font.Size;
 }
コード例 #4
0
        private void ComputeEvJbutton_Click(object sender, EventArgs e)
        {
            try
            {
                if (MatrixDTextBox.Text == "")
                {
                    MessageBox.Show("请输入数据", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                if (!matrixD.ReadAndCheckMatrix(MatrixDTextBox))
                {
                    MessageBox.Show("矩阵行列有误", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                if (matrixD.GetNumColumns() != matrixD.GetNumRows())
                {
                    MessageBox.Show("该矩阵不为方阵,无法求出特征值与特征向量", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                //MatrixEvjForm form = new MatrixEvjForm();
                double[] Evj1 = new double[matrixD.GetNumRows()];
                if (!OneMatrix.ComputeEvJacobi(matrixD, Evj1, matrixE, 100, 0.1))
                {
                    MessageBox.Show("特征值与特征向量求解失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                else
                {
                    //matrixEvj1.Init(0, 0);
                    matrixEvj1textbox.Text = "";
                    //matrixEvj2.Init(0, 0);
                    matrixEvj2textbox.Text = "";

                    matrixEvj1 = new Matrix(Evj1.Length, Evj1.Length);
                    var fontsize1 = (int)(matrixEvj1textbox.Width / (Math.Max(matrixEvj1.Columns, matrixEvj1.Rows))) / 3;
                    matrixEvj1textbox.Font = new System.Drawing.Font(matrixEvj1textbox.Font.FontFamily, fontsize1);
                    matrixEvj1.DiagonalMatrix(Evj1);
                    matrixEvj2 = new Matrix(matrixE);
                    var fontsize2 = (int)(matrixEvj2textbox.Width / (Math.Max(matrixEvj2.Columns, matrixEvj2.Rows))) / 4;
                    matrixEvj2textbox.Font = new System.Drawing.Font(matrixEvj2textbox.Font.FontFamily, fontsize2);
                    Matrix.WriteMatrix(matrixEvj1textbox, matrixEvj1);
                    Matrix.WriteMatrix(matrixEvj2textbox, matrixEvj2);
                }
            }
            catch
            {
                MessageBox.Show("出现未知错误!");
            }
        }