没有合适的资源?快使用搜索试试~ 我知道了~
C#求矩阵的逆
需积分: 11 12 下载量 75 浏览量
2013-01-25
13:18:22
上传
评论
收藏 7KB TXT 举报
温馨提示
试读
11页
C#求矩阵的逆,可将代码直接复制到自己的工程运行。
资源推荐
资源详情
资源评论
public static double MatrixValue(double[,] MatrixList, int Level) //求得|A| 如果为0 说明不可逆
{
//计算行列式的方法
// a1 a2 a3
// b1 b2 b3
// c1 c2 c3
// 结果为 a1・b2・c3+b1・c2・a3+c1・a2・b3-a3・b2・c1-b3・c2・a1-c3・a2・b1(注意对角线就容易记住了)
double[,] dMatrix = new double[Level, Level]; //定义二维数组,行列数相同
for (int i = 0; i < Level; i++)
for (int j = 0; j < Level; j++)
dMatrix[i, j] = MatrixList[i, j]; //将参数的值,付给定义的数组
double c, x;
int k = 1;
for (int i = 0, j = 0; i < Level && j < Level; i++, j++)
{
//计算行列式的方法
// a1 a2 a3
// b1 b2 b3
// c1 c2 c3
// 结果为 a1・b2・c3+b1・c2・a3+c1・a2・b3-a3・b2・c1-b3・c2・a1-c3・a2・b1(注意对角线就容易记住了)
double[,] dMatrix = new double[Level, Level]; //定义二维数组,行列数相同
for (int i = 0; i < Level; i++)
for (int j = 0; j < Level; j++)
dMatrix[i, j] = MatrixList[i, j]; //将参数的值,付给定义的数组
double c, x;
int k = 1;
for (int i = 0, j = 0; i < Level && j < Level; i++, j++)
{
if (dMatrix[i, j] == 0) //判断对角线上的数据是否为0
{
int m = i;
for (; dMatrix[m, j] == 0; m++) ; //如果对角线上数据为0,从该数据开始依次往后判断是否为0
if (m == Level) //当该行从对角线开始数据都为0 的时候 返回0
return 0;
else
{
// Row change between i-row and m-row
for (int n = j; n < Level; n++)
{
c = dMatrix[i, n];
dMatrix[i, n] = dMatrix[m, n];
dMatrix[m, n] = c;
if (dMatrix[i, j] == 0) //判断对角线上的数据是否为0
{
int m = i;
for (; dMatrix[m, j] == 0; m++) ; //如果对角线上数据为0,从该数据开始依次往后判断是否为0
if (m == Level) //当该行从对角线开始数据都为0 的时候 返回0
return 0;
else
{
// Row change between i-row and m-row
for (int n = j; n < Level; n++)
{
c = dMatrix[i, n];
dMatrix[i, n] = dMatrix[m, n];
dMatrix[m, n] = c;
剩余10页未读,继续阅读
资源评论
IvanLJF
- 粉丝: 575
- 资源: 21
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功