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("出现未知错误!"); } }
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("出现未知错误!"); } }
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; }
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("出现未知错误!"); } }