📄 d8r5.cpp
字号:
#include <math.h>
#include <iomanip.h>
#include <iostream.h>
void balanc(double a[6][6],int n)
{
double radix,sqrdx,c,r,f,g,s;
int last,i,j;
radix = 2.0;
sqrdx = radix *radix;
loop1: last = 1;
for (i = 1; i<=n; i++)
{
c = 0.0;
r = 0.0;
for (j = 1; j<=n; j++)
{
if (j != i)
{
c = c + fabs(a[j][i]);
r = r + fabs(a[i][j]);
}
}
if ((c != 0.0) && (r != 0.0))
{
g = r / radix;
f = 1.0;
s = c + r;
loop2: if (c < g)
{
f = f * radix;
c = c * sqrdx;
goto loop2;
}
g = r * radix;
loop3: if (c > g)
{
f = f / radix;
c = c / sqrdx;
goto loop3;
}
if (((c + r) / f) < (0.95 * s))
{
last = 0;
g = 1.0 / f;
for (j = 1 ; j<=n; j++)
{
a[i][j] = a[i][j] * g;
}
for (j = 1 ; j<=n; j++)
{
a[j][i] = a[j][i] * f;
}
}
}
}
if (last == 0) goto loop1;
}
void main()
{
//program d8r5
//driver for routine balanc
int i,j,np = 5;
double a[6][6],r[6],c[6];
a[1][1] = 1.0; a[1][2] = 100.0; a[1][3] = 1.0; a[1][4] = 100.0; a[1][5] = 1.0;
a[2][1] = 1.0; a[2][2] = 1.0; a[2][3] = 1.0; a[2][4] = 1.0; a[2][5] = 1.0;
a[3][1] = 1.0; a[3][2] = 100.0; a[3][3] = 1.0; a[3][4] = 100.0; a[3][5] = 1.0;
a[4][1] = 1.0; a[4][2] = 1.0; a[4][3] = 1.0; a[4][4] = 1.0; a[4][5] = 1.0;
a[5][1] = 1.0; a[5][2] = 100.0; a[5][3] = 1.0; a[5][4] = 100.0; a[5][5] = 1.0;
//cout<< norms
for (i = 1;i<=np;i++)
{
r[i] = 0.0;
c[i] = 0.0;
for (j = 1; j<=np; j++)
{
r[i] = r[i] + fabs(a[i][j]);
c[i] = c[i] + fabs(a[j][i]);
}
}
cout<<endl;
cout<<setw(5)<<"Rows:"<<endl;
cout<<endl;
for (i = 1; i<=np; i++)
cout<< setw(10)<<r[i];
cout<<endl;
cout<<endl;
cout<<"Columns:"<<endl;
cout<<endl;
for (i = 1; i<=np; i++)
{
cout<<setw(10)<<c[i];
}
cout<<endl;
cout<<endl;
cout<< " ********** balancing matrix **********"<<endl;
balanc(a, np);
//cout<< norms
for (i = 1; i<=np; i++)
{
r[i] = 0.0;
c[i] = 0.0;
for (j = 1; j<=np; j++)
{
r[i] = r[i] + fabs(a[i][j]);
c[i] = c[i] + fabs(a[j][i]);
}
}
cout<<endl;
cout<<"Rows:"<<endl;
cout<<endl;
for (i = 1; i<=np; i++)
cout<<setw(10)<<r[i];
cout<<endl;
cout<<endl;
cout<<"Columns:"<<endl;
cout<<endl;
for (i = 1; i<=np; i++)
{
cout<< setw(10)<<c[i];
}
cout<< endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -