Witam wszystkich. Mam pewien problem. Mam do napisania program, który za pomocą algorytmu Gaussa / Gaussa-Jordana rozwiąże układ równań liniowych. Mój problem leży w tym, że dodatkowym punktem zadania jest to, by obliczenia wykonywały się w sposób równoległy. Nie bardzo wiem w jaki sposób to mogę zrobić. W sensie wiem jak skorzystać z wątku , czy to przez rozszerzenie klasy Threadem, czy poprzez Runnable, ale nie bardzo mam pomysł na zrobienie tego w kontekście tego zadania... Może ktoś pomoże mi wpaść na jakiś pomysł :)
Program jest gotowy i działa prawidłowo, algorytm przedstawia się następująco:
public class Gauss_Jordan
{
public double[] GaussElimination(long[][] A, long[] b, int n)
{
double[] x = new double[n];
double[][] tmpA = new double[n][n + 1];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
tmpA[i][j] = A[i][j];
}
tmpA[i][n] = b[i];
}
double tmp = 0;
for (int k = 0; k < n - 1; k++)
{
for (int i = k + 1; i < n; i++)
{
tmp = tmpA[i][k] / tmpA[k][k];
for (int j = k; j < n + 1; j++)
{
tmpA[i][j] -= tmp * tmpA[k][j];
}
}
}
for (int k = n - 1; k >= 0; k--)
{
tmp = 0;
for (int j = k + 1; j < n; j++)
{
tmp += tmpA[k][j] * x[j];
}
x[k] = (tmpA[k][n] - tmp) / tmpA[k][k];
}
return x;
}
}
Jako parametry podajemy współczynniki przy niewiadomych (long[][] A) , wartości po prawej stronie równania (long b[]), oraz pomocniczo ilość niewiadomych (int n).