找回密码
 立即加入
搜索

查看: 2507|回复: 13

[技术交流] 自己开发的一个矩阵计算器

[复制链接]
仰望星空 发表于 2012-12-22 01:53:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转闽南师范大学。

您需要 登录 才可以下载或查看,没有账号?立即加入

×
   
8 P$ `3 _2 y) U7 |4 l1 u ! c* Q+ R( U. N- f

/ L7 q! E$ \3 H: t+ m* q  N/ C9 u* N    编写了两个月的代码,最终完成了数值计算软件开发的整个过程。7 k' s9 Y, ~+ w. L3 v5 x
    这是我大学生活中最惊心动魄的事,是一段最为宝贵的经历。- p0 b7 w8 b& G0 ~4 e
    这将是我读大学做的最有意义的一件事。
6 t& u! _2 x. x" G  W4 V
    即使是遇到再多的困难,我也坚持到了最后。8 _1 s; f5 ^- \; j% p0 \
    每天几乎都是在编写代码的时间中度过,计算机软件技术成就了一代真正的技术宅。
7 Q' T. r5 x$ n& X5 v    每天起来做的第一件事就是打开我的电脑,习惯性的打开我的IDE Visual Studio 2012,然后又开始了一整天的工作。   8 _+ V9 W; R- v; B% ?) z- ~
         每天几乎是12小时的坚守在电脑旁,曾经的每一个算法程序,每一行的代码,花费了我多少心思,思考了多久才得出的结果。"技术"和"宅",这就是我两多个月以来的真实生活写照。          6 n4 |+ K. {5 i  D8 @4 I! U# ~9 n/ [
        如果我做的这个软件对你们有帮助,请支持它,珍惜别人的辛勤劳动。如果是这样的话,纵使是我为做这个软件,熬过再多的夜,旷下再多的课,也是值得的。- O( ]( [9 l& Y: Z4 z7 G( A
0 H" ]( X0 ~# U9 D( d- u
—————————————————————我是分割线——————————————————% v- I: e# P8 O( {# n5 p$ y

: W2 I& Q' k0 i1 e( l2 w
7 E( y. B% g( j 2 d7 B! J4 W- X0 m' D  e: ^  K
矩阵计算器——你身边的数学辅助工具
4 u0 b3 ~- A* n6 }
7 s$ e9 A5 r$ j1 S  X4 N% H
1、简介(Introduction)
1 U) }7 n* I+ ~( F# d  z; w
/ k7 z7 ?8 z1 g! Q; _% m: [9 h! A      矩阵计算器(MatrixCalculator)是一个非常方便使用的数学工具,它可以帮助你计算一些基本的矩阵运算问题。$ Q( ^* q$ ?2 D- u5 N9 S$ ?
在大学的数学教学课程当中,矩阵计算是一个非常普遍的问题,它涉及线性代数,高等代数,数值分析,数学实验,以及研究生课程矩阵分析(矩阵论)。而在实际应用中的一些工程计算问题当中,有关矩阵的计算更是普遍,矩阵是现代数学中的一个重要工具。     
) ^  F* E$ V+ U$ u% t     
矩阵计算器仅仅是针对大学课程遇到的一些矩阵计算问题,这些矩阵一般是低阶稠密矩阵,计算量一般不会很大,所以这个数学工具是完全可以应对的,速度一般很快,几毫秒之内可以计算出结果。

" j0 R( ?  {: ~. K5 D5 r    现代计算数学的理念是让计算机去解决一些繁杂的数学计算问题,以代替人工计算,这也是这个软件的由来。矩阵计算器可以成为你的一个辅助计算软件,帮助你解决一些在大学的数学学习过程中遇到的一些有关矩阵计算的问题。 7 [, z; o& m& _1 M% \5 a! N
) o: N" y9 g1 e, h; }' }
2、功能(Feature):   
! i( M* J; q5 Q5 Z( k ) ~& ?# B1 A' n) w) l+ u* w
    软件提供了有关矩阵计算的24个核心功能,分四个功能模块:; m# Q8 r7 o  j3 G
           基本运算(Basic): 行列式(det)、矩阵的秩(rank)、逆矩阵(inv)5 D& |+ A4 M! m3 ]& g# S% W
                            广义逆(pinv)、矩阵的迹(trace)、矩阵的转置(trp)8 j- _5 O/ s2 |, Q5 Y3 r2 g9 m
   矩阵分解(Decomposition):LU分解(LU)、Cholesky分解(chol)、QR分解(QR分解)8 j& j  A' {; d  v
                            奇异值分解(SVD)、Schur分解(schur)、满秩分解(frd). I9 A7 i* G9 E
    特征分析(EigenProblem): 特征值(eigval)、特征值与特征向量(eig)、多项式求根(roots)
, t# K! v4 y4 {0 U/ |. d4 |% C( e                            谱半径(sprad)、范数(norm)、条件数(cond)
5 @, ~2 D1 a. F- e' @( E' f+ [" F 线性方程组及二元运算(LE): 线性方程组(solve)、行最简阶梯矩阵(rref)、零空间(null),
% l8 Q2 d& Y6 g$ r5 B                            二元运算(A+B、A-B、A*B)
# N% [" P; S& ?0 x, K: P4 I   软件实现了从实数域至复数域的跨越,可以同时支持实数和复数运算,而所有的矩阵计算命令都是一致的。
" z+ ~8 K' `4 A4 P   软件的计算结果都经过我自己的多遍调试与测试,并与Matlab做了分析与对比,结果是一致的。

