行列式计算(C#)

简介: 最近几天学习高等代数老师说要写个程序算行列式的结果,闲来无事就简单写了一下。 不多说了,上代码 1 using System; 2 using System.Collections.

最近几天学习高等代数老师说要写个程序算行列式的结果,闲来无事就简单写了一下。

不多说了,上代码

 
 
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace Nrow_culmn
 7 {
 8     class Program
 9     {
10         //计算行列式 计算复杂度为O(n的3次方)
11         public static double jlength = 0;
12         static void Main(string[] args)
13         {
14             //double[,] row_culmn = { { 3, 1, -1, 1 }, { 1, -1, 1, 2 }, { 2, 1, 2, -1 }, { 1, 0, 2, 1, } };
15             //行列式二维数组
16             double[,] row_culmn = { { 1, 4, 9, 16, 8 }, { 4, 9, 16, 25, 4 }, { 9, 16, 25, 36, 0 }, { 16, 25, 36, 49, 10 }, { 3, 15, 3, 69, 11 } };
17 
18             //计算行列式的阶数
19             jlength = Math.Sqrt(row_culmn.Length);
20 
21             Console.WriteLine("原始行列式为:");
22             for (int i = 0; i < jlength; i++)
23             {
24                 for (int j = 0; j < jlength; j++)
25                 {
26                     Console.Write(row_culmn[i, j].ToString() + "  ");
27                 }
28                 Console.WriteLine();
29             }
30             Console.WriteLine();
31             Console.WriteLine();
32             Console.WriteLine();
33             int row = 0;//行 数组行列下标从0开始
34 
35             int rowup = 1;//向右移动的偏移列(相对行)
36 
37             for (row = 0; row < jlength - 1; row++)
38             {
39                 //递归算法将行列式计算为做下三角全为0
40                 ValueRow_Culmn(ref row_culmn, ref row, rowup);
41                 rowup++;
42             }
43             //计算行列式的值double值不能默认等于0 否则会所有值都为零
44             double a = 1;
45             for (int i = 0; i < jlength; i++)
46             {
47                 Console.WriteLine("" + (i + 1) + "行 第" + (i + 1) + "" + row_culmn[i, i]);
48                 a *= row_culmn[i, i];
49             }
50             //格式化输出
51             Console.WriteLine("最后得:");
52             Console.WriteLine(string.Format("{0:F}",a));
53             Console.ReadLine();
54 
55         }
56 
57         public static void ValueRow_Culmn(ref double[,] rc, ref int row, int rowup)
58         {
59             //double jlength = Math.Sqrt(rc.Length);
60             double k;//与列相乘的系数
61             if (rowup < jlength)
62             {
63                 //计算行列式系数(第i行比第i-1行)
64                 k = -rc[rowup, row] / rc[row, row];
65                 //通过相乘系数 计算第i行的值
66                 for (int j = 0; j < jlength; j++)
67                 {
68                     rc[rowup, j] += rc[row, j] * k;
69                 }
70 
71                 Console.WriteLine();
72                 Console.WriteLine();
73                 //打印计算之后的行列式
74 
75                 for (int m = 0; m < jlength; m++)
76                 {
77                     for (int j = 0; j < jlength; j++)
78                     {
79                         Console.Write(rc[m, j].ToString() + "  ");
80                     }
81                     Console.WriteLine();
82                 }
83 
84                 Console.WriteLine();
85                 //向下移动行
86                 rowup++;
87                 //递归调用方法函数
88                 ValueRow_Culmn(ref rc, ref row, rowup);
89             }
90             else
91             { return; }
92         }
93 
94 
95 
96     }
97 }
 
 

 

 
相关文章
|
8月前
|
算法 C#
23.c#计算敌人被玩家攻击的剩余血值
23.c#计算敌人被玩家攻击的剩余血值
64 0
|
算法 数据可视化 C#
C# | Chaikin算法 —— 计算折线对应的平滑曲线坐标点
本文将介绍一种计算折线对应的平滑曲线坐标点的算法。该算法使用Chaikin曲线平滑处理的方法,通过控制张力因子和迭代次数来调整曲线的平滑程度和精度。通过对原始点集合进行切割和插值操作,得到平滑的曲线坐标点集合。实验结果表明,该算法能够有效地平滑折线,并且具有较高的精度和可控性。
305 0
C# | Chaikin算法 —— 计算折线对应的平滑曲线坐标点
C# 对于“日期时间(DateTime)“的处理 时间差计算
C# 对于“日期时间(DateTime)“的处理 时间差计算
|
传感器 机器人 数据处理
Baumer工业相机堡盟工业相机如何使用BGAPISDK的相机图像时间戳计算运行时间以及时间差(C#)
Baumer工业相机堡盟工业相机如何使用BGAPISDK的相机图像时间戳计算运行时间以及时间差(C#)
173 0
|
存储 数据采集 编解码
Baumer工业相机堡盟工业相机如何通过图像尺寸计算图像大小从而计算当前相机传输帧率(C#)
Baumer工业相机堡盟工业相机如何通过图像尺寸计算图像大小从而计算当前相机传输帧率(C#)
132 0
|
传感器 开发工具 C#
Baumer工业相机中偏振相机如何使用Baumer堡盟GAPI SDK来进行偏振数据的计算转换输出(C#)
Baumer工业相机中偏振相机如何使用Baumer堡盟GAPI SDK来进行偏振数据的计算转换输出(C#)
100 0
|
传感器 编解码 监控
Baumer工业相机堡盟工业相机如何通过BGAPISDK里的工具函数来计算工业相机的实时帧率(C#)
Baumer工业相机堡盟工业相机如何通过BGAPISDK里的工具函数来计算工业相机的实时帧率(C#)
76 0
|
C# C++
C++ C# Delphi 计算区域 合并 相交等
C++ C# Delphi 计算区域 合并 相交等
144 0
|
C# Windows
基于C#的ArcEngine二次开发30: visual studio没有为ToolsVersion14.0指定MSBuildToolsPath,指定的值的计算结果为空字符串
基于C#的ArcEngine二次开发30: visual studio没有为ToolsVersion14.0指定MSBuildToolsPath,指定的值的计算结果为空字符串
基于C#的ArcEngine二次开发30: visual studio没有为ToolsVersion14.0指定MSBuildToolsPath,指定的值的计算结果为空字符串
|
存储 C#
对于‘用C#编写一个员工工资计算’问题的代码编写风格和结构设计考虑的比较【发现自己还是太弱,大家可以在评论区中提出我代码中的不足】
对于‘用C#编写一个员工工资计算’问题的代码编写风格和结构设计考虑的比较【发现自己还是太弱,大家可以在评论区中提出我代码中的不足】
129 0
对于‘用C#编写一个员工工资计算’问题的代码编写风格和结构设计考虑的比较【发现自己还是太弱,大家可以在评论区中提出我代码中的不足】