Główna klasa programu
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Eliminacja_Gaussa
{
class Program
{
static double[,] zawartosc = new double[2, 2];
static double[] wektor = new double[2];
static void Main(string[] args)
{
zawartosc[0, 0]=1;
zawartosc[1, 0]=3;
zawartosc[0, 1]=2;
zawartosc[1, 1]=4;
wektor[0]=2;
wektor[1]=3;
Macierz M = new Macierz(2, wektor, zawartosc);
double[] wynik = M.Gausse();
for(int i = 0; i < 2; i++)
{
Console.WriteLine(wynik[i]);
}
Console.ReadLine();
}
}
}
Klasa macierzy oraz metoda gaussa
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Eliminacja_Gaussa
{
public class Macierz
{
public int rozmiar;
public double[,] zawartosc;
private double[] wektorWyrazowWolnych;
public Macierz(int rozmiar, double[] wektorWyrazowWolnych, double[,] zawartosc)
{
this.rozmiar = rozmiar;
this.wektorWyrazowWolnych = wektorWyrazowWolnych;
this.zawartosc = zawartosc;
}
public double[] Gausse()
{
DoprowadzDoPostaciTrojkatnej();
return Rozwiazanie();
}
private double[] Rozwiazanie()
{
double[] wynik = new double[rozmiar];
wynik[rozmiar - 1] = wektorWyrazowWolnych[rozmiar - 1] / zawartosc[rozmiar - 1, rozmiar - 1];
for(int i = rozmiar - 2; i >= 0; i--)
{
double suma = 0;
for(int j = i +1; j < rozmiar; j++)
{
suma += zawartosc[i, j]* wynik[j];
}
wynik[i] = (wektorWyrazowWolnych[i]- suma)/ zawartosc[i, i];
}
return wynik;
}
private void DoprowadzDoPostaciTrojkatnej()
{
for(int kolumna = 0; kolumna < rozmiar; kolumna++)
{
for(int wiersz = kolumna + 1; wiersz < rozmiar; wiersz++)
{
double wspolczynnik =- (zawartosc[wiersz, kolumna]/ zawartosc[kolumna, kolumna]);
for(int i = kolumna; i < rozmiar; i++)
{
zawartosc[wiersz, i]+= wspolczynnik * zawartosc[kolumna, i];
}
wektorWyrazowWolnych[wiersz]+= wspolczynnik * wektorWyrazowWolnych[kolumna];
}
}
}
}
}