?? 高斯列主元消去法.cpp
字號:
// 高斯列主元消去法.cpp : 定義控制臺應用程序的入口點。
//
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
const int n=3;
int i=0,j=0,k=0,c=0;
float a[n][n+1],b[n],x[n],det=1;
cout<<"【高斯列主元消去法求解線性方程組】"<<endl<<endl;
for(i=0;i<n;i++)
{
for(int j=0;j<=n;j++)
{
cout<<" 請輸入方程組的增廣矩陣:a["<<i+1<<"]["<<j+1<<"]=";
cin>>a[i][j];
}
cout<<endl;
}
for(k=0;k<n-1;k++)
{
c=0;
float max=0;
for(i=k;i<n;i++)
{
if(max<abs(a[i][k]))
{
max=abs(a[i][k]);
c=i;
}
}
if(k!=c)
{
for(j=k;j<=n;j++)
{
b[k]=a[k][j];
a[k][j] = a[c][j];
a[c][j] = b[k];
}
det*=-1;
}
if(a[k][k]==0)
{
cout<<"計算停止,det(A)=0!";
break;
}
else
{
for(i=k+1;i<n;i++)
{
for(j=k+1;j<=n;j++)
{
a[i][j]=a[i][j]-((a[i][k]/a[k][k])*a[k][j]);
}
}
}
}
for(i=0;i<n;i++)
{
det*=a[i][i];
b[i]=a[i][n];
}
for(i=n-1;i>=0;i--)
{
float sum=0;
for(j=i;j<n;j++)
{
if (i==n-1)
{
x[j]=b[j]/a[i][i];
}
sum+=a[i][j] * x[j];
}
if(i!=n-1)
{
x[i]=(b[i]-sum)/a[i][i];
}
}
cout<<"計算結果:"<<endl;
cout<<"detA="<<det<<endl<<endl;
for(i=0;i<n;i++)
{
cout<<"x["<<i+1<<"]="<<x[i]<<endl;
}
cout<<endl<<"按任意鍵繼續...";
getch();
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -