Tridiagonal矩阵,即只有主对角线、主对角线上一条对角线,主对角线下一条对角线含有非零元素的矩阵。
LU分解法:
最好的功能是在于它在解A*x = b,并且当有许多个A相同,b不同的式子时,效率较高。
算法思想(由VC++那本书上说,这个又叫杜利特尔Doolittle方法):
我们将A分解成为两个子矩阵L和U,令A = L * U。其中L是下三角矩阵,U是上三角矩阵。
我听取了我们老师的想法,把原书中的命名改为以意义为中心的,不简化的命名方式。原本函数名为gaussj,现在改为gaussJordan
Gauss-Jordan消去法解的是这个线性方程组集合:(我完全不会LaTex呢,而且鉴于复制贴贴的方便,或者转载分享之后会出现不能显示的问题,我会尽量少用Latex公式的)
[tex]A*(X_0 \cup X_1 \cup X_2 \cup Y) = (b_0 \cup b_1 \cup b_2 \cup 1)[/tex]
如果上面一行的公式显示不出,请看这行:A * (X0 || X1 || X2 || Y) = (b0 || b1 || b2 || 1)
其中A是一个n*n的非奇异矩阵,b是n*m的矩阵。
nr3.h可能会在以后被改动,如果改动了,就会在本文中添加或者修改。
在书中它是用nr3.h这个头文件的,名字便不再去改了。它是用类和泛型实现Vector和Matrix的,根据书上提供的几个接口,大致实现了一下这个东西。
《Numerical Recipes》给的第一个程序是计算月相、儒略日和普通日之间的互相转换这样的。但貌似以前都居然不知道有儒略日这个东西,这样太伤我心了。查一下: