欢迎来到天天文库
浏览记录
ID:38700652
大小:80.50 KB
页数:6页
时间:2019-06-17
《数值分析c语言实现高斯赛德尔解法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数值分析程序设计学院:计算机学院姓名:袁薪洋1.实验目的:1熟练掌握C语言程序设计,编程求解问题。2.运用高斯-赛德尔迭代公式求解线性方程组。2.实验内容:用高斯-赛德尔迭代公式求解方程组。10x1-x2-2x3=7.2-x1+10x2-2x3=8.3-x1-x2+5x3=4.2程序的核心代码:#include"math.h"#include#defineNUMBER20floatA[NUMBER][NUMBER+1];floatark;intflag,n;voidexchan
2、ge(intr,intk);floatmax(intk);voidmain(){floatx[NUMBER];/*此数组用于存放方程解*/intr,k,i,j;printf("***********************************");printf("用高斯-赛德尔迭代法解线性方程组");printf("***********************************");printf("请输入方程组的维数:n=");scanf("%d",&n);p
3、rintf("请输入系数矩阵A和向量b:");for(i=1;i<=n;i++){printf("请输入a%d1--a%d%d系数和向量b%d(数之间用空格格开):",i,i,n,i);//实现将每一行中的系数和向量一次性输入,数之间用空格格开,输完后回车确定for(j=1;j<=n+1;j++)//将刚才输入的数存入数组scanf("%f",&A[i][j]);}for(k=1;k<=n-1;k++){ark=max(k);if(ark==0)//判断方程是否为线性方程{pri
4、ntf("此方程组不合法!");}elseif(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--){floatme=0;for(j=k+1;j<=n;j++){me=me+A[k][j]*x[j];}x[k]=(A[k][n+1]-me)/A[k
5、][k];}for(i=1;i<=n;i++){printf("x%d=%f",i,x[i]);}}voidexchange(intr,intk)//交换行的矩函数{inti;for(i=1;i<=n+1;i++)A[0][i]=A[r][i];for(i=1;i<=n+1;i++)A[r][i]=A[k][i];for(i=1;i<=n+1;i++)A[k][i]=A[0][i];}floatmax(intk)//比校系数大小的函数{inti;floattemp=0;for(i=k;i
6、<=n;i++)if(fabs(A[i][k])>temp){temp=fabs(A[i][k]);flag=i;}returntemp;}3.运行结果:截图如下:
此文档下载收益归作者所有