<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sk">
	<id>http://www.kiwiki.info/index.php?action=history&amp;feed=atom&amp;title=Java_-_algoritmy_aproxim%C3%A1cie</id>
	<title>Java - algoritmy aproximácie - História úprav</title>
	<link rel="self" type="application/atom+xml" href="http://www.kiwiki.info/index.php?action=history&amp;feed=atom&amp;title=Java_-_algoritmy_aproxim%C3%A1cie"/>
	<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Java_-_algoritmy_aproxim%C3%A1cie&amp;action=history"/>
	<updated>2026-04-14T20:37:38Z</updated>
	<subtitle>História úprav pre túto stránku na wiki</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Java_-_algoritmy_aproxim%C3%A1cie&amp;diff=9662&amp;oldid=prev</id>
		<title>Juraj: Vytvorená stránka „{{navigacne menu - java}} Klasickým problémom vo viacerých vedných disciplínach je nájsť trend vývoja určitej situácie, pričom poznáme len diskrétne hodnoty. …“</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Java_-_algoritmy_aproxim%C3%A1cie&amp;diff=9662&amp;oldid=prev"/>
		<updated>2011-04-09T20:23:31Z</updated>

		<summary type="html">&lt;p&gt;Vytvorená stránka „{{navigacne menu - java}} Klasickým problémom vo viacerých vedných disciplínach je nájsť trend vývoja určitej situácie, pričom poznáme len diskrétne hodnoty. …“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{navigacne menu - java}}&lt;br /&gt;
Klasickým problémom vo viacerých vedných disciplínach je nájsť trend vývoja určitej situácie, pričom poznáme len diskrétne hodnoty. Úloha je prostá nájsť takú krivku, ktorá sa najviac približuje daným diskrétnym hodnotám.&lt;br /&gt;
&lt;br /&gt;
[[Súbor:metoda najmensich stvorcov.png|thumb|left|200px|Metóda najmenších štvorcov]]&lt;br /&gt;
Túto úlohu riešia algoritmy aproximácie. Medzi najpoužívanejší algoritmus patrí metóda najmenších štvorcov&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Least_squares&amp;lt;/ref&amp;gt;. Jedná sa o optimalizačný problém, kde je treba nájsť takú krivku (modrá čiara) od ktorej je štvorec vzdialenosti vstupných bodov (červené body) minimálny.&lt;br /&gt;
&lt;br /&gt;
==Metóda najmenších štvorcov==&lt;br /&gt;
V praktickom príklade si ukážeme výpočet lineárnej, logaritmickej, exponenciálnej a mocninovej aproximácie. Teória, ktorú budeme potrebovať je v časti [[Algoritmy numerickej aproximácie (riešené príklady)]].&lt;br /&gt;
&lt;br /&gt;
Pre úplnosť poznamenajme, že máme k dispozícii n bodov v rovine a cez tieto body chceme preložiť nejakú krivku. Uvedieme len základné tvary hľadaných aproximácií a matematické  vyjadrenie riešenia problému.&lt;br /&gt;
&lt;br /&gt;
===Lineárna aproximácia===&lt;br /&gt;
Tvar rovnice hľadanej krivky: &amp;lt;math&amp;gt;y=ax+b\,&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{align}&lt;br /&gt;
  &amp;amp; a=\frac{n\sum\limits_{i=1}^{n}{{{x}_{i}}{{y}_{i}}}-\sum\limits_{i=1}^{n}{{{x}_{i}}}\sum\limits_{i=1}^{n}{{{y}_{i}}}}{n\sum\limits_{i=1}^{n}{x_{i}^{2}}-{{\left( \sum\limits_{i=1}^{n}{{{x}_{i}}} \right)}^{2}}} \\ &lt;br /&gt;
 &amp;amp; b=\frac{\sum\limits_{i=1}^{n}{{{y}_{i}}}-a\sum\limits_{i=1}^{n}{{{x}_{i}}}}{n} \\ &lt;br /&gt;
