解线性方程组的直接方法 --- 选主元的三角分解法(C语言实现)

 

从直接三角分解法公式可以看出,当U矩阵中的Urr=0时,计算将中断。或者当Urr绝对值很小时,按分解公式计算可能引起舍入误差的累积。

当A满秩的时候(非奇异), 我们可以通过交换A的行实现矩阵PA的LU分解,因此可以采用与列主元消去法类似的方法, 将直接三角分解法修改为(部分)选主元的三角分解法。

void GaussTri(double (*Arr)[3], int N){
    // 对于列主元三角分解法,我们首先需要进行列主元的选取
    // 在数值分析(第五版)关于列主元的介绍中,
    // 首先需要根据公式 s_i = Arr_i_r - sum(l_i_k*u_k_r, 1, r-1)
    // 则首先需要循环当前列上的所有的元素,计算出对应的值,并接下来进行挑选
    double sum_val = 0.0;
    int max_val_index = 0;
    // 这里对应的i是遍历的行的索引, 用来确定主元所在的行的索引值
    for(int i=0; i=0; d--){
                // 这里的d的起始行必须是小于i的
                sum_val += Arr[row_i][d] * Arr[d][i];
            }
        // 求和完毕后,接下来处理原位置上的数值
        Arr[row_i][i] -= sum_val;
        // 处理完第一个元素了,接下来我们对最大索引值进行处理
        if(abs(Arr[row_i][i]) > abs(Arr[max_val_index][i])){
            max_val_index = row_i;
        }
        }
        // 当跳出内循环后,便得到了最大索引所在的位置
        // 接下来把对应的行进行交换
        double temp = 0.0;
        for(int col_i=0; col_i=0; d--){
                sum_val += Arr[i][d] * Arr[d][col_m];
            }
            // 待跳出循环后,去处理对应位置上的元素
            Arr[i][col_m] -= sum_val;
        }
    }
}

将系数矩阵写成1D时的求解过程还没有完成,改天会补充上来。

已经工作快三个月了,在北京,投的简历大多石沉大海了,当前这个公司的工资还是太低了,在北京生活成本有点高的吓人,如果一直这样下去,看不到希望。而且最惨的是啥都没有,对象没有,房子没有,车也买不起,也没有存款。

生活真是个王八蛋。

 

 

扶贫方式如下:

解线性方程组的直接方法 --- 选主元的三角分解法(C语言实现)_第1张图片

解线性方程组的直接方法 --- 选主元的三角分解法(C语言实现)_第2张图片

哪位大兄弟能给介绍个对象呢,我是男的,只爱女生。

解线性方程组的直接方法 --- 选主元的三角分解法(C语言实现)_第3张图片

你可能感兴趣的:(c,数值分析,选主元的三角分解法)