CubicFormula (p)
Beräkna rötter för ett tredjegradspolynom med formel. Polynomet ska anges som en vektor av koefficienter. Det vill säga 4*x^3 + 2*x + 1
motsvarar vektorn [1,2,0,4]
. Returnerar en kolumnvektor av de tre lösningarna. Den första lösningen är alltid den reella eftersom ett tredjegradspolynom alltid har en reell lösning.
Se Planetmath, Mathworld eller Wikipedia för mer information.
EulersMethod (f,x0,y0,x1,n)
Använd Eulers klassiska metod för att numeriskt lösa y'=f(x,y) för initialt x0
, y0
som går till x1
med n
inkrement, returnerar y
vid x1
. Om du inte explicit vill använda Eulers metod bör du verkligen överväga att använda RungeKutta för lösning av ODE.
System kan lösas genom att helt enkelt låta y
vara en (kolumn)vektor överallt. Det vill säga, y0
kan vara en vektor i vilket fall f
bör ta ett tal x
och en vektor av samma storlek som det andra argumentet och bör returnera en vektor av samma storlek.
EulersMethodFull (f,x0,y0,x1,n)
Använd Eulers klassiska metod för att numeriskt lösa y'=f(x,y) för initialt x0
, y0
som går till x1
med n
inkrement, returnerar en (n+1
)×2-matris med x
- och y
-värdena. Om du inte explicit vill använda Eulers metod bör du verkligen överväga att använda RungeKuttaFull för lösning av ODE. Lämplig för att koppla ihop med LinePlotDrawLine eller LinePlotDrawPoints.
Exempel:
genius>
LinePlotClear();
genius>
line = EulersMethodFull(`(x,y)=y,0,1.0,3.0,50);
genius>
LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponentiell tillväxt");
System kan lösas genom att helt enkelt låta y
vara en (kolumn)vektor överallt. Det vill säga, y0
kan vara en vektor i vilket fall f
bör ta ett tal x
och en vektor av samma storlek som det andra argumentet och bör returnera en vektor av samma storlek.
Utdata för ett system är fortfarande en n×2-matris där den andra posten är en vektor. Om du vill rita linjen, se till att använda radvektorer och platta sedan till matrisen med ExpandMatrix och välj de rätta kolumnerna. Exempel:
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","Första");
genius>
LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Andra");
Se Mathworld eller Wikipedia för mer information.
Version 1.0.10 och framåt.
FindRootBisection (f,a,b,TOL,N)
Hitta rot för en funktion med bisektionsmetoden. a
och b
är det ursprungliga gissningsintervallet, f(a)
och f(b)
måste ha olika tecken. TOL
är den önskade toleransen och N
är gränsen för hur många iterationer att köra, 0 betyder ingen gräns. Funktionen returnerar en vektor [lyckad,värde,iteration]
, där lyckad
är ett booleskt värde som indikerar om den lyckats, värde
är det sista beräknade värdet, och iteration
är antalet utförda iterationer.
FindRootFalsePosition (f,a,b,TOL,N)
Hitta rot för en funktion med regula falsi-metoden. a
och b
är det ursprungliga gissningsintervallet, f(a)
och f(b)
måste ha olika tecken. TOL
är den önskade toleransen och N
är gränsen för hur många iterationer att köra, 0 betyder ingen gräns. Funktionen returnerar en vektor [lyckad,värde,iteration]
, där lyckad
är ett booleskt värde som indikerar om den lyckats, värde
är det sista beräknade värdet, och iteration
är antalet utförda iterationer.
FindRootMullersMethod (f,x0,x1,x2,TOL,N)
Hitta rot för en funktion med Mullers metod. TOL
är den önskade toleransen och N
är gränsen för antal iterationer att köra, 0 betyder ingen gräns. Funktionen returnerar en vektor [lyckad,värde,iteration]
, där lyckad
är ett booleskt värde som indikerar om den lyckats, värde
är det sista beräknade värdet, och iteration
är antalet utförda iterationer.
FindRootSecant (f,a,b,TOL,N)
Hitta rot för en funktion med sekantmetoden. a
och b
är det ursprungliga gissningsintervallet, f(a)
och f(b)
måste ha olika tecken. TOL
är den önskade toleransen och N
är gränsen för hur många iterationer att köra, 0 betyder ingen gräns. Funktionen returnerar en vektor [lyckad,värde,iteration]
, där lyckad
är ett booleskt värde som indikerar om den lyckats, värde
är det sista beräknade värdet, och iteration
är antalet utförda iterationer.
HalleysMethod (f,df,ddf,gissning,epsilon,maxn)
Hitta nollpunkter med Halleys metod. f
är funktionen, df
är derivatan av f
, och ddf
är andraderivatan av f
. gissning
är den ursprungliga gissningen. Funktionen returnerar efter att två på varandra följande värden är inom epsilon
från varandra, eller efter maxn
försök, i vilket fall funktionen returnerar sedan null
vilket indikerar misslyckande.
Se även NewtonsMethod
och SymbolicDerivative
.
Exempel för att hitta kvadratroten av 10:
genius>
HalleysMethod(`(x)=x^2-10,`(x)=2*x,`(x)=2,3,10^-10,100)
Se Wikipedia för mer information.
Version 1.0.18 och framåt.
NewtonsMethod (f,df,gissning,epsilon,maxn)
Hitta nollor med Newtons metod. f
är funktionen och df
är derivatan av f
. gissning
är den ursprungliga gissningen. Funktionen returnerar efter två på varandra följande värden inom epsilon
från varandra, eller efter maxn
försök, i vilket fall funktionen returnerar null
vilket indikerar misslyckande.
Se även NewtonsMethodPoly
och SymbolicDerivative
.
Exempel för att hitta kvadratroten av 10:
genius>
NewtonsMethod(`(x)=x^2-10,`(x)=2*x,3,10^-10,100)
Se Wikipedia för mer information.
Version 1.0.18 och framåt.
PolynomialRoots (p)
Beräkna rötter för ett polynom (grad 1 till 4) med en av formlerna för sådana polynom. Polynomet ska anges som en vektor av koefficienter. Det vill säga 4*x^3 + 2*x + 1
motsvarar vektorn [1,2,0,4]
. Returnerar en kolumnvektor av lösningarna.
Funktionsanropen QuadraticFormula, CubicFormula och QuarticFormula.
QuadraticFormula (p)
Beräkna rötter för ett andragradspolynom med formel. Polynomet ska anges som en vektor av koefficienter. Det vill säga 3*x^2 + 2*x + 1
motsvarar vektorn [1,2,3]
. Returnerar en kolumnvektor av de två lösningarna.
Se Planetmath, Mathworld eller Wikipedia för mer information.
QuarticFormula (p)
Beräkna rötter för ett fjärdegradspolynom med formel. Polynomet ska anges som en vektor av koefficienter. Det vill säga 5*x^4 + 2*x + 1
motsvarar vektorn [1,2,0,0,5]
. Returnerar en kolumnvektor av de fyra lösningarna.
Se Planetmath, Mathworld eller Wikipedia för mer information.
RungeKutta (f,x0,y0,x1,n)
Använd klassisk icke-adaptiv Runge-Kuttametod av fjärde ordningen för att numeriskt lösa y'=f(x,y) för initialt x0
, y0
som går till x1
med n
inkrement, returnerar y
vid x1
.
System kan lösas genom att helt enkelt låta y
vara en (kolumn)vektor överallt. Det vill säga, y0
kan vara en vektor i vilket fall f
bör ta ett tal x
och en vektor av samma storlek som det andra argumentet och bör returnera en vektor av samma storlek.
RungeKuttaFull (f,x0,y0,x1,n)
Använd klassisk icke-adaptiv Runge-Kuttametod av fjärde ordningen för att numeriskt lösa y'=f(x,y) för initialt x0
, y0
som går till x1
med n
inkrement, returnerar en (n+1
)×2-matris med x
- och y
-värdena. Lämplig för att koppla ihop med LinePlotDrawLine eller LinePlotDrawPoints.
Exempel:
genius>
LinePlotClear();
genius>
line = RungeKuttaFull(`(x,y)=y,0,1.0,3.0,50);
genius>
LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponentiell tillväxt");
System kan lösas genom att helt enkelt låta y
vara en (kolumn)vektor överallt. Det vill säga, y0
kan vara en vektor i vilket fall f
bör ta ett tal x
och en vektor av samma storlek som det andra argumentet och bör returnera en vektor av samma storlek.
Utdata för ett system är fortfarande en n×2-matris där den andra posten är en vektor. Om du vill rita linjen, se till att använda radvektorer och platta sedan till matrisen med ExpandMatrix och välj de rätta kolumnerna. Exempel:
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","Första");
genius>
LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Andra");
Se Mathworld eller Wikipedia för mer information.
Version 1.0.10 och framåt.