Wiener ir Smooth filtrai

Naudojant naują analizės metodą, kuriame realizuoti Wiener ir Smooth filtrai, prie standartinio GMJ paketo reikalingos šios klasės:

ktu.lt.gmj.WienerDomain, ktu.lt.gmj.analysis.WalrasProfit, ktu.lt.gmj.HostNameRetriever, ktu.lt.gmj.ui.GMJext (paskutiniosios dvi klasės reikalingos tik kelio iki apleto radimui. Jeigu šis kelias bus įvedinėjamas ranka, šių klasių galima ir atsisakyti)

Taip pat modifikuota klasė ktu.lt.gmj.Task

Norint prijungti šiuos filtrus prie naujo uždavinio, reikia realizuoti naują klasę, paveldinčią WienerDomain klasę (visi pateikiami pavyzdžiai yra iš Walras modelio, tačiau filtra galima pritaikyti
kitiems modeliams. Kuriama nauja 'autonominė' filtro  versija tinkanti failams įvesti/išvesti applet režime):

class WalrasWienerDomain extends WienerDomain {
static double[][] X;
static double[][] Y;
static final String[] dimensions = {
"1st server profit (iteration)",
"2nd server profit (iteration)"
};

public String[] dimensions() {
return dimensions;}
public WalrasWienerDomain() {
setXY(X, Y);}
};

Klasės WienerDomain kintamieji ir metodai:
X - abscisių reikšmių masyvas
Y - ordinačių reikšmių masyvas
dimensions - projekcijų pavadinimia, t.y. kokį pavadinimą matys vartotojas analizės lange.

public String[] dimensions() - metodas, grąžinantis projekcijų pavadinimus
public void setXY(double[][]X, double[][]Y) - nustatotmos X, Y reikšmės. Jeigu analizei duomenys skaitomi ne iš failo, o nustatomi programiškai, tai turi būti naudojamas šis metodas. Duomenys grafikui imami iš masyvų X, Y, todėl korektiškui duomenų atvaizdavimui analizės lange būtina skaičiavimų metu sekti ir pastoviai atnaujinti X, Y reikšmes, tam naudojant WienerDomain klasės metodą public void setXY (double[][] X, double[][] Y).

Klasėje, realizuojančioje Task interfeisą, t.y. naujame uždavinyje, turi būti klasės paveldinčios WienerDomain tipo kintamasis bei šį kintamąjį grąžinantis Task interfeiso metodas public WienerDomain wienerDomain(), pvz.:

public class WalrasModel implements Task {
................
public WalrasWienerDomain wdomain = new WalrasWienerDomain();
................
public WienerDomain wienerDomain() {
return wdomain; }
................}

Wiener ir Smooth analizė prie apleto prijungiama kaip ir kitos standartinės analizės, pvz. eilutė iš *.html failo:
ANALYSIS="lt.ktu.gmj.analysis.Convergence|lt.ktu.gmj.analysis.Spectrum|lt.ktu.gmj.analysis.Projection|lt.ktu.gmj.analysis.WalrasProfit"

Kad filtro analizės lange būtų automatiškai užrašomas kelias iki apleto, t.y. kelias iki prieinamų duomenų failų, apleto kodo klasė turi būti GMJext.class, o ne GMJ.class, pvz. eilutė iš *.html failo:
code=lt.ktu.gmj.ui.GMJext.class

Taip pat turi būti nurodytas parametras codebase, nurodantis tolimesnį kelią nuo apleto iki duomenų failo, pvz. eilutė iš *.html failo (šiuo atveju filtro lange bus nurodomas adresas: kelias iki apleto/lib/ ):
codeBase="lib"

Wiener ir Smooth filtrų analizės langas:

Laukų reikšmės:
1 - Wiener filtro parametras
2 - failo, iš kurio skaitomi duomenys, vardas. Failas turėtų būti padėtas ten pat, kaip ir apletas. Įjungus šį analizės langą, duomenys imami iš programos, t.y. jeigu nustatytos WienerDomain klasės kintamųjų X, Y reikšmės. Jeigu šios reikšmės nustatytos nekorektiškai, arba vykdant skaičiavimus neatnaujintos, tai ir grafikas bus atitinkamai neteisingas. Nurodžius failo vardą, duomenys skaitomi iš šio failo. Failo formatas: pirmas stulpelis x reikšmės, sekantys stulpeliai y reikšmės. Tokiu būdu grafike gali būti atvaizduotos priklausomybės Y1(x), Y2(x) ir t.t. Paspaudus Load mygtuką, nuskaitomi duomenys iš failo.
3 - mygtukai, skirti analizei. Smooth - smooth analizei atlikti, Wiener - wiener analizei atlikti, Undo - vieno veiksmo atšaukimas, Refresh - duomenų atnaujinimas
4 - grafiko langas
5 - skirtingų projekcijų pasirinkimas. Pavadinimai ir kiekis gali būti nustatomas klasėje realizuojančioje WienerDomain klasę. Tokiu atveju šie pavadinimai taikomi duomenims, gautiems iš programos. Nuskaičius duomenis iš failo, šie pavadinimai automatiškai keičiami į y1(x), y2(x) ir t.t. Projekcijų bus tiek, kiek faile yra skirtingų y stulpelių.