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 (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.
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 (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)
See Wikipedia for more information.
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)
See Wikipedia for more information.
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í.
See Planetmath, or Mathworld, or Wikipedia for more information.
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 (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.
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ší.