8, 9, 10 tasks are done
This commit is contained in:
parent
241f1bbc73
commit
509787808a
34 changed files with 1229 additions and 44 deletions
|
@ -8,26 +8,48 @@ int t8_solve(double *a, int m, int n)
|
|||
int max_i = 0, max_j = 0;
|
||||
double maximum = 0;
|
||||
|
||||
for (int i = 0; i < m; i++)
|
||||
{
|
||||
double sum = 0;
|
||||
for (int j = 0; j < n; j++)
|
||||
if (i != j)
|
||||
sum += fabs(a[i*n + j]);
|
||||
|
||||
if ((sum - maximum) > eps) { maximum = sum; max_i = i; }
|
||||
}
|
||||
|
||||
for (int j = 0; j < n; j++)
|
||||
{
|
||||
double sum = 0;
|
||||
double sum_j = 0;
|
||||
for (int k = 0; k < m; k++)
|
||||
sum_j += fabs(a[k*n + j]);
|
||||
|
||||
for (int i = 0; i < m; i++)
|
||||
if (i != j)
|
||||
sum += fabs(a[i*n + j]);
|
||||
{
|
||||
double sum_i = 0;
|
||||
double aij = fabs(a[i*n + j]);
|
||||
sum_j -= aij;
|
||||
|
||||
if ((sum - maximum) > eps) { maximum = sum; max_j = j; }
|
||||
if (j == 0)
|
||||
{
|
||||
double num = a[i*n];
|
||||
for (int k = 1; k < n; k++)
|
||||
sum_i += fabs(a[i*n + k]);
|
||||
|
||||
a[i*n] = copysign(fabs(num) + sum_i, num);
|
||||
}
|
||||
else
|
||||
sum_i = fabs(a[i*n]) - fabs(a[i*n + j]);
|
||||
|
||||
if (((sum_j + sum_i) - maximum) > eps)
|
||||
maximum = (sum_j + sum_i), max_i = i, max_j = j;
|
||||
|
||||
sum_j += aij;
|
||||
}
|
||||
}
|
||||
|
||||
if (max_j != 0)
|
||||
for (int i = 0; i < m; i++)
|
||||
{
|
||||
double orig = a[i*n];
|
||||
double num = fabs(orig);
|
||||
|
||||
for (int j = 1; j < n; j++)
|
||||
num -= fabs(a[i*n + j]);
|
||||
|
||||
a[i*n] = copysign(num, orig);
|
||||
}
|
||||
|
||||
for (int l = max_j+1, del_j = 1; l < max_i*n; l++)
|
||||
{
|
||||
if (l == ((n * del_j) + max_j))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue