?? 高斯-塞德爾迭代法.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=20;
int i,j,k=0;
float a[n][n],b[n],x[n];
float pre=0.0000001,w=1.1,sum=0,max=1, t=0;
cout<<"【高斯-塞德爾迭代法求解線性方程組】"<<endl<<endl;
//給系數矩陣A賦初值
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
a[i][j]=0;
}
a[i][i]=3;
if(i<n-1)
{
a[i+1][i]=-0.5;
a[i][i+1]=-0.5;
}
if(i<n-2)
{
a[i+2][i]=-0.25;
a[i][i+2]=-0.25;
}
}
//給b向量賦初值與迭代初始值
for(i=0;i<n;i++)
{
b[i]=1;
x[i]=0;
}
while(max>=pre)
{
k++; for(i=0;i<n;i++)
{
sum=0;
for(j=0;j<n;j++)
{
sum+=a[i][j]*x[j];
}
t=x[i];
x[i]=x[i]+(b[i]-sum)/a[i][i];
if(i==0)
{
max=abs(x[i]-t);
}
if (max<abs(x[i]-t))
{
max=abs(x[i]-t);
}
}
}
cout<<" 迭代次數:"<<k<<endl<<endl;
cout<<" 計算結果:"<<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 + -