一、矩阵计算使用说明


1、约定:分数和多项式通称为有理式;那么在一个矩阵里面,要么就是小数和整数的混合(按照小数计算,会存在误差),要么就是有理式和整数的混合(按照分式计算,不会有误差),不支持其他混合形式的输入,不能出现形如:0.2x , 0.2/5 这样奇奇怪怪的式子


2、很抱歉,当前最多只支持输入一个未知数 -- 2021.3.20


3、合法的输入格式形如:-2, 2, 2/7 , -2/7 , 2x , -2x , 2x+1 , 2x^2+2, 1/x ,(1/8)(x^5) ,x , 2x/3 , x/3 , -6.6 , 5.21 , 13.14。暂时不能输入根号,sin,ln,lim或其他除了52个大小写英文字母以外的数学符号;


4、每一行的矩阵元素之间使用中文逗号或英文逗号分隔,一行输完使用分号或者回车后再输入下一行。如你所见,输入框下方的几个按钮可以辅助你进行输入;


5、多矩阵部分的次数默认为1,如果需要求某一个矩阵的幂次,只需要选中该矩阵下方的对号,然后输入不高于20次的幂次(幂次过高可能会出现数值溢出的错误),确认即可;


6、你可以下载一个名为maple计算器的APP获取更好的体验,那个APP可以计算符号积分,可以拍照输入,支持完整的的矩阵计算,非常强大。你也可以去下载一个叫作矩阵计算器的APP,虽然不能进行符号计算,但是提供包含求小数矩阵和分数矩阵的行列式、逆运算等基本运算,支持最多五个矩阵的混合计算,你还可以下载一个名为看见函数的APP,可以很方便的对函数或者方程进行绘图


二、关于矩阵


1、矩阵是什么?


我大一的时候,初学矩阵感到很困难,那时候老师告诉我们说,你们不要觉得矩阵这个东西太复杂,你可以认为矩阵就是一片数字,在后来的学习中,也的确是将矩阵当做了存储数据的工具。但是在数学上,矩阵本质上是一个变换,能否深刻地认识到这一点,大概也算是工科生和理科生的区别,在此给各位指路:

https://www.youtube.com/watch?v=fNk_zzaMoSs

如你所见,这需要翻墙才能看,B站有一些人搬运该博主的视频。搜索线性代数的本质,大概可以搜到吧,与国内高校教线性代数/高等代数从行列式开始的习惯不同,这位博主从向量开始逐渐引导观众理解矩阵,进而解释矩阵的乘法,行列式,特征值,逆矩阵等概念,让人获益匪浅。


2、这部分的功能是如何实现的?


这部分的计算功能,应该将其称为符号计算,也可以认为是一个微型的计算机代数系统,很多高校学生都会用的MATLAB,maple,Mathematica都是性能强悍的计算机代数系统,国内其实也有,在2011年的第十一届挑战杯上,来自清华大学的本科生团队开发了名为maTHμ的计算机代数系统,性能也十分强大。这个系统现在是开源的,可以在github上搜索到。需要说明的是,我们并未参考他们的代码,操作系统不一样,他们主要是用C++写的,我们是用Java写的,我们的数学结构也是自己设计的,更适合安卓开发。他们留下了一本他们整理得到的资料《计算机代数系统的数学原理》,将国内外有关于计算机代数系统的文献整理到了这本书中,这本书中囊括了计算机代数系统中最基本也是最重要的内容,也给了我们很大的启发,我们把每一个矩阵元素当做多项式的分式,因为只有分式才会对加减乘除运算封闭,这一点其实在《计算机代数系统的数学原理》中也有所体现。开发过程曲折漫长,基本上算是从0开始,我们仅有C的基础,后面的Java,xml,html以及Android开发都是自学的。由于我们设计的,是一个多层结构,即系数,文字和次数构成了单项式,单项式构成了多项式,多项式构成了分式,这些分式才构成了矩阵。你大概可以想象到,这样的多层结构会导致相当多的空指针异常的问题,这给没有Java项目开发经验的我们造成了很大困难,往往陷入繁复而痛苦的函数测试中,为了应对这些问题,我们设计了一个类型系统,辅之以类型自检函数,使得我们的函数独立性高,封装性好,效率也更高,所以整个矩阵计算的代码,也只有九千有余。实际上,在最初的设想中,是允许输入任意多个未知数的,但是由于介绍多元多项式的公因式的文献十分稀少(知网上仅有3篇相关中文文献),而我们采用的算法参考自:《中国剩余算法在多元多项式最大公因式提取中的应用 杨宁学,诸昌铃,龚晖》,其算法复杂度较高,最终还是放弃了,如果你有更好的思路可以求解多元多项式的最大公因式,希望可以联系我们,联系方式为发送内容到邮箱:2078579090@qq.com,感谢!