9 P" w6 |" a/ D0 I0 P! r" h! R / X* [) g! v( F6 N: I
6 I! A& q( z, w: e6 \
3、安装环境(SystemRequirements)  O! U2 j$ w  a' j3 j+ z# `

9 P% g$ F+ ]4 l7 @/ K5 j

3 D' D' V# k5 W9 L1 V0 p    平台:Windows VistaWindows 7Windows 8
) a7 k7 u2 h! R    组件:Microsoft .NET FrameWork 4.5        本程序基于.NET平台开发,使用的是C# 4.5编程言,所以计算机中必须安装有Microsoft .NET FrameWork 4.5组件才能使用矩阵计算器。一般在Windows7中内置的是Microsoft .NET FrameWork 3.5,所以如果是Windows7的操作系统,只需将组件升级至4.5的版本就可以了。
- F2 N, I$ j; S本软件是基于.NET 4.5平台开发,脱离不了它的运行环境,计算机中必须安装有.NET4.5组件才能使用。/ k# B2 D# _8 v& B

) E: x4 G% Z, q2 S4 X( O
4、软件的开发背
Background
):
[/table]
[table=100%,#ffffff]
5 A$ `/ }$ b+ u- \5 u6 o
     矩阵计算器(Matrix Calculator),这是我大三学习C#以来,在.NET平台上开发的第二个版本的数值计算软件,历时两个多月,写完了近万行程序代码。
    在这两个多月以来,作者一边学习了有关矩阵计算的各种理论知识,在图书馆和Google上查阅了大量的文献资料。总来说,作者为开发这一个矩阵计算器,曾经接触了诸多的计算数学领域,开阔一次眼界。像矩阵分析、矩阵计算和数值分析是我花过最多时间去研究和琢磨的。特别是矩阵计算,这可以说是现代计算数学的一个新领域。
    人们一直在追求一个更高效更快的计算方法,由于电子计算机的发展,还提出了并行的计算理论。在开发数值计算软件的时候,经常需要查找各类算法,常常要接触一些现代数学,特别是代数特征值与奇异值的计算,这些算法需要跟踪到20世纪五六十年代一些数学家的工作,甚至是前几年刚提出的针对奇异值求解的改进的Jacobi方法。即使如此,有关特征值与奇异值的计算理论仍然是不完善的,因为至今没有一个理论来保证QR迭代收敛。
    对于自主开发的线性代数算法程序包,作者是付出过努力的,下定决心,再难的数学理论也要啃下去,硬着头皮,读下去,才能理解这个算法的原理,只有对这个算法有了充分的理解和掌握层面上,才能用程序设计语言编写出相应的算法程序。不仅如此,调试算法程序更是一件非常之苦恼的事,作者曾为开发出求解特征值的隐式QR迭代和奇异值分解的Golub-Kahan算法程序足足花了3个星期的时间才做出来。
     这也许有人可能会说,现在已经有了各种线性代数软件包,Lapack就是一个,拿来直接调用就行了。诚然,这种拿来主义确实对开发软件很是方便,直接调用一个com组件就可了事,但对这些一些技术细节,它具体的实现过程,算法原理你是不会真正理解的,而我何不利用这个机会去探索这一切呢,只有深入这一领域,才能发现它美的所在!
    在开发这一套数值计算软件以来,作者深感自己知识的匮乏,很多时候,真的感觉自己是在盲人摸象,对于前人总结的知识经验,我也要一段时间才能理解过来。由于数值软件的开发需要同时熟悉很多有关数学与计算机的知识和方法,而我个人的能力是有限的,掌握的技能也非常有限,知识的匮乏让我认识到,就像Newton的那句话:“真理就像大海一样,但在我自己看来,我不过就像是一个在海边玩耍的小孩,不时发现比寻常更为光滑的一块卵石或比寻常更为美丽的一片贝壳,而对于展现在我面前的浩瀚的真理的海洋,却全然没有发现。”

% q. q4 V, w% W     在未知的真理大海边探索,知无涯。7 D6 }+ a" u( Z" p

1 g) ^( b* H7 K# m7 k  ~

2 A+ H- Y. I' a5 L5 P0 r5、软件截图(screenshot)
& X4 f7 Z2 B) V8 a) p3 S 8 U9 a% ~+ v+ F' M. a

$ j# L1 ]+ r5 V4 N; p  y9 F
$ u$ V0 d: Z8 K6 p# R 1.png
, S& `# k) z6 n; I# Y. E8 x* n) p8 U
* H* Y$ a3 q  I   k1 o/ J6 M  g4 w  X
2.png
9 {( _' e4 E; }: U$ Y  M6 m
. S3 l7 _0 l" l- Y& S
$ B6 e( |4 }5 C: R/ N 3.png ) c; ]( a9 V; a
$ B+ l8 i4 Q- \* X  \! i; _
6 u5 _& T, V. E* ~
4.png
5 b) `# C5 ^; C; o' W
: u- s! u/ K4 @- O
; r$ x" T4 O4 ~9 ?% D% I 5.png
+ |# O- [3 g; O
; n3 t8 \8 e# k4 g 8 q; ]2 j/ M  q! _! m6 P
: m6 x* a. M! R% Q4 t1 s
7.png 7 H" b4 d5 Y, r" i' P6 u" M

. B7 j5 M" b4 ]% H- b5 D: ? ( h' P. L. u# @9 t- P; g
8.png
  h3 }8 e) ~; j( k & F7 b4 q1 M" i
% f$ K7 \7 w) a; D# x
3 F! o* q0 C3 U- i
9.png
1 ]7 _7 d' q3 G$ X 5 |1 k3 r+ v5 \( X9 R5 E

2 l5 q+ I) e: G/ w  o 10.png
: ~" d1 F% P; ~" @& [) L4 D
9 c' ?5 j* Q! S; Z& Z. { 3 K  X% t: ~7 t4 p& e
, M6 V* ^2 b3 Z+ b
下载地址:http://pan.baidu.com/share/link? ... mp;amp;uk=622290336
3 f0 T7 O# a- [0 r+ R6 X6 U
, z2 ]+ u* ^* B5 ?, [! D( N. D  您的反馈及建议(Feedback:; r5 s# y) ]( c3 D
7 F$ Q, @% P8 S' b) e) W* q
          矩阵计算器(Matrix Calculator)是由漳州师范学院2010级数学系大三学生自主开发,如您在使用本软件的过程中遇到任何问题,以及您的建议,都可反馈至:2 f1 u5 f; z/ a! v/ n2 g' w$ M* N4 k
                                                                                                                                              / n* s3 m6 T" h
                                                             Email:sclfhst@163.com% l) A' G* I% [  @1 f& L, Z7 Q
                                                                                 我的QQ:9915921707 L6 W( `& N/ Y& l8 E2 d; s
                                                                                 2012-12-21 22:30:23
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
连城璧 发表于 2012-12-22 08:29:25 | 显示全部楼层
虽然不懂 但觉得很厉害的样子
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

lionking 发表于 2012-12-22 08:40:04 | 显示全部楼层
不明觉厉 3 D1 S* y# S% T# h8 K, I8 C$ _8 D
楼主的知识与技术横跨数学与计算机两大专业,很厉害很牛掰啊!
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

笑靥゜ 发表于 2012-12-22 09:29:26 | 显示全部楼层
好厉害
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

小麦茶 发表于 2012-12-22 09:38:24 | 显示全部楼层
门外汉飘过
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

jaysue 发表于 2012-12-22 09:41:07 | 显示全部楼层
感觉好厉害啊!!!!
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

點煙抽忐忑 发表于 2012-12-22 13:32:49 | 显示全部楼层
很好很强大 这完全可以作为毕业设计优秀了
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

一品梅 发表于 2012-12-22 14:34:21 | 显示全部楼层
我也不懂哈哈好,但好厉害o(*≧▽≦)ツ ,话说,你这样写出来没事吗?
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

【博】 发表于 2012-12-22 15:03:10 | 显示全部楼层
碉堡了
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

夜落痕 发表于 2012-12-22 15:40:09 | 显示全部楼层
支持一个。# f- b9 z$ `/ w
* w; l% i# K8 ~1 m: F2 b3 r) j/ v
话说我当时的毕业设计很蹩脚。也是弄了好几个月来着。。。" g, o' J6 m4 @" O- l. _* b* P
) g% |  F/ `% a! |# S9 m) O- B# {
坚持不易。学弟加油。
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

手机版|龙江曦月 ( 闽ICP备05009150号-1 )闽公安网备35060202000316

GMT+8, 2025-5-25 03:45 , Processed in 0.028998 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表