Resolución de ecuaciones

CubicFormula
CubicFormula (p)

Calcular las raíces de un polinomio cúbico (de grado 3) utilizando la fórmula cúbica. El polinomio se dará como un vector de coeficientes. Esto es 4*x^3 + 2*x + 1 que corresponde al vector [1,2,0,4]. Devuelve un vector columna de tres soluciones. La primera solución siempre es la real como un cúbico siempre tiene una solución real.

See Planetmath, Mathworld, or Wikipedia for more information.

EulersMethod
EulersMethod (f,x0,y0,x1,n)

Utilizar el método clásico de Euler para resolver numéricamente y'=f(x,y) de forma inicial x0, y0 pasan a x1 con n incrementos, devuelve y junto con x1. Excepto que especifique explícitamente que quiere utilizar el método clásico de Euler, piense en utilizar RungeKutta para resolver ODE.

Los sistemas se pueden resolver teniendo a y como un vector (columna) en cualquier parte. Es decir, y0 puede ser un vector en cuyo caso f será un número x y un vector del mismo tamaño para el segundo argumento y devolverá un vector del mismo tamaño.

See Mathworld or Wikipedia for more information.

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

Ejemplo:

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

Los sistemas se pueden resolver teniendo a y como un vector (columna) en cualquier parte. Es decir, y0 puede ser un vector en cuyo caso f será un número x y un vector del mismo tamaño para el segundo argumento y devolverá un vector del mismo tamaño.

La salida para un sistema es todavía una matriz de n por 2 siendo la segunda entrada un vector. Si quiere dibujar la línea, asegúrese de utilizar fila de vectores, y aplanar la matriz con ExpandMatrix, y pulse sobre las columnas de la derecha. Ejemplo:

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.

Desde la versión 1.0.10 en adelante.

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

Buscar la raíz de una función utilizando el método de la bisección. a y b son los límites iniciales del intervalo, f(a) y f(b) deben tener signos opuestos. TOL es la tolerancia deseada y N es el límite del número de iteraciones a ejecutar, 0 indica sin límites. La función devuelve un vector [success,value,iteration], donde success un booleano que indica el éxito, value es el último valor calculado, e iteration es el número de iteraciones realizadas.

FindRootFalsePosition
FindRootFalsePosition (f,a,b,TOL,N)

Buscar la raíz de una función utilizando el método de la posición falsa. a y b son los valores iniciales del intervalo, f(a) y f(b) deben tener signos opuestos. TOL es la tolerancia deseada y N es el límite del número de iteraciones a ejecutar, 0 indica sin límites. La función devuelve un vector [success,value,iteration], donde success es un booleano que indica el éxito, value es el último valor calculado, e iteration es el número de iteraciones realizadas.

FindRootMullersMethod
FindRootMullersMethod (f,x0,x1,x2,TOL,N)

Buscar la raíz de una función utilizando el método de Muller. TOL es la tolerancia deseada y N es el límite del número de iteraciones a ejecutar, 0 indica sin límites. La función devuelve un vector [success,value,iteration], donde success un booleano que indica el éxito, value es el último valor calculado, e iteration es el número de iteraciones realizadas.

FindRootSecant
FindRootSecant (f,a,b,TOL,N)

Buscar la raíz de una función utilizando el método de la secante. a y b son los límites iniciales del intervalo, f(a) y f(b) deben tener signos opuestos. TOL es la tolerancia deseada y N es el límite del número de iteraciones a ejecutar, 0 indica sin límites. La función devuelve un vector [success,value,iteration], donde success es un booleano que indica el éxito, value es el último valor calculado, e iteration es el número de iteraciones realizadas.

HalleysMethod
HalleysMethod (f,df,ddf,guess,epsilon,maxn)

Encontrar ceros utilizando el método de Halleys. Siendo f la función, df es la derivada de f, y ddf es la segunda derivada de f. La variable guess es la aproximación inicial. La función devuelve después dos valores sucesivos que están dentro de los límites que marca epsilon o después de maxn iteraciones en cuyo caso devuelve null indicando un fallo.

Consulte también NewtonsMethod y SymbolicDerivative.

Ejemplo para encontrar la raíz cuadrada de 10:

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

See Wikipedia for more information.

Desde la versión 1.0.18 en adelante.

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

Encontrar ceros utilizando el método de Newton. La variable f es la función y df es la derivada de f. La variable guess el supuesto inicial. La función devuelve después dos valores sucesivos que están dentro de los límites que marca epsilon o después de maxn iteraciones en cuyo caso devuelve null indicando un fallo.

Consulte también NewtonsMethodPoly y SymbolicDerivative.

Ejemplo para encontrar la raíz cuadrade de 10:

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

See Wikipedia for more information.

Desde la versión 1.0.18 en adelante.

PolynomialRoots
PolynomialRoots (p)

Calcular las raíces de un polinomio (de grado 1 a 4) utilizando una de las fórmulas para cada polinomio. El polinomio entregará un vector de coeficientes. Esto es 4*x^3 + 2*x + 1 que corresponde al vector [1,2,0,4]. Devuelve un vector columna de las soluciones.

La función llama a QuadraticFormula, CubicFormula, y a QuarticFormula.

QuadraticFormula
QuadraticFormula (p)

Calcular las raíces de una polinomio cuadrático (de grado 2) utilizando la fórmula cuadrática. El polinomio será un vector de coeficientes. Es es 3*x^2 + 2*x + 1 que corresponde con el vector [1,2,3]. Devuelve un vector columna de las dos soluciones.

See Planetmath, or Mathworld, or Wikipedia for more information.

QuarticFormula
QuarticFormula (p)

Calcular las raíces de un polinomio cuadrático (de grado 4) utilizando la fórmula cuadrática. El polinomio será un vector de coeficientes. Esto es 5*x^4 + 2*x + 1 que corresponde con el vector [1,2,0,0,5]. Devuelve un vector columna de las cuatro soluciones.

See Planetmath, Mathworld, or Wikipedia for more information.

RungeKutta
RungeKutta (f,x0,y0,x1,n)

Utilizar el método clásico no adaptativo de cuarto orden Runge-Kutta para resolver numéricamente y'=f(x,y) que de forma inicial x0, y0 tienden a x1 con n incrementos, devuelve y en x1.

Los sistemas se pueden resolver teniendo a y como un vector (columna) en cualquier parte. Es decir, y0 puede ser un vector en cuyo caso f será un número x y un vector del mismo tamaño para el segundo argumento y devolverá un vector del mismo tamaño.

See Mathworld or Wikipedia for more information.

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 an n+1 by 2 matrix with the 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");

Los sistemas se pueden resolver teniendo a y como un vector (columna) en cualquier parte. Es decir, y0 puede ser un vector en cuyo caso f será un número x y un vector del mismo tamaño para el segundo argumento y devolverá un vector del mismo tamaño.

La salida de un sistema todavía es una matriz de n por 2 siendo la segunda entrada un vector. Si quiere dibujar la línea, asegúrese de utilizar filas de vectores, y aplane la matriz con ExpandMatrix, y pulse a la derecha de las columnas. Ejemplo:

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.

Desde la versión 1.0.10 en adelante.