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

See Planetmath, Mathworld, or Wikipedia for more information.

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.

See Mathworld or Wikipedia for more information.

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

Use classical Euler's method to numerically solve y'=f(x,y) for initial x0, y0 going to x1 with n increments, returns an n+1 by 2 matrix with the x and y values. Unless you explicitly want to use Euler's method, you should really think about using RungeKuttaFull for solving ODE. Suitable for plugging into LinePlotDrawLine or 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ý");

See Mathworld or Wikipedia for more information.

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)

See Wikipedia for more information.

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)

See Wikipedia for more information.

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

See Planetmath, or Mathworld, or Wikipedia for more information.

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

See Planetmath, Mathworld, or Wikipedia for more information.

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.

See Mathworld or Wikipedia for more information.

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

Use classical non-adaptive fourth order Runge-Kutta method to numerically solve y'=f(x,y) for initial x0, y0 going to x1 with n increments, returns an n+1 by 2 matrix with the x and y values. Suitable for plugging into LinePlotDrawLine or 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ý");

See Mathworld or Wikipedia for more information.

Verze 1.0.10 a novější.