Řešení rovnic
Předcházející | Kapitola 11. Seznam funkcí GEL | Další

## Řešení rovnic

CubicFormula

      CubicFormula (p)

  Vypočítat kořeny kubického (3. stupně) polynomu pomocí kubické rovnice. Polynom by měl být zadán jako vektor koeficientů. Tj. `4*x^3 + 2*x + 1` odpovídá vektoru `[1,2,0,4]`. Vrací sloupcový vektor tří řešení. První řešení je vždy reálné, protože kubická rovnice má vždy jedno reálné řešení.

  Více informací najdete v encyklopediích Planetmath (text je v angličtině), Mathworld (text je v angličtině) a Wikipedia.

EulersMethod

      EulersMethod (f,x0,y0,x1,n)

  Použít klasickou Eulerovu metodu k numerickému řešení y'=f(x,y) pro počáteční `x0`, `y0` měnící se do `x1` s přírůstky `n` a vrátit `y` v `x1`. Pokud nechcete výslovně použít Eulerovu metodu, měli byste vážně popřemýšlet o použití RungeKutta k řešení obyčejných diferenciálních rovnic.

  Systémy je možné vyřešit jednoduše tak, že `y` musí být všude (sloupcový) vektor. To znamená, že `y0` může být vektor v případech, kdy by `f` mělo přebírat `x` a vektor stejné velikosti pro druhý argument a mělo by vracet vektor stejné velikosti.

  Více informací najdete v encyklopediích Mathworld (text je v angličtině) a Wikipedia.

EulersMethodFull

      EulersMethodFull (f,x0,y0,x1,n)

  Použít klasickou Eulerovu metodu k numerickému řešení y'=f(x,y) pro počáteční `x0`, `y0` měnící se do `x1` s přírůstky `n` a vrátit matici `n+1` krát 2 s hodnotami `x` a `y`. Pokud nechcete výslovně použít Eulerovu metodu, měli byste vážně popřemýšlet o použití RungeKuttaFull k řešení obyčejných diferenciálních rovnic. Vhodné pro zapojení do LinePlotDrawLine nebo LinePlotDrawPoints.

  Příklad:

      genius> LinePlotClear();
      genius> line = EulersMethodFull(`(x,y)=y,0,1.0,3.0,50);
      genius> LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponenciální vývoj");

  Systémy je možné vyřešit jednoduše tak, že `y` musí být všude (sloupcový) vektor. To znamená, že `y0` může být vektor v případech, kdy by `f` mělo přebírat `x` a vektor stejné velikosti pro druhý argument a mělo by vracet vektor stejné velikosti.

  Výstup pro systém je nicméně matice n krát 2 s druhou položkou v podobě vektoru. Když si přejete vykreslit čáru, ujistěte se, že používáte řádkové vektory a pak převeďte matici na vektor pomocí ExpandMatrix a vyberte si pravý sloupec. Například:

      genius> LinePlotClear();
      genius> lines = EulersMethodFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,500);
      genius> lines = ExpandMatrix(lines);
      genius> firstline = lines@(,[1,2]);
      genius> secondline = lines@(,[1,3]);
      genius> LinePlotWindow = [0,10,-2,2];
      genius> LinePlotDrawLine(firstline,"color","blue","legend","První");
      genius> LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Druhý");

  Více informací najdete v encyklopediích Mathworld (text je v angličtině) a Wikipedia.

  Verze 1.0.10 a novější.

FindRootBisection

      FindRootBisection (f,a,b,TOL,N)

  Najít kořen funkce pomocí metody bisekce. `a` a `b` je počáteční odhad intervalu, `f(a)` a `f(b)` by měly mít opačná znaménka. `TOL` je požadovaná tolerance a `N` je omezení počtu iterací, které mají proběhnout, 0 značí bez omezení. Funkce vrací vektor `[uspech,hodnota,iteratce]`, kde `uspech` je pravdivostní hodnota signalizující úspěch, `hodnota` je poslední spočtená hodnota a `iterace` je počet dokončených iterací.

FindRootFalsePosition

      FindRootFalsePosition (f,a,b,TOL,N)

  Najít kořen funkce pomocí metody tětiv. `a` a `b` je počáteční odhad intervalu, `f(a)` a `f(b)` by měly mít opačná znaménka. `TOL` je požadovaná tolerance a `N` je omezení počtu iterací, které mají proběhnout, 0 značí bez omezení. Funkce vrací vektor `[uspech,hodnota,iteratce]`, kde `uspech` je pravdivostní hodnota signalizující úspěch, `hodnota` je poslední spočtená hodnota a `iterace` je počet dokončených iterací.

FindRootMullersMethod

      FindRootMullersMethod (f,x0,x1,x2,TOL,N)

  Najít kořen funkce pomocí Mullerovy metody. `TOL` je požadovaná tolerance a `N` je omezení počtu iterací, které mají proběhnout, 0 značí bez omezení. Funkce vrací vektor `[uspech,hodnota,iteratce]`, kde `uspech` je pravdivostní hodnota signalizující úspěch, `hodnota` je poslední spočtená hodnota a `iterace` je počet dokončených iterací.

FindRootSecant

      FindRootSecant (f,a,b,TOL,N)

  Najít kořen funkce pomocí metody sečen. `a` a `b` je počáteční odhad intervalu, `f(a)` a `f(b)` by měly mít opačná znaménka. `TOL` je požadovaná tolerance a `N` je omezení počtu iterací, které mají proběhnout, 0 značí bez omezení. Funkce vrací vektor `[uspech,hodnota,iteratce]`, kde `uspech` je pravdivostní hodnota signalizující úspěch, `hodnota` je poslední spočtená hodnota a `iterace` je počet dokončených iterací.

HalleysMethod

      HalleysMethod (f,df,ddf,odhad,epsilon,maxn)

  Najde nuly pomocí Halleyovy metody. `f` je funkce, `df` je její derivace a `ddf` její druhá derivace. `odhad` je počáteční odhad. Funkce vrací výsledek po dvou úspěšných hodnotách, které každá spadají do `epsilon` nebo po `maxn` pokusech, v kterémžto případě vrací `null`, což značí selhání.

  Viz také `NewtonsMethod` a `SymbolicDerivative`.

  Příklad vyhledání druhé odmocniny z 10:

      genius> HalleysMethod(`(x)=x^2-10,`(x)=2*x,`(x)=2,3,10^-10,100)

  Více informací najdete v encyklopedii Wikipedia (text je v angličtině).

  Verze 1.0.18 a novější.

