?? d1r12.cpp
字號:
#include "iostream.h"
#include "math.h"
void main()
{
//program d1r12
//driver program for routine ssor
int i,j,l,ii,n = 5;
double a[6][6], b[6], q[6][6], c[26], r[6], x[6];
double eps = 0.0000001;
//松弛因子
double om = 1.3;
for(i=0; i<=6; i++)
{
for(j=0; j<=6; j++)
{
q[i][j]=0;
}
}
//輸入已知的方程組的系數(shù)矩陣
a[1][1]=1.0; a[1][2]=1.0; a[1][3]=0.0; a[1][4]=0.0; a[1][5]=0.0;
a[2][1]=1.0; a[2][2]=2.0; a[2][3]=1.0; a[2][4]=0.0; a[2][5]=0.0;
a[3][1]=0.0; a[3][2]=1.0; a[3][3]=3.0; a[3][4]=1.0; a[3][5]=0.0;
a[4][1]=0.0; a[4][2]=0.0; a[4][3]=1.0; a[4][4]=4.0; a[4][5]=1.0;
a[5][1]=0.0; a[5][2]=0.0; a[5][3]=0.0; a[5][4]=1.0; a[5][5]=5.0;
//輸入已知的方程組的右端向量b
b[1] = 2.0;
b[2] = 4.0;
b[3] = 5.0;
b[4] = 6.0;
b[5] = 6.0;
cout<<endl;
cout<<"已知的方程組的右端向量"<<endl;
cout.setf(ios::fixed|ios::right);
cout.precision(5);
cout.width(12); cout<<b[1]<<endl;
cout.width(12); cout<<b[2]<<endl;
cout.width(12); cout<<b[3]<<endl;
cout.width(12); cout<<b[4]<<endl;
cout.width(12); cout<<b[5]<<endl;
for (i = 1; i<=n; i++)
{
for (j = 1; j<=n; j++)
{
c[(i-1)*n+j] = a[i][j];
}
}
for (i = 1; i<=n; i++)
{
r[i] = b[i];
x[i] = 0.0;
}
ssor(c, n, r, x, eps, om, ii);
cout<<endl;
cout<<"計(jì)算出的方程組的解"<<endl;
cout.width(12); cout<<x[1]<<endl;
cout.width(12); cout<<x[2]<<endl;
cout.width(12); cout<<x[3]<<endl;
cout.width(12); cout<<x[4]<<endl;
cout.width(12); cout<<x[5]<<endl;
//將計(jì)算出的解乘以系數(shù)矩陣,以驗(yàn)證計(jì)算結(jié)果正確
for (l = 1; l<=n; l++)
{
b[l] = 0.0;
for (j = 1; j<=n; j++)
{
b[l] = b[l] + a[l][j] * x[j];
}
}
cout<<endl;
cout<<"計(jì)算出的解乘以系數(shù)矩陣的結(jié)果"<<endl;
cout.width(12); cout<<b[1]<<endl;
cout.width(12); cout<<b[2]<<endl;
cout.width(12); cout<<b[3]<<endl;
cout.width(12); cout<<b[4]<<endl;
cout.width(12); cout<<b[5]<<endl;
cout<<endl;
cout<<"迭代次數(shù)="<<ii<<endl;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -