列主元高斯消元法
基本思想:用高斯消元法求解线性方程组时,为避免小的主元,在进行第k 步消元前,应该在第k 列(k ) 元素a ik (i =k , (k ) (k ) 例如|a i k k |=max |a ik |,再把第i k 个方程与第k , n ) 中找出第一个出现的绝对值最大者,
k ≤i ≤n
个方程进行交换,使a i (k k ) 成为主元。我们称这个过程为选主元。由于只在第k 列元素中选主元,通常也称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
{
//选主元
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
{
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
{
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
for(j=k+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
x[k-1]=(A[k-1][n]-x[k-1])/A[k-1][k-1];
}
//在屏幕上输出结果
for(i=0;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);
}
列主元高斯消元法
基本思想:用高斯消元法求解线性方程组时,为避免小的主元,在进行第k 步消元前,应该在第k 列(k ) 元素a ik (i =k , (k ) (k ) 例如|a i k k |=max |a ik |,再把第i k 个方程与第k , n ) 中找出第一个出现的绝对值最大者,
k ≤i ≤n
个方程进行交换,使a i (k k ) 成为主元。我们称这个过程为选主元。由于只在第k 列元素中选主元,通常也称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
{
//选主元
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
{
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
{
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
for(j=k+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
x[k-1]=(A[k-1][n]-x[k-1])/A[k-1][k-1];
}
//在屏幕上输出结果
for(i=0;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);
}