高斯消去法的过程如图所示
?
其中括号内的数字表示对该行处理的次数,比如第三列,该列中的第一个元素没有变化,第二个元素处理了一次,第三个元素处理了两次,处理的过程为
?...现将这个过程写成数组形式 A=A-B*C,于是就有了下列算法:
?
同传统算法相比较,改进算法只需一重循环,大大提升了效率
?
算法验证
?...这个方程组的解为x=[1,2,3]
自编程序计算结果为:
?
PS: Fortran中的spread函数用法。假定一个二维数组A
?...A(1, 2:4)是一个一维数组[12 13 14],spread(A(1, 2:4),1,2)就是如下的二维数组
?
spread(A(2:3, 1),2,3)就是如下的二维数组
?...spread(A(1, 2:4),1,2)*spread(A(2:3, 1),2,3)的结果就是
?
该算法的瓶颈就是spread函数的效率究竟如何?当然,任何事情都有其两面性。鱼和熊掌不可兼得。