我应该创建一个按钮,将已经存在的2D数组矩阵转换为单位矩阵。显然,您需要确保原始矩阵中的列数和行数相同,以使其成为单位矩阵,但我对如何执行此操作感到有些困惑。
到目前为止,我有:
private void btnMakeBIdentity_Click(object sender, EventArgs e)
{
double[,] identityMatrixB = new double[matrixBRows, matrixBCols];
if(matrixBRows == matrixBCols)
{
identityMatrixB = IdentityMatrix(matrixBRows);
}
matrixB = identityMatrixB;
matrixToString(matrixB, txtFullMatrixB);
}
方法matrixToString:
private double[,] IdentityMatrix(int n)
{
double[,] result = createMatrix(n, n);
for (int i = 0; i < n; ++i)
result[i,i] = 1.0;
return result;
}
在此代码中:matrixB,matrixBRows,matrixBCols都是该类的全局变量。 Matrix B是使用:
创建的 private void btnCreateMatrixB_Click(object sender, EventArgs e)
{
try
{
matrixBRows = Convert.ToInt32(txtMatrixBRows.Text);
matrixBCols = Convert.ToInt32(txtMatrixBCols.Text);
}
catch (Exception ex)
{
MessageBox.Show("Please check the textboxes for Matrix B's rows and columns. Be sure you are inputing a valid integer.");
}
matrixB = createMatrix(matrixBRows, matrixBCols);
matrixToString(matrixB, txtFullMatrixB);
}
创建Matrix B后给出的输出示例为:
8.3 10 5.2
0.1 6.3 7.8
7.6 1.3 1.1
单击&#34;运行Matrix B标识&#34;运行IdentityMatrix后我明白了:
1.0 10 5.2
0.1 1.0 7.8
7.6 1.3 1.0
任何帮助或建议都会很棒。谢谢!
答案 0 :(得分:4)
你必须将其他元素设置为0.所以你可以这样做:
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
if (i == j)
result[i,j] = 1.0;
else result[i,j] = 0.0;
}
}