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