Ekvationslösning
Föregående | Kapitel 11. Lista över GEL-funktioner | Nästa

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

  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

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

  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

      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

      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.

  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.

Föregående | Upp | Nästa
Funktioner | Hem | Statistik