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 (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.
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 (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)
See Wikipedia for more information.
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)
See Wikipedia for more information.
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.
See Planetmath, or Mathworld, or Wikipedia for more information.
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 (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.
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.