当前位置:首页 > 数值分析 c语言实现高斯赛德尔解法
数值分析
程 序 设 计
学院:计算机学院
姓名:袁薪洋
1.实验目的:
1熟练掌握C语言程序设计,编程求解问题。 2.运用高斯-赛德尔迭代公式求解线性方程组。
2.实验内容:
用高斯-赛德尔迭代公式求解方程组。
10x1-x2-2x3=7.2
-x1+10x2-2x3=8.3 -x1-x2+5x3=4.2
程序的核心代码:
#include\#include
float A[NUMBER][NUMBER+1] ; float ark; int flag,n;
void exchange(int r,int k); float max(int k); void main()
{
float x[NUMBER]; /*此数组用于存放方程解*/ int r,k,i,j;
printf(\ printf(\用高斯-赛德尔迭代法解线性方程组\\n\\n\ printf(\ printf(\请输入方程组的维数:n=\ scanf(\
printf(\请输入系数矩阵A和向量b:\ for(i=1;i<=n;i++) {
printf(\请输入a?--a%d%d系数和向量b%d(数之间用空格格开):\
//实现将每一行中的系数和向量一次性输入,数之间用空格格开,输完后回车确定
for(j=1;j<=n+1;j++) //将刚才输入的数存入数组 scanf(\ }
for(k=1;k<=n-1;k++) {
ark=max(k);
if(ark==0) //判断方程是否为线性方程
{
printf(\此方程组不合法!\ }
else if(flag!=k) exchange(flag,k); for(i=k+1;i<=n;i++) for(j=k+1;j<=n+1;j++)
A[i][j]=A[i][j]-A[k][j]*A[i][k]/A[k][k]; }
x[n]=A[n][n+1]/A[n][n]; for( k=n-1;k>=1;k--) {
float me=0; for(j=k+1;j<=n;j++) {
me=me+A[k][j]*x[j]; }
x[k]=(A[k][n+1]-me)/A[k][k]; }
for(i=1;i<=n;i++) {
printf(\
共分享92篇相关文档