Ř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ší.