Witam
Mam problem z eliminacja Gaussa dla macierzy 2x2 działa dobrze ale dla większych podaje już złe wyniki :/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication37
{
class Program
{
static void Main(string[] args)
{
const int n = 2;
double[,] A ={ {2,3,0},
{3,4,1} };
int[] Z = new int[n];
double[] X = new double[n];
for (int i = 0; i < n; i++)
{
Z[i] = i;
}
//?
for (int k = 0; k < n; k++)
{//1
double max = A[k, k];
int r = k;
int c = k;
for (int i = k; i < n; i++)
{//2
for (int j = k; j < n; j++)
{//3
if (Math.Abs(A[i, j]) > Math.Abs(max))
{//if1
max = A[i, j];
r = i;
c = j;
}//if1
}//3
}//2
for (int j = k; j <= n; j++)
{//4
//zamiana k i w
double a = A[k, j];
A[k, j] = A[r, j];
A[r, j] = a;
}//4j
for (int i = k; i < n; i++)
{//5
double b = A[i, k];
A[i, k] = A[i, c];
A[i, c] = b;
}//5
int temp = Z[c];
Z[c] = Z[k];
Z[k] = temp;
for (int i = k + 1; i < n; i++)
{//6
for (int j = k+1; j <= n; j++)
{//7
A[i, j] = A[i, j] - (A[i, k] / max) * A[k, j];
}//7
}//1
}//6
for (int i =0; i < n; i++)
{//6
for (int j =0; j <= n; j++)
{//7
Console.Write(A[i, j]+" ");
}//7
Console.WriteLine();
}//6
for (int i = n - 1; i >= 0; i--)
{
double s = 0;
for (int m = (i + 1); m < n; m++)
{//?
s = s + A[i, m] * X[m];//???
}
X[i] = (A[i, n] - s) / A[i, i];
}
for (int i = 0; i < n; i++)
{
Console.WriteLine(" Z[ " + i + " ]" + X[(Z[i])]);
}
Console.ReadLine();
}
}
}