计算行列式a 1 0 0式

下次自动登录
现在的位置:
& 综合 & 正文
行列式计算程序设计
由于里面有很多公式,不便于编辑,所以整理成图片!在后面附有所有!
综合上面的分析,现定义一个函数CalculateDet(double[,] A, int DetN)用于计算矩阵A[n,n]的行列式,其中输入参数A表示矩阵,DetN表示矩阵的阶数。该函数的如下:
private double CalculateDet(double[,] A, int DetN)
double result=1;
int n = DetN;
for (int m = 0; m & m++)
//判断A[m,m]是否为0,如果为0,则找一个不为的A[p,m],然后将m行和p行调换即可
if (A[m, m] == 0)
int p = m + 1;
while (p & n-1 && A[p, m] == 0)
if (p == n )//如果p=n,则表示该列中元素全为0,接下来不用计算,直接输出结果为0
result = 0;
goto handle01;
double tempE
for (int q = 0; q & q++)
tempExchange=A[m,q];
A[m, q] = A[p, q];
A[p, q] = tempE
for (int i = m + 1; i & i++)
double temp = A / A[m, m];
for (int j = m + 1; j & j++)
A = A - temp * A[m, j];
for (int i = 0; i & i++)
result *= A;
} 设计程序界面如下(各控件名称如下,没有指定名称的控件其名称与显示的名称一样):
程序中所有代码如下: using S using System.Collections.G ponentM using System.D using System.D using System.T using System.Windows.F
namespace 矩阵计算程序 {
public partial class 行列式计算 : Form
public 行列式计算()
InitializeComponent();
private double CalculateDet(double[,] A, int DetN)
double result=1;
int n = DetN;
for (int m = 0; m & m++)
//判断A[m,m]是否为0,如果为0,则找一个不为的A[p,m],然后将m行和p行调换即可
if (A[m, m] == 0)
int p = m + 1;
while (p & n-1 && A[p, m] == 0)
if (p == n )//如果p=n,则表示该列中元素全为0,接下来不用计算,直接输出结果为0
result = 0;
goto handle01;
double tempE
for (int q = 0; q & q++)
tempExchange=A[m,q];
A[m, q] = A[p, q];
A[p, q] = tempE
for (int i = m + 1; i & i++)
double temp = A / A[m, m];
for (int j = m + 1; j & j++)
A = A - temp * A[m, j];
for (int i = 0; i & i++)
result *= A;
private double CalculateDetWithProcess(double[,] A, int DetN)
double result = 1;
int n = DetN;
ShowCalProcess(A,0);
for (int m = 0; m & m++)
//判断A[m,m]是否为0,如果为0,则找一个不为的A[p,m],然后将m行和p行调换即可
if (A[m, m] == 0)
int p = m + 1;
while (p & n - 1 && A[p, m] == 0)
if (p == n)//如果p=n,则表示该列中元素全为0,接下来不用计算,直接输出结果为0
result = 0;
goto handle01;
double tempE
for (int q = 0; q & q++)
tempExchange = A[m, q];
A[m, q] = A[p, q];
A[p, q] = tempE
for (int i = m + 1; i & i++)
double temp = A / A[m, m];
for (int j = m + 1; j & j++)
A = A - temp * A[m, j];
//使m列中m行一下元素全部设置为0
for (int i = m+1; i & i++)
ShowCalProcess(A,m+1);
for (int i = 0; i & i++)
result *= A;
private void 建立行列式_Click(object sender, EventArgs e)
DetDataGridView.Columns.Clear();
int detN = int.Parse(DetNumbertextBox.Text);
if (detN & 2)
MessageBox.Show("行列式行数小于2!请重新输入行数!");
for (int i = 0; i & detN; i++)
DetDataGridView.Columns.Add(i.ToString(), "第" + (1 + i).ToString()+"列");
DetDataGridView.Rows.Add(detN);
private void 计算行列式值_Click(object sender, EventArgs e)
int detN = int.Parse(DetNumbertextBox.Text);
double[,] A = new double[detN, detN];
for (int i = 0; i & detN; i++)
for (int j = 0; j & detN; j++)
A= double.Parse(DetDataGridView.Rows.Cells[j].Value.ToString());
result = CalculateDet(A, detN);
ProcessRichTextBox.Text += "/n计算行列式结果为:" + result.ToString();
private void 显示计算过程_Click(object sender, EventArgs e)
int detN = int.Parse(DetNumbertextBox.Text);
double[,] A = new double[detN, detN];
for (int i = 0; i & detN; i++)
for (int j = 0; j & detN; j++)
A = double.Parse(DetDataGridView.Rows.Cells[j].Value.ToString());
result = CalculateDetWithProcess(A, detN);
ProcessRichTextBox.Text += "/n计算行列式结果为:"+result.ToString();
private void ShowCalProcess(double[,] A, int time)
string s="第"+time.ToString()+"次计算结果:/n";
int detN = int.Parse(DetNumbertextBox.Text);
for (int i = 0; i & detN; i++)
for (int j = 0; j & detN-1; j++)
s+=A.ToString()+",";
s += A + "/n";
ProcessRichTextBox.Text +=
} } 运行程序,计算下面矩阵的行列式:
其计算结果为,如下图所示:
&&&&推荐文章:
【上篇】【下篇】1.3.5 用降阶法计算行列式(2)
&&& 例2.计算行列式.
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&& .
点击此处发表评论
验证码:&&
Copyright @ 2000- All Rights Reserved
sciyard数苑网 版权所有扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
四阶行列式计算4 1 2 4 1 2 0 2 10 5 2 0 0 1 1 7
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
4,1,2,41,2,0,210,5,2,00,1,1,7r2-(1/4)r1:4,1,2,40,7/4,-1/2,110,5,2,00,1,1,7r3-(5/2)r1:4,1,2,40,7/4,-1/2,10,5/2,-3,-100,1,1,7r3-(10/7)r2:4,1,2,40,7/4,-1/2,10,0,-16/7,-80/70,1,1,7r4-(4/7)r2:4,1,2,40,7/4,-1/2,10,0,-16/7,-80/70,0,9/7,45/7r4-(9/16)r3:4,1,2,40,7/4,-1/2,10,0,-16/7,-80/70,0,0,0=4*(7/4)*(-16/7)*0=0
为您推荐:
其他类似问题
用行列式展开定理,用秩的方法太麻烦
扫描下载二维码}

我要回帖

更多关于 三阶行列式计算方法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信