\end{align}&amp;lt;/math&amp;gt;&lt;br /&gt;
===Logaritmická aproximácia===&lt;br /&gt;
Tvar rovnice hľadanej krivky:  &amp;lt;math&amp;gt;y=a\ln x+b\,&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{align}&lt;br /&gt;
  &amp;amp; a=\frac{n\sum\limits_{i=1}^{n}{\left( \ln {{x}_{i}} \right){{y}_{i}}}-\sum\limits_{i=1}^{n}{\ln {{x}_{i}}}\sum\limits_{i=1}^{n}{{{y}_{i}}}}{n\sum\limits_{i=1}^{n}{{{\left( \ln {{x}_{i}} \right)}^{2}}}-{{\left( \sum\limits_{i=1}^{n}{\ln {{x}_{i}}} \right)}^{2}}} \\ &lt;br /&gt;
 &amp;amp; b=\frac{\sum\limits_{i=1}^{n}{{{y}_{i}}}-a\sum\limits_{i=1}^{n}{\ln {{x}_{i}}}}{n} \\ &lt;br /&gt;
\end{align}&amp;lt;/math&amp;gt;&lt;br /&gt;
===Exponenciálna aproximácia===&lt;br /&gt;
Tvar rovnice hľadanej krivky: &amp;lt;math&amp;gt;y=b{{e}^{ax}}\,&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{align}&lt;br /&gt;
  &amp;amp; a=\frac{n\sum\limits_{i=1}^{n}{{{x}_{i}}\ln {{y}_{i}}}-\sum\limits_{i=1}^{n}{{{x}_{i}}}\sum\limits_{i=1}^{n}{\ln {{y}_{i}}}}{n\sum\limits_{i=1}^{n}{x_{i}^{2}}-{{\left( \sum\limits_{i=1}^{n}{{{x}_{i}}} \right)}^{2}}} \\ &lt;br /&gt;
 &amp;amp; B=\frac{\sum\limits_{i=1}^{n}{\ln {{y}_{i}}}-a\sum\limits_{i=1}^{n}{{{x}_{i}}}}{n} \\ &lt;br /&gt;
\end{align}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
kde &amp;lt;math&amp;gt;B=\ln b&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Mocninová aproximácia===&lt;br /&gt;
Tvar rovnice hľadanej krivky: &amp;lt;math&amp;gt;y=b{{x}^{a}}\,&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Riešenie:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{align}&lt;br /&gt;
  &amp;amp; a=\frac{n\sum\limits_{i=1}^{n}{\ln {{x}_{i}}\ln {{y}_{i}}}-\sum\limits_{i=1}^{n}{\ln {{x}_{i}}}\sum\limits_{i=1}^{n}{\ln {{y}_{i}}}}{n\sum\limits_{i=1}^{n}{{{\left( \ln {{x}_{i}} \right)}^{2}}}-{{\left( \sum\limits_{i=1}^{n}{\ln {{x}_{i}}} \right)}^{2}}} \\ &lt;br /&gt;
 &amp;amp; B=\frac{\sum\limits_{i=1}^{n}{\ln {{y}_{i}}}-a\sum\limits_{i=1}^{n}{\ln {{x}_{i}}}}{n} \\ &lt;br /&gt;
