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.

Consulte Planetmath, Mathworld, o Wikipedia para obtener más información.

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.

Consulte Mathworld o Wikipedia para obtener más información.

EulersMethodFull
EulersMethodFull (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 una matriz de 2 por n+1 con los valores x e y.Excepto que quiera utilizar explícitamente el método clásico de Euler, utilice mejor RungeKuttaFull para resolver ODE. Adecuado para enlazar con LinePlotDrawLine o 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");

Consulte Mathworld o Wikipedia para obtener más información.

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)

Consulte la Wikipedia para más información.

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)

Consulte la Wikipedia para obtener más información.

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.

Consulte Planetmath, Mathworld, o Wikipedia para obtener más información.

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.

Consulte Planetmath, Mathworld, o Wikipedia para obtener más información.

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.

Consulte Mathworld o Wikipedia para obtener más información.

RungeKuttaFull
RungeKuttaFull (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 una matriz de 2 por n+1 con los valores x e y. Adecuado para enlazar con LinePlotDrawLine o 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");

Consulte Mathworld o Wikipedia para obtener más información.

Desde la versión 1.0.10 en adelante.