?? 列主高斯.cpp
字號:
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
#define length 9
void fun(double a[length][length],double b[length])
{
int i,j,k,i0;
double temp;
/*比較出列主元及交換行,并進行消元*/
for(k=0;k<length;k++)
{
temp=fabs(a[k][k]);
i0=k;
for(i=k+1;i<length;i++)
{
if(fabs(a[i][k])>temp)
{
temp=fabs(a[i][k]);
i0=i;
}
}
if(i0!=k) /*io作為標志位指示需交換行*/
{
for(j=0;j<length;j++)
{
temp=a[k][j];a[k][j]=a[i0][j];a[i0][j]=temp;
}
temp=b[k];b[k]=b[i0];b[i0]=temp;
}/*用temp來存放所有的中間變量*/
for(i=k+1;i<length;i++)
{
for(j=k+1;j<length;j++)
{
a[i][j]=a[i][j]-a[i][k]/a[k][k]*a[k][j];
}
b[i]=b[i]-a[i][k]/a[k][k]*b[k];
}
}
/*寫出解向量*/
b[length-1]=b[length-1]/a[length-1][length-1];
for(i=length-2;i>=0;i--)
{
for(j=length-1;j>i;j--)
{
b[i]=b[i]-a[i][j]*b[j];
}
b[i]=b[i]/a[i][i];
} /*用b[]來存放解向量*/
}
void main()
{
double R[length][length]={{31,-13,0,0,0,-10,0,0,0},
{-13,35,-9,0,-11,0,0,0,0},
{0,-9,31,-10,0,0,0,0,0},
{0,0,-10,79,-30,0,0,0,-9},
{0,0,0,-30,57,-7,0,-5,0},
{0,0,0,0,-7,47,-30,0,0},
{0,0,0,0,0,-30,41,0,0},
{0,0,0,0,-5,0,0,27,-2},
{0,0,0,-9,0,0,0,-2,29}};
double V[length]={-15,27,-23,0,-20,12,-7,7,10};
int i;
fun(R,V);
for(i=0;i<length;i++)
{cout<<setprecision(5)<<V[i]<<endl;}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -