编程最重要的就是要有很强的目的性,面对绝对真诚的计算机时,如果自己还模棱两口,那又如何让计算机明白我们要做的事情呢?所以在编程之前,规划好绝对是磨刀不误砍柴工。笔者基于已有的编程知识,正好又在学习《数值分析》,数学作为编程的心法,重要性不言而喻,所以随着《数值分析》的学习,争取将教材中提到的算法,都用C++实现一遍,这里实现线性方程的直接解法:全选主元高斯消元法。(完整代码在最后,GAUS类)
(一)、全选高斯消元法的功能和步骤
明确好目的,高斯消元法就是要解线性方程组,获得精确解(实际上还是存在舍入误差),方程如下图:
理清步骤,编程之前先用数学语言将算法的思路表达清楚,每一门学科都是一门特殊的语言,思路表达清楚之后就方便编程实现了。全选主元的高斯消元法步骤用数学语言描述如下:
(二)、每一步的代码实现
1:对于k从0~n-2做如下运算,这是一个大循环;
全选主元,将绝对值最大的元素交换到主对角线上,代码如下:
d = 0.0;
for ( i =k; i <=n-1 ; i++)
{
for ( j = k; j <=n-1; j++)
{
t = a[i][j];
if (t > d)
{
d = t;
js[k] = j;
is = i;
}
}
}
if (d == 0.0)
flag = false;
else
{
if (js[k] != k)
{
for (i = 0; i < n; i++)
{
t = a[i][k];