Witam. Mam problem siecią hopfielda uzupełnić program. Tylko nie wiem jak w miejsce #### (kratki wstawić odpowiedni kod). To jest cały program macierzy. na samym koncu jest siec hopfielda do zupełnienia. Pomoże ktoś mi???
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SSNMacierz;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//-------------------------------------------------------1
// Macierz Siec4x4 = new Macierz(new double[,] { { 0,-1, 1,-1},
// {-1, 0,-1, 1},
// { 1,-1, 0,-1},
// {-1, 1,-1, 0}});
* Macierz wejscie = new Macierz(new double[,] { { 1, -1, 1, 1} } ); * wektor
// wejscie.WypiszWektor();
// Macierz wyjscie = new Macierz(1, wejscie.LiczbaKolumn);
// wyjscie = MacierzMat.PomnozMacierze(wejscie, Siec4x4);
// wyjscie.WypiszWektor();
Macierz wzorzec=new Macierz(new double[,]{{1,1,1,1,-1}});
wzorzec.WypiszWektor();
Macierz Siec24x4 = new Macierz(5, 5);
Macierz trans = MacierzMat.Transponuj(wzorzec);
Siec24x4 = MacierzMat.PomnozMacierze(trans, wzorzec);
Macierz jedno = MacierzMat.Jednostkowa(5);
Siec24x4 = MacierzMat.OdejmijMacierze(Siec24x4, jedno);
Siec24x4.WypiszWektor();
Macierz wejscie = new Macierz(new double[,] { { 1, 1, 1, 1 ,-1} });
wejscie.WypiszWektor();
Macierz wyjscie = new Macierz(1, wejscie.LiczbaKolumn);
wyjscie = MacierzMat.PomnozMacierze(wejscie, Siec24x4);
wyjscie.WypiszWektor();
Console.ReadKey();
}
}
}
Macierz.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SSNMacierz
{
[Serializable]
public class Macierz
{
double[,] macierz;
public double this[int row, int col]
{
get
{
return this.macierz[row, col];
}
set
{
if (double.IsInfinity(value) || double.IsNaN(value))
{
///error
}
this.macierz[row, col] = value;
}
}
//utworz Macierz o podanych rozmiarach
public Macierz(int rows, int cols)
{
this.macierz = new double[rows, cols];
}
//utworz Macierz z podanej tablicy
public Macierz(double[,] wejsciowaMacierz)
{
this.macierz = new double[wejsciowaMacierz.GetUpperBound(0) + 1, wejsciowaMacierz.GetUpperBound(1) + 1];
for (int r = 0; r < this.LiczbaWierszy; r++)
{
for (int c = 0; c < this.LiczbaKolumn; c++)
{
this[r, c] = wejsciowaMacierz[r, c];
}
}
}
public void Zeruj()
{
for (int r = 0; r < this.LiczbaWierszy; r++)
{
for (int c = 0; c < this.LiczbaKolumn; c++)
{
this[r, c] = 0.0;
}
}
}
public int LiczbaKolumn
{
get
{
return this.macierz.GetUpperBound(1) + 1;
}
}
public int LiczbaWierszy
{
get
{
return this.macierz.GetUpperBound(0) + 1;
}
}
public void WypiszWektor()
{
for (int i = 0; i < this.LiczbaKolumn; i++)
{
if (this[0, i] > 0)
Console.Write("#");
else
Console.Write(".");
}
Console.WriteLine();
}
public void WypiszWektor2D()
{
int imax = (int)(Math.Sqrt(this.LiczbaKolumn));
for (int j = 0; j < imax; j++)
{
for (int i = 0; i < imax; i++)
{
if (this[0, i + j * imax] > 0)
Console.Write("#");
else
Console.Write(".");
}
Console.WriteLine();
}
Console.WriteLine();
}
}
}
MacierzMat.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SSNMacierz
{
public class MacierzMat
{
public static Macierz DodajMacierze(Macierz a, Macierz b)
{
double[,] wynik = new double[a.LiczbaWierszy, a.LiczbaKolumn];
for (int iWiersz = 0; iWiersz < a.LiczbaWierszy; iWiersz++)
{
for (int jKolumna = 0; jKolumna < a.LiczbaKolumn; jKolumna++)
{
wynik[iWiersz, jKolumna] = a[iWiersz, jKolumna]
+ b[iWiersz, jKolumna];
}
}
return new Macierz(wynik);
}
public static Macierz OdejmijMacierze(Macierz a, Macierz b)
{
double[,] wynik = new double[a.LiczbaWierszy, a.LiczbaKolumn];
for (int iWiersz = 0; iWiersz < a.LiczbaWierszy; iWiersz++)
{
for (int jKolumna = 0; jKolumna < a.LiczbaKolumn; jKolumna++)
{
wynik[iWiersz, jKolumna] = a[iWiersz, jKolumna]
- b[iWiersz, jKolumna];
}
}
return new Macierz(wynik);
}
//utworz Macierz Jednostkowa
public static Macierz Jednostkowa(int rozmiar)
{
Macierz wynik = new Macierz(rozmiar, rozmiar);
for (int i = 0; i < rozmiar; i++)
{
wynik[i,i]=1;
//#######
}
return wynik;
}
//tworzy Macierz jako iloczyn 2 macierzy
public static Macierz PomnozMacierze(Macierz a, Macierz b)
{
double[,] wynik = new double[a.LiczbaWierszy, b.LiczbaKolumn];
for (int iWiersz = 0; iWiersz < a.LiczbaWierszy; iWiersz++)
{
for (int jKolumna = 0; jKolumna < b.LiczbaKolumn; jKolumna++)
{
double value = 0.0;
for (int k = 0; k < a.LiczbaKolumn; k++)
{
value+= a[iWiersz, k]* b[k, jKolumna];
}
wynik [iWiersz, jKolumna]=value;
}
}
return new Macierz(wynik);
}
//utworz nowa Macierz transponujac Macierz "a"
public static Macierz Transponuj(Macierz a)
{
double[,] macierzTransp = new double[a.LiczbaKolumn, a.LiczbaWierszy];
for (int r = 0; r < a.LiczbaWierszy; r++)
{
for (int c = 0; c < a.LiczbaKolumn; c++)
{
macierzTransp[c, r] = a[r,c];
}
}
return new Macierz(macierzTransp);
}
// Prywatny konstruktor.
private MacierzMat()
{
}
}
}
Hopfield.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SSNMacierz;
namespace SSN1
{
public class SiecHopfielda
{
private Macierz macierzWag;
public Macierz MacierzWag
{
get
{
return this.macierzWag;
}
}
public int Rozmiar
{
get
{
return this.macierzWag.LiczbaWierszy;
}
}
//--Konstruktor 1-- tworzy SiecHopfielda o podanym rozmiarze (Macierz zer)
public SiecHopfielda(int rozmiar)
{
this.macierzWag = new Macierz(rozmiar, rozmiar);
}
//--Konstruktor 2-- tworzy SiecHopfielda na podstawie juz utworzonej Macierzy
public SiecHopfielda(Macierz mm)
{
this.macierzWag = mm;
}
public Macierz Sprawdz(Macierz probka)
{
Macierz wynik = ################
return wynik;
}
public void NauczSie(Macierz wzor)
{
Macierz wzorT = #############
//.#########
this.macierzWag = MacierzMat.DodajMacierze(this.macierzWag, macierzWzoru);
}
}
}