列主元高斯消元法的C语言编程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

列主元高斯消元法

基本思想:用高斯消元法求解线性方程组时,为避免小的主元,在进行第k 步消元前,应该在第k 列元素()(,,)k ik a i k n =中找出第一个出现的绝对值最大者,例如()()||max ||k k k i k ik k n

a a =≤i ≤,再把第k i 个方程与第k

个方程进行交换,使()k

k i k a 成为主元。我们称这个过程为选主元。由于只在第k 列元素中选主元,通常也称为按列选主元。

列主元高斯消元法的C 语言编程

列主元高斯消元法的C 语言程序代码如下:

#include

#include

#include

#define N 4

void Gause_pivot(int n,double A[N][N+1],double x[])

{

//高斯消元

int i,j,k;

for(k=1;k<=n-1;k++)

{

//选主元

int ii,jj,kk,row;

double max,temp;

ii=1;kk=k;

max=A[ii-1+(kk-1)][kk-1];

for(jj=ii+1;jj<=n;jj++)

{

if (fabs(A[jj-1+(kk-1)][kk-1])>fabs(max))

{

max=A[jj-1+(kk-1)][kk-1];

row=jj+(kk-1);

}

}

for(ii=1;ii<=n+1;ii++)

{

temp=A[kk-1][ii-1];

A[kk-1][ii-1]=A[row-1][ii-1];

A[row-1][ii-1]=temp;

}

for(i=k+1;i<=n;i++)

for(j=k+1;j<=n+1;j++)

A[i-1][j-1]-=A[k-1][j-1]*A[i-1][k-1]/A[k-1][k-1];

}

//回代求解

x[n-1]=A[n-1][n]/A[n-1][n-1];

for(k=n-1;k>=1;k--)

{

x[k-1]=0.0;

for(j=k+1;j<=n;j++) x[k-1]+=A[k-1][j-1]*x[j-1];

x[k-1]=(A[k-1][n]-x[k-1])/A[k-1][k-1];

}

//在屏幕上输出结果

for(i=0;i<=n-1;i++)

printf("%f\n",x[i]);

}

void main()

{

double A[N][N+1]={{0,2,-0.1,7,76.2},{6,0,3,-5,15},{3,1,2,5,86},{2,4,1,0,48}}; double x[N]={0};

Gause_pivot(N,A,x);

}

相关文档
最新文档