NewtonsMethod

      NewtonsMethod (f,df,odhad,epsilon,maxn)

  Najde nuly pomocí metody tečen (Newtonovy metody). `f` je funkce a `df` je její derivace. `odhad` je počáteční odhad. Funkce vrací výsledek po dvou úspěšných hodnotách, které každá spadají do `epsilon` nebo po `maxn` pokusech, v kterémžto případě vrací `null`, což značí selhání.

  Viz také `NewtonsMethodPoly` a `SymbolicDerivative`.

  Příklad vyhledání druhé odmocniny z 10:

      genius> NewtonsMethod(`(x)=x^2-10,`(x)=2*x,3,10^-10,100)

  Více informací najdete v encyklopedii Wikipedia.

  Verze 1.0.18 a novější.

PolynomialRoots

      PolynomialRoots (p)

  Vypočítat kořeny polynomu (1. až 4. stupně) pomocí jedné z rovnic pro takovéto polynomy. Polynom by měl být zadán jako vektor koeficientů. Tj. `4*x^3 + 2*x + 1` odpovídá vektoru `[1,2,0,4]`. Vrací sloupcový vektor řešení.

  Funkce volá QuadraticFormula, CubicFormula a QuarticFormula.

QuadraticFormula

      QuadraticFormula (p)

  Vypočítat kořeny kvadratického (2. stupně) polynomu pomocí kvadratické rovnice. Polynom by měl být zadán jako vektor koeficientů. Tj. `3*x^2 + 2*x + 1` odpovídá vektoru `[1,2,3]`. Vrací sloupcový vektor dvou řešení.

  Více informací najdete v encyklopediích Planetmath (text je v angličtině), Mathworld (text je v angličtině) a Wikipedia (text je v angličtině).

QuarticFormula

      QuarticFormula (p)

  Vypočítat kořeny kvartického (4. stupně) polynomu pomocí kvartické rovnice. Polynom by měl být zadán jako vektor koeficientů. Tj. `5*x^4 + 2*x + 1` odpovídá vektoru `[1,2,0,0,5]`. Vrací sloupcový vektor čtyř řešení.

  Více informací najdete v encyklopediích Planetmath (text je v angličtině), Mathworld (text je v angličtině) a Wikipedia (text je v angličtině).

RungeKutta

      RungeKutta (f,x0,y0,x1,n)

  Použít klasickou neadaptivní Rungeho-Kuttovu metodu čtvrtého řádu k numerickému řešení y'=f(x,y) pro počáteční `x0`, `y0` měnící se do `x1` s přírůstky `n`, vrací `y` v `x1`.

  Systémy je možné vyřešit jednoduše tak, že `y` musí být všude (sloupcový) vektor. To znamená, že `y0` může být vektor v případech, kdy by `f` mělo přebírat `x` a vektor stejné velikosti pro druhý argument a mělo by vracet vektor stejné velikosti.

  Více informací najdete v encyklopediích Mathworld (text je v angličtině) a Wikipedia.

RungeKuttaFull

      RungeKuttaFull (f,x0,y0,x1,n)

  Použít klasickou neadaptivní metodu Runge-Kutta čtvrtého řádu k numerickému řešení y'=f(x,y) pro počáteční `x0`, `y0` měnící se do `x1` s přírůstky `n` a vrátit matici `n+1` krát 2 s hodnotami `x` a `y`. Vhodné pro zapojení do LinePlotDrawLine nebo LinePlotDrawPoints.

  Příklad:

      genius> LinePlotClear();
      genius> line = RungeKuttaFull(`(x,y)=y,0,1.0,3.0,50);
      genius> LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponenciální vývoj");

  Systémy je možné vyřešit jednoduše tak, že `y` musí být všude (sloupcový) vektor. To znamená, že `y0` může být vektor v případech, kdy by `f` mělo přebírat `x` a vektor stejné velikosti pro druhý argument a mělo by vracet vektor stejné velikosti.

  Výstup pro systém je nicméně matice n krát 2 s druhou položkou v podobě vektoru. Když si přejete vykreslit čáru, ujistěte se, že používáte řádkové vektory a pak převeďte matici na vektor pomocí ExpandMatrix a vyberte si pravý sloupec. Například:

      genius> LinePlotClear();
      genius> lines = RungeKuttaFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,100);
      genius> lines = ExpandMatrix(lines);
      genius> firstline = lines@(,[1,2]);
      genius> secondline = lines@(,[1,3]);
      genius> LinePlotWindow = [0,10,-2,2];
      genius> LinePlotDrawLine(firstline,"color","blue","legend","První");
      genius> LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Druhý");

  Více informací najdete v encyklopediích Mathworld (text je v angličtině) a Wikipedia.

  Verze 1.0.10 a novější.

Předcházející | Nahoru | Další
Funkce | Domů | Statistika