Ekvationslösning

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

Se Mathworld eller Wikipedia för mer information.

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

Example:

genius> LinePlotClear();
genius> line = EulersMethodFull(`(x,y)=y,0,1.0,3.0,50);
genius> LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponential growth");

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.

The output for a system is still a n by 2 matrix with the second entry being a vector. If you wish to plot the line, make sure to use row vectors, and then flatten the matrix with ExpandMatrix, and pick out the right columns. Example:

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","First");
genius> LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Second");

Se Mathworld eller Wikipedia för mer information.

Version 1.0.10 och framåt.

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

Example to find the square root of 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
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.

Example to find the square root of 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
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
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
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
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.

Se Mathworld eller Wikipedia för mer information.

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

Example:

genius> LinePlotClear();
genius> line = RungeKuttaFull(`(x,y)=y,0,1.0,3.0,50);
genius> LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponential growth");

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.

The output for a system is still a n by 2 matrix with the second entry being a vector. If you wish to plot the line, make sure to use row vectors, and then flatten the matrix with ExpandMatrix, and pick out the right columns. Example:

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","First");
genius> LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Second");

Se Mathworld eller Wikipedia för mer information.

Version 1.0.10 och framåt.