请用c语言写出Jacobi迭代法和Gauss-Seidel迭代法求解方程组的解
时间: 2024-05-16 09:12:41 浏览: 172
Jacobi迭代法:
```c
#include <stdio.h>
#include <math.h>
#define N 3
int main()
{
double A[N][N] = {{-4, 1, 0}, {1, -4, 1}, {0, 1, -4}}; // 方程组系数矩阵
double b[N] = {-10, 0, 10}; // 方程组右端向量
double x[N] = {0, 0, 0}; // 迭代初值
double eps = 1e-6; // 精度要求
int k = 0, maxit = 100; // 迭代次数和最大迭代次数
while (k < maxit)
{
k++;
double x_new[N] = {0, 0, 0}; // 存放迭代新解
for (int i = 0; i < N; i++)
{
double sum = 0;
for (int j = 0; j < N; j++)
{
if (j != i) sum += A[i][j] * x[j];
}
x_new[i] = (b[i] - sum) / A[i][i];
}
double err = 0; // 计算误差
for (int i = 0; i < N; i++)
{
err += pow(x_new[i] - x[i], 2);
}
if (sqrt(err) < eps) // 满足精度要求
{
printf("Jacobi迭代法迭代次数: %d\n", k);
for (int i = 0; i < N; i++)
{
printf("x[%d] = %.6f\n", i, x_new[i]);
}
break;
}
for (int i = 0; i < N; i++) x[i] = x_new[i]; // 更新迭代初值
}
if (k >= maxit)
{
printf("Jacobi迭代法未收敛!\n");
}
return 0;
}
```
Gauss-Seidel迭代法:
```c
#include <stdio.h>
#include <math.h>
#define N 3
int main()
{
double A[N][N] = {{-4, 1, 0}, {1, -4, 1}, {0, 1, -4}}; // 方程组系数矩阵
double b[N] = {-10, 0, 10}; // 方程组右端向量
double x[N] = {0, 0, 0}; // 迭代初值
double eps = 1e-6; // 精度要求
int k = 0, maxit = 100; // 迭代次数和最大迭代次数
while (k < maxit)
{
k++;
double x_new[N] = {0, 0, 0}; // 存放迭代新解
for (int i = 0; i < N; i++)
{
double sum = 0;
for (int j = 0; j < N; j++)
{
if (j < i) sum += A[i][j] * x_new[j];
if (j > i) sum += A[i][j] * x[j];
}
x_new[i] = (b[i] - sum) / A[i][i];
}
double err = 0; // 计算误差
for (int i = 0; i < N; i++)
{
err += pow(x_new[i] - x[i], 2);
}
if (sqrt(err) < eps) // 满足精度要求
{
printf("Gauss-Seidel迭代法迭代次数: %d\n", k);
for (int i = 0; i < N; i++)
{
printf("x[%d] = %.6f\n", i, x_new[i]);
}
break;
}
for (int i = 0; i < N; i++) x[i] = x_new[i]; // 更新迭代初值
}
if (k >= maxit)
{
printf("Gauss-Seidel迭代法未收敛!\n");
}
return 0;
}
```
这里给出的是求解一个3元线性方程组的Jacobi迭代法和Gauss-Seidel迭代法的代码,可以根据需要进行修改。需要注意的是,这两种迭代法的收敛性与系数矩阵的特性有关,不是所有的线性方程组都可以用这两种方法求解。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)