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