之前决定动手写一个库,每当有空想动手写的时候却又卡住不能动,理论知识太欠缺,只能从基础补起,在京东上买了同济的一套数学教材,4本包括线性代数,高数上下,概率。其中线性代数是我最关注的,空间上的坐标变换在计算机实现都是靠矩阵。
花了两个晚上,草草看完,只挑对自己有用的部分做一下记录。
第一章是矩阵定义,性质,结合方程组的介绍,矩阵的变换。第二章是方阵的行列式(determinant),定义,性质,展开,矩阵求逆。
记得当初学的时候是先学的行列式,然后是矩阵,从数学史的发展,也是先有的行列式,然后才有矩阵。不过先介绍哪个都一样,教材都把行列式和矩阵结合线性方程组来介绍,完全不直观。
这两章的内容对我来说意义已经不大了,目标就是计算机实现,很多定义和算法都集成得很好了,由于实际问题都是有解的,所以很多为了验证有解而需要检查的步骤也不需要做了。
矩阵运算的代码,C# with Math.Net
DenseMatrix A; DenseMatrix B; A = DenseMatrix.OfArray( new double[,]{ { 3,-1,2}, { 2,1,-2} } ); B = DenseMatrix.OfArray( new double[,]{ { 1,5,1}, { -2,-1,0} } ); Console.WriteLine((A + 2 * B).ToString()); Console.WriteLine((3 * A - B).ToString()); Console.WriteLine((A * B.Transpose()).ToString()); Console.WriteLine((A.Transpose() * B));
DenseMatrix A = DenseMatrix.OfArray(new double[,] { {1,2,3 }, {2,3,1 }, {3,1,2 } }); Console.WriteLine(A.Inverse().ToString()); A = DenseMatrix.OfArray(new double[,] { {1,-1,-1 }, {-2,2,1 }, {2,-1,3 } }); Console.WriteLine(A.Solve(DenseVector.OfArray(new double[] { -1, 1, 1 })));
第三章和第五章是向量空间与线性空间,我实在不理解为什么国内几乎所有的教材都无时无刻不把线性方程组拿出来,看起来很容易对应上,但是并不能激发人的好奇啊,学习线性代数就为了给方程组求解?真不如直接跟解析几何对应上,直观,而且也能给学生一些期望值,知道学了以后能干什么。
这两章我并没有搞清区别,向量空间是线性空间的特殊子集,但是对我来说,几何三维空间用哪个并没有区别。
[table “1” not found /]下一步的工作,用代码实现一些坐标和坐标系的实现。