以下是高斯塞德尔迭代法的C语言程序,用于求解三元一次方程组,精度小于10的-5次方。

#include <stdio.h>
#include <math.h>

#define N 3 // 矩阵维度
#define EPS 1e-5 // 精度

int main() {
    double a[N][N+1] = {{2, -1, 0, 1}, {-1, 2, -1, 2}, {0, -1, 2, 3}}; // 系数矩阵
    double x[N] = {0}; // 迭代初值
    double p[N] = {0}; // 上一次迭代的解
    int i, j, k;
    double sum;

    for (k = 0; k < 100; k++) { // 最多迭代100次
        for (i = 0; i < N; i++) {
            sum = 0;
            for (j = 0; j < N; j++) {
                if (j != i) {
                    sum += a[i][j] * x[j];
                }
            }
            p[i] = x[i];
            x[i] = (a[i][N] - sum) / a[i][i];
        }
        if (fabs(x[0] - p[0]) < EPS && fabs(x[1] - p[1]) < EPS && fabs(x[2] - p[2]) < EPS) {
            // 判断是否满足精度要求
            break;
        }
    }

    if (k == 100) { // 超过最大迭代次数,可能无解或收敛速度太慢
        printf("迭代失败\n");
    } else {
        printf("解为:\n");
        for (i = 0; i < N; i++) {
            printf("x[%d] = %lf\n", i, x[i]);
        }
    }

    return 0;
}

在程序中,先定义了一个3x4的系数矩阵a和一个长度为3的初始迭代解x,其中a的最后一列是方程组的常数项。在迭代过程中,先对每个未知数的值进行更新,然后判断是否达到精度要求。如果达到了,就直接输出解,否则继续迭代。当迭代次数超过100次时,程序会提示迭代失败。

可以根据具体情况修改系数矩阵a和初始迭代解x,以求解不同的三元一次方程组

给我一个高斯塞德尔迭代法C语言程序求解三元一次方程组要求精度小于10的-5次方

原文地址: https://www.cveoy.top/t/topic/dT3W 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录