- CubicFormula
CubicFormula (p)

Compute roots of a cubic (degree 3) polynomial using the cubic formula. The polynomial should be given as a vector of coefficients. That is

corresponds to the vector`4*x^3 + 2*x + 1`

. Returns a column vector of the three solutions. The first solution is always the real one as a cubic always has one real solution.`[1,2,0,4]`

See Planetmath, Mathworld, or Wikipedia for more information.

- EulersMethod
EulersMethod (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`y`

at`x1`

. Unless you explicitly want to use Euler's method, you should really think about using RungeKutta for solving ODE.Systems can be solved by just having

`y`

be a (column) vector everywhere. That is,`y0`

can be a vector in which case`f`

should take a number`x`

and a vector of the same size for the second argument and should return a vector of the same size.- EulersMethodFull
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 a 2 bymatrix with the`n+1`

`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.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");`

Systems can be solved by just having

`y`

be a (column) vector everywhere. That is,`y0`

can be a vector in which case`f`

should take a number`x`

and a vector of the same size for the second argument and should return a vector of the same size.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");`

See Mathworld or Wikipedia for more information.

Version 1.0.10 onwards.

- FindRootBisection
FindRootBisection (f,a,b,TOL,N)

Find root of a function using the bisection method.

`a`

and`b`

are the initial guess interval,and`f(a)`

should have opposite signs.`f(b)`

`TOL`

is the desired tolerance and`N`

is the limit on the number of iterations to run, 0 means no limit. The function returns a vector, where`[success,value,iteration]`

`success`

is a boolean indicating success,`value`

is the last value computed, and`iteration`

is the number of iterations done.- FindRootFalsePosition
FindRootFalsePosition (f,a,b,TOL,N)

Find root of a function using the method of false position.

`a`

and`b`

are the initial guess interval,and`f(a)`

should have opposite signs.`f(b)`

`TOL`

is the desired tolerance and`N`

is the limit on the number of iterations to run, 0 means no limit. The function returns a vector, where`[success,value,iteration]`

`success`

is a boolean indicating success,`value`

is the last value computed, and`iteration`

is the number of iterations done.- FindRootMullersMethod
FindRootMullersMethod (f,x0,x1,x2,TOL,N)

Find root of a function using the Muller's method.

`TOL`

is the desired tolerance and`N`

is the limit on the number of iterations to run, 0 means no limit. The function returns a vector, where`[success,value,iteration]`

`success`

is a boolean indicating success,`value`

is the last value computed, and`iteration`

is the number of iterations done.- FindRootSecant
FindRootSecant (f,a,b,TOL,N)

Find root of a function using the secant method.

`a`

and`b`

are the initial guess interval,and`f(a)`

should have opposite signs.`f(b)`

`TOL`

is the desired tolerance and`N`

is the limit on the number of iterations to run, 0 means no limit. The function returns a vector, where`[success,value,iteration]`

`success`

is a boolean indicating success,`value`

is the last value computed, and`iteration`

is the number of iterations done.- HalleysMethod
HalleysMethod (f,df,ddf,guess,epsilon,maxn)

Find zeros using Halley's method.

`f`

is the function,`df`

is the derivative of`f`

, and`ddf`

is the second derivative of`f`

.`guess`

is the initial guess. The function returns after two successive values are within`epsilon`

of each other, or after`maxn`

tries, in which case the function returns`null`

indicating failure.See also

`NewtonsMethod`

and`SymbolicDerivative`

.Example to find the square root of 10:

`genius>`

`HalleysMethod(`(x)=x^2-10,`(x)=2*x,`(x)=2,3,10^-10,100)`

See Wikipedia for more information.

Version 1.0.18 onwards.

- NewtonsMethod
NewtonsMethod (f,df,guess,epsilon,maxn)

Find zeros using Newton's method.

`f`

is the function and`df`

is the derivative of`f`

.`guess`

is the initial guess. The function returns after two successive values are within`epsilon`

of each other, or after`maxn`

tries, in which case the function returns`null`

indicating failure.See also

`NewtonsMethodPoly`

and`SymbolicDerivative`

.Example to find the square root of 10:

`genius>`

`NewtonsMethod(`(x)=x^2-10,`(x)=2*x,3,10^-10,100)`

See Wikipedia for more information.

Version 1.0.18 onwards.

- PolynomialRoots
PolynomialRoots (p)

Compute roots of a polynomial (degrees 1 through 4) using one of the formulas for such polynomials. The polynomial should be given as a vector of coefficients. That is

corresponds to the vector`4*x^3 + 2*x + 1`

. Returns a column vector of the solutions.`[1,2,0,4]`

The function calls QuadraticFormula, CubicFormula, and QuarticFormula.

- QuadraticFormula
QuadraticFormula (p)

Compute roots of a quadratic (degree 2) polynomial using the quadratic formula. The polynomial should be given as a vector of coefficients. That is

corresponds to the vector`3*x^2 + 2*x + 1`

. Returns a column vector of the two solutions.`[1,2,3]`

See Planetmath or Mathworld for more information.

- QuarticFormula
QuarticFormula (p)

Compute roots of a quartic (degree 4) polynomial using the quartic formula. The polynomial should be given as a vector of coefficients. That is

corresponds to the vector`5*x^4 + 2*x + 1`

. Returns a column vector of the four solutions.`[1,2,0,0,5]`

See Planetmath, Mathworld, or Wikipedia for more information.

- RungeKutta
RungeKutta (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`y`

at`x1`

.Systems can be solved by just having

`y`

be a (column) vector everywhere. That is,`y0`

can be a vector in which case`f`

should take a number`x`

and a vector of the same size for the second argument and should return a vector of the same size.- RungeKuttaFull
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 a 2 bymatrix with the`n+1`

`x`

and`y`

values. Suitable for plugging into LinePlotDrawLine or 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");`

`y`

be a (column) vector everywhere. That is,`y0`

can be a vector in which case`f`

should take a number`x`

and a vector of the same size for the second argument and should return a vector of the same size.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");`

See Mathworld or Wikipedia for more information.

Version 1.0.10 onwards.