【Java开源代码栏目提醒】:以下是网学会员为您推荐的Java开源代码-d8r6F.java,希望本篇文章对您学习有所帮助。
public class d8r6F
{
void balanc(double a[][],int n)
{
double RADIX, SQRDX;
RADIX = 2.0;
SQRDX = RADIX * RADIX;
int i, j, last;
double c, f, g, r, s;
for(;;)
{
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 + Math.abs(a[j][i]);
r = r + Math.abs(a[i][j]);
}
}
if (c != 0.0 && r != 0.0)
{
g = r / RADIX;
f = 1.0;
s = c + r;
while(c < g)
{
f = f * RADIX;
c = c * SQRDX;
}
g = r * RADIX;
while (c > g)
{
f = f / RADIX;
c = c / SQRDX;
}
if ((c + r) / f < 0.95 * s)
{
last = 0;
g = 1. / 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) break;
}
}
void elmhes(double a[][], int n)
{
int m, j, i;
double x, y;
if (n > 2)
{
for (m = 2; m <= n - 1; m++)
{
x = 0.0;
i = m;
for (j = m; j <= n; j++)
{
if ((Math.abs(a[j][m - 1])) > Math.abs(x))
{
x = a[j][m - 1];
i = j;
}
}
if (i != m)
{
for (j = m - 1; j <= n; j++)
{
y = a[i][j];
a[i][j] = a[m][j];
a[m][j] = y;
}
for (j = 1; j <= n; j++)
{
y = a[j][i];
a[j][i] = a[j][m];
a[j][m] = y;
}
}
if (x != 0.0)
{
for (i = m + 1; i <= n; i++)
{
y = a[i][m - 1];
if (y != 0.0)
{
y = y / x;
a[i][m - 1] = y;
for (j = m; j <= n; j++)
{
a[i][j] = a[i][j] - y * a[m][j];
}
for (j = 1; j <= n; j++)
{
a[j][m] = a[j][m] + y * a[j][i];
}
}
}
}
}
}
}
}