\end{align}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
kde &amp;lt;math&amp;gt;B=\ln b&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Riešenie v Jave==&lt;br /&gt;
Na začiatku bolo povedané že musíme mať niekoľko (min. 2) body podľa ktorých budeme aproximovať. Ako prvý krok si vytvoríme jednoduchú triedu ''Bod'', ktorá bude reprezentovať jeden bod v 2D rovine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Bod {&lt;br /&gt;
    public double x,y;&lt;br /&gt;
&lt;br /&gt;
    public Bod(double x, double y) {&lt;br /&gt;
        this.x = x;&lt;br /&gt;
        this.y = y;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public Bod() {&lt;br /&gt;
        this(0,0);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Trieda obsahuje len konštruktor. Ostatné metódy nie sú potrebné, keďže vnútorné premenné x a y sú verejné.&lt;br /&gt;
&lt;br /&gt;
Vytvorme si novú triedu a nazvime ju ''Extrapolacia''. V tejto triede budeme riešiť algoritmy aproximácie a interpolácie. Naša trieda ''Extrapolacia'' musí obsahovať n bodov, ktoré použijeme pri výpočte parametrov aproximovanej krivky. Počet týchto bodov nie je dopredu známy a dokonca sa môže počet behu programu meniť. Pre ukladanie týchto bodov použijeme vstavané rozhranie ''List''&amp;lt;ref&amp;gt;http://download.oracle.com/javase/1.4.2/docs/api/java/util/Collection.html&amp;lt;/ref&amp;gt; (zoznam), resp. triedu ''ArrayList''&amp;lt;ref&amp;gt;http://tutorials.jenkov.com/java-collections/list.html&amp;lt;/ref&amp;gt;. Trieda ArrayList dovoľuje vytvoriť zoznam, resp. pole z ľubovoľných objektov. V našom prípade potrebujeme vytvoriť zoznam bodov:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   List body&amp;lt;Bod&amp;gt;=new ArrayList&amp;lt;Bod&amp;gt;()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Trieda ''Extrapolacia'' bude okrem objektu ''body'' ešte obsahovať informáciu type aproximácie, ktorá sa bude počítať (typAproximacie) a parametroch a, b (aproxA, aproxB), ktorá vlastne charakterizujú danú krivku.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
public class Extrapolacia {&lt;br /&gt;
&lt;br /&gt;
    public final static int aproxLin = 0;&lt;br /&gt;
    public final static int aproxLog = 1;&lt;br /&gt;
    public final static int aproxExp = 2;&lt;br /&gt;
    public final static int aproxMoc = 3;&lt;br /&gt;
    private int typAproximacie;&lt;br /&gt;
    private double aproxA, aproxB;&lt;br /&gt;
    public List&amp;lt;Bod&amp;gt; body;&lt;br /&gt;
&lt;br /&gt;
    public Extrapolacia() {&lt;br /&gt;
        body = new ArrayList&amp;lt;Bod&amp;gt;();&lt;br /&gt;
        this.typAproximacie = Extrapolacia.aproxLin;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public void addBod(Bod X) {&lt;br /&gt;
        body.add(X);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public double getA() {&lt;br /&gt;
        return aproxA;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public double getB() {&lt;br /&gt;
        return aproxB;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public int getTypAproximacie() {&lt;br /&gt;
        return typAproximacie;&lt;br /&gt;
    }  &lt;br /&gt;
  // ostatne metody triedy Extrapolacia&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pre jednoduchšie určovanie typu aproximácie sme si vytvorili statické konštanty ''aproxLin, aproxLog, aproxExp'' a ''aproxMoc''. Pri vytváraní objektu ''Extrapolacia'' (v konštruktore) sa určí ako prednastavený typ aproximácie lineárna aproximácia.&lt;br /&gt;
&lt;br /&gt;
Metóda ''addBod'' pridá do zoznamu bodov ''body'' nový bod.&lt;br /&gt;
&lt;br /&gt;
===Implementácie metódy najmenších štvorcov===&lt;br /&gt;
Prvým krokom pri implementácii metódy najmenších štvorcov je vypočítať súčty (sumy) uvedené vo vzorcoch. &lt;br /&gt;
&lt;br /&gt;
Pri lineárnej aproximácie máme súčet x-ových súradníc, súčet y-ových súradníc, súčet štvorca x-vých súradníc a výrazov &amp;lt;math&amp;gt;x_i * y_i&amp;lt;/math&amp;gt;. V programe si označme tieto sumy premennými ''sx, sy, sxx'' a ''sxy''.&lt;br /&gt;
&lt;br /&gt;
Pri logaritmickej aproximácii máme naviac súčet logaritmu x-vých súradníc, súčet štvorca logaritmu x-vých súradníc a súčet výrazov &amp;lt;math&amp;gt;ln x_i * y_i&amp;lt;/math&amp;gt;. Označme si tieto sumy premennými ''slx, slxx'' a ''slxy''.&lt;br /&gt;
&lt;br /&gt;
Podobne si nazveme aj ostatné sumy. Ak máme všetky tieto sumy vypočítané, môžeme ch dosadiť do výsledného vzorca. Vzorec do ktorého dosadíme tieto sumy bude určený podľa požadovaného typu aproximácie.&lt;br /&gt;
&lt;br /&gt;
Triedu ''Aproximator'' doplníme o nasledujúcu metódu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    public void aproximacia(final int typ) {&lt;br /&gt;
        this.typAproximacie = typ;&lt;br /&gt;
        double sx = 0, sxx = 0, sy = 0, sxy = 0, slxly = 0;&lt;br /&gt;
        double slx = 0, slxx = 0, sly = 0, slxy = 0, sxly = 0;&lt;br /&gt;
        &lt;br /&gt;
        // vypocet sum do vzorcov&lt;br /&gt;
        for (int i = 0; i &amp;lt; this.body.size(); i++) {&lt;br /&gt;
            sx += this.body.get(i).x;&lt;br /&gt;
            slx += Math.log(this.body.get(i).x);&lt;br /&gt;
            sy += this.body.get(i).y;&lt;br /&gt;
            sly += Math.log(this.body.get(i).y);&lt;br /&gt;
            sxy += this.body.get(i).x * this.body.get(i).y;&lt;br /&gt;
            slxy += Math.log(this.body.get(i).x) * this.body.get(i).y;&lt;br /&gt;
            sxly += this.body.get(i).x * Math.log(this.body.get(i).y);&lt;br /&gt;
            slxly += Math.log(this.body.get(i).x) * Math.log(this.body.get(i).y);&lt;br /&gt;
            sxx += this.body.get(i).x * this.body.get(i).x;&lt;br /&gt;
            slxx += Math.log(this.body.get(i).x) * Math.log(this.body.get(i).x);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        int n = this.body.size();&lt;br /&gt;
        // vysledny vzoroc urcime podla pozadovaneho typu aproximacie&lt;br /&gt;
        switch (typ) {&lt;br /&gt;
            case Extrapolacia.aproxLin:&lt;br /&gt;
                this.aproxA = (n * sxy - sy * sx) / (n * sxx - sx * sx);&lt;br /&gt;
                this.aproxB = (sy - this.aproxA * sx) / n;&lt;br /&gt;
                break;&lt;br /&gt;
            case Extrapolacia.aproxLog:&lt;br /&gt;
                this.aproxA = (n * slxy - sy * slx) / (n * slxx - slx * slx);&lt;br /&gt;
                this.aproxB = (sy - this.aproxA * slx) / n;&lt;br /&gt;
                break;&lt;br /&gt;
            case Extrapolacia.aproxExp:&lt;br /&gt;
                this.aproxA = (n * sxly - sly * sx) / (n * sxx - sx * sx);&lt;br /&gt;
                this.aproxB = (sly - this.aproxA * sx) / n;&lt;br /&gt;
                this.aproxB = Math.exp(this.aproxB);&lt;br /&gt;
                break;&lt;br /&gt;
            case Extrapolacia.aproxMoc:&lt;br /&gt;
                this.aproxA = (n * slxly - sly * slx) / (n * slxx - slx * slx);&lt;br /&gt;
                this.aproxB = (sly - this.aproxA * slx) / n;&lt;br /&gt;
                this.aproxB = Math.exp(this.aproxB);&lt;br /&gt;
                break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
V predchádzajúcej metóde boli vypočítané len koeficienty a, b. Do našej aplikácie potrebujeme doplniť ďalšiu metódu, ktorá nám vypočíta funkčnú hodnotu z danej aproximovanej krivky. Do triedy ''Aproximator'' doplníme metódu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    public double aproximovanaHodnota(double x) {&lt;br /&gt;
        double y = 0;&lt;br /&gt;
        switch (this.typAproximacie) {&lt;br /&gt;
            case Extrapolacia.aproxLin:&lt;br /&gt;
                y = this.aproxA * x + this.aproxB;&lt;br /&gt;
                break;&lt;br /&gt;
            case Extrapolacia.aproxLog:&lt;br /&gt;
                y = this.aproxA * Math.log(x) + this.aproxB;&lt;br /&gt;
                break;&lt;br /&gt;
            case Extrapolacia.aproxExp:&lt;br /&gt;
                y = this.aproxB * Math.exp(this.aproxA * x);&lt;br /&gt;
                break;&lt;br /&gt;
            case Extrapolacia.aproxMoc:&lt;br /&gt;
                y = this.aproxB * Math.pow(x, this.aproxA);&lt;br /&gt;
                break;&lt;br /&gt;
        }&lt;br /&gt;
        return y;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Použitie metód aproximácie v aplikácii==&lt;br /&gt;
Vo vzorovej aplikácii pridáme na kartu 'Extrapolácia' komponenty podľa nasledujúceho obrázku: &lt;br /&gt;
&lt;br /&gt;
[[Súbor:metoda najmensich stvorcov - design.png|thumb|center|400px|Vizuálny návrh časti aplickácie - aproximácia]]&lt;br /&gt;
&lt;br /&gt;
Opis komponentov: &lt;br /&gt;
&lt;br /&gt;
'''textField'''&lt;br /&gt;
* Dva komponenty textfielt slúžia na zadávanie body (x, y súradnica) do aplikácie&lt;br /&gt;
** názov komponentu: textExtraX, textExtraY&lt;br /&gt;
&lt;br /&gt;
'''label'''&lt;br /&gt;
*Zobrazie počtu bodov pre aproximáciu (na obrázku má hodnotu 0)&lt;br /&gt;
** názov komponentu: labelInterpolaciaBody&lt;br /&gt;
*Zobrazenie výslednej rovnice proximácie&lt;br /&gt;
**názov komponentu: labelRovnica&lt;br /&gt;
&lt;br /&gt;
'''comboBox'''&lt;br /&gt;
*Výber typu aproximácie - rozbaľovací zoznam&lt;br /&gt;
**názov komponentu: comboAproximacia&lt;br /&gt;
** Obsahuje 4 položky: Lineárna, Logaritmicá, Exponenciálna a Mocninová.&lt;br /&gt;
*** Tieto položky nastavíme pomocou vlastnosti ''model''.&lt;br /&gt;
&lt;br /&gt;
'''button'''&lt;br /&gt;
*Pridanie bodu do zoznamu bodov pre aproximáciu&lt;br /&gt;
**text komponentu: 'Pridaj bod'&lt;br /&gt;
**názov komponentu: tlcPridajBod&lt;br /&gt;
**udalosť tlačidla: tlcPridajBodActionPerformed&lt;br /&gt;
*Spustenie aproximácie a vykreslenie výsledku&lt;br /&gt;
**text komponentu: 'Aproximuj!' &lt;br /&gt;
**názov komponentu: tlcAproximuj&lt;br /&gt;
**udalosť tlačidla: tlcAproximujActionPerformed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Obsluha kliknutia tlačidiel:&lt;br /&gt;
&lt;br /&gt;
'''Udalosť Pridaj bod'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    private void tlcPridajBodActionPerformed(java.awt.event.ActionEvent evt) {                                             &lt;br /&gt;
        double x, y;&lt;br /&gt;
        x = Double.valueOf(textExtraX.getText());&lt;br /&gt;
        y = Double.valueOf(textExtraY.getText());&lt;br /&gt;
        e.addBod(new Bod(x, y));&lt;br /&gt;
        labelInterpolaciaBody.setText(String.valueOf(e.body.size()));&lt;br /&gt;
    }                                            &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Udalosť Aproximuj!'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
    private void tlcAproximujActionPerformed(java.awt.event.ActionEvent evt) {                                              &lt;br /&gt;
&lt;br /&gt;
        int i = comboAproximacia.getSelectedIndex();&lt;br /&gt;
        e.aproximacia(i);&lt;br /&gt;
        NumberFormat formatter = new DecimalFormat(&amp;quot;#0.000&amp;quot;);&lt;br /&gt;
        double a, b;&lt;br /&gt;
        a = e.getA();&lt;br /&gt;
        b = e.getB();&lt;br /&gt;
        // zobrazenie rovnice aproximacie&lt;br /&gt;
        String rovnica = &amp;quot;y=&amp;quot;;&lt;br /&gt;
        switch (e.getTypAproximacie()) {&lt;br /&gt;
            case Extrapolacia.aproxLin:&lt;br /&gt;
                rovnica += formatter.format(a) + &amp;quot;x +&amp;quot; + formatter.format(b);&lt;br /&gt;
                break;&lt;br /&gt;
            case Extrapolacia.aproxLog:&lt;br /&gt;
                rovnica += formatter.format(a) + &amp;quot;ln x +&amp;quot; + formatter.format(b);&lt;br /&gt;
                break;&lt;br /&gt;
            case Extrapolacia.aproxExp:&lt;br /&gt;
                rovnica += formatter.format(b) + &amp;quot;e^(&amp;quot; + formatter.format(a) + &amp;quot;x)&amp;quot;;&lt;br /&gt;
                break;&lt;br /&gt;
            case Extrapolacia.aproxMoc:&lt;br /&gt;
                rovnica += formatter.format(b) + &amp;quot;x^&amp;quot; + formatter.format(a);&lt;br /&gt;
                break;&lt;br /&gt;
        }&lt;br /&gt;
        labelRovnica.setText(rovnica); // label s rovnicou aproximacie&lt;br /&gt;
&lt;br /&gt;
        //vykreslenie aproximovanej krivky        &lt;br /&gt;
        int sirka, vyska;&lt;br /&gt;
        sirka = panel.getWidth();&lt;br /&gt;
        vyska = panel.getHeight();&lt;br /&gt;
        t.setSize(sirka, vyska);&lt;br /&gt;
&lt;br /&gt;
        g = panel.getGraphics();&lt;br /&gt;
        g.clearRect(1, 1, sirka - 2, vyska - 2);&lt;br /&gt;
        g.setColor(Color.GRAY);&lt;br /&gt;
        g.drawLine(0, vyska / 2, sirka, vyska / 2);&lt;br /&gt;
        g.drawLine(sirka / 2, 0, sirka / 2, vyska);&lt;br /&gt;
&lt;br /&gt;
        g.setColor(Color.GREEN);&lt;br /&gt;
        double x1, y1, x2, y2 = 0;&lt;br /&gt;
        x1 = -t.getStrana();&lt;br /&gt;
        y1 = e.aproximovanaHodnota(x1);&lt;br /&gt;
        for (x2 = -t.getStrana(); x2 &amp;lt; t.getStrana(); x2 += t.getKrok()) {&lt;br /&gt;
            y2 = e.aproximovanaHodnota(x2);&lt;br /&gt;
            g.drawLine(t.getX(x1), t.getY(y1), t.getX(x2), t.getY(y2));&lt;br /&gt;
            x1 = x2;&lt;br /&gt;
            y1 = y2;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // zobrazenie bodov, pre ktore pocitame aproximaciu&lt;br /&gt;
        int r = 3;&lt;br /&gt;
        g.setColor(Color.BLACK);&lt;br /&gt;
        for (Bod A : this.e.body) {&lt;br /&gt;
            g.drawOval(t.getX(A.x) - r, t.getY(A.y) - r, 2 * r, 2 * r);&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Výsledok:&lt;br /&gt;
&lt;br /&gt;
[[Súbor:metoda najmensich stvorcov - vysledok.png|thumb|center|400px|Aproximácia - riešenie]]&lt;br /&gt;
&lt;br /&gt;
==Zdroje a odkazy==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Juraj</name></author>
		
	</entry>
</feed>