File: ch11s13.html

package info (click to toggle)
genius 1.0.27-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid, trixie
  • size: 25,308 kB
  • sloc: ansic: 75,620; xml: 71,565; sh: 4,445; makefile: 1,927; lex: 523; yacc: 298; perl: 54
file content (49 lines) | stat: -rw-r--r-- 21,329 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Resolución de ecuaciones</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="Manual de Genius"><link rel="up" href="ch11.html" title="Chapter 11. Lista de funciones GEL"><link rel="prev" href="ch11s12.html" title="Funciones"><link rel="next" href="ch11s14.html" title="Estadísticas"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Resolución de ecuaciones</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch11s12.html">Prev</a> </td><th width="60%" align="center">Chapter 11. Lista de funciones GEL</th><td width="20%" align="right"> <a accesskey="n" href="ch11s14.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="genius-gel-function-list-equation-solving"></a>Resolución de ecuaciones</h2></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term"><a name="gel-function-CubicFormula"></a>CubicFormula</span></dt><dd><pre class="synopsis">CubicFormula (p)</pre><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 <strong class="userinput"><code>4*x^3 + 2*x + 1</code></strong> que corresponde al vector <strong class="userinput"><code>[1,2,0,4]</code></strong>. 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.</p><p>Consulte <a class="ulink" href="http://planetmath.org/CubicFormula" target="_top">Planetmath</a>, <a class="ulink" href="http://mathworld.wolfram.com/CubicFormula.html" target="_top">Mathworld</a>, o <a class="ulink" href="https://en.wikipedia.org/wiki/Cubic_equation" target="_top">Wikipedia</a> para obtener más información.</p></dd><dt><span class="term"><a name="gel-function-EulersMethod"></a>EulersMethod</span></dt><dd><pre class="synopsis">EulersMethod (f,x0,y0,x1,n)</pre><p>Utilizar el método clásico de Euler para resolver numéricamente y'=f(x,y) de forma inicial <code class="varname">x0</code>, <code class="varname">y0</code> pasan a <code class="varname">x1</code> con <code class="varname">n</code> incrementos, devuelve <code class="varname">y</code> junto con <code class="varname">x1</code>. Excepto que especifique explícitamente que quiere utilizar el método clásico de Euler, piense en utilizar <a class="link" href="ch11s13.html#gel-function-RungeKutta">RungeKutta</a> para resolver ODE.</p><p>Los sistemas se pueden resolver teniendo a <code class="varname">y</code> como un vector (columna) en cualquier parte. Es decir, <code class="varname">y0</code> puede ser un vector en cuyo caso <code class="varname">f</code> será un número <code class="varname">x</code> y un vector del mismo tamaño para el segundo argumento y devolverá un vector del mismo tamaño.</p><p>Consulte <a class="ulink" href="http://mathworld.wolfram.com/EulerForwardMethod.html" target="_top">Mathworld</a> o <a class="ulink" href="https://en.wikipedia.org/wiki/Eulers_method" target="_top">Wikipedia</a> para obtener más información.</p></dd><dt><span class="term"><a name="gel-function-EulersMethodFull"></a>EulersMethodFull</span></dt><dd><pre class="synopsis">EulersMethodFull (f,x0,y0,x1,n)</pre><p>Utilizar el método clásico de Euler para resolver numéricamente y'=f(x,y) de forma inicial <code class="varname">x0</code>, <code class="varname">y0</code> pasan a <code class="varname">x1</code> con <code class="varname">n</code> incrementos, devuelve una matriz de 2 por <strong class="userinput"><code>n+1</code></strong> con los valores <code class="varname">x</code> e <code class="varname">y</code>.Excepto que quiera utilizar explícitamente el método clásico de Euler, utilice mejor <a class="link" href="ch11s13.html#gel-function-RungeKuttaFull">RungeKuttaFull</a> para resolver ODE. Adecuado para enlazar con <a class="link" href="ch11s20.html#gel-function-LinePlotDrawLine">LinePlotDrawLine</a> o <a class="link" href="ch11s20.html#gel-function-LinePlotDrawPoints">LinePlotDrawPoints</a>.</p><p lang="en">
	    Example:
          </p><pre lang="en" class="screen"><code class="prompt">genius&gt;</code> <strong class="userinput"><code>LinePlotClear();</code></strong>
<code class="prompt">genius&gt;</code> <strong class="userinput"><code>line = EulersMethodFull(`(x,y)=y,0,1.0,3.0,50);</code></strong>
<code class="prompt">genius&gt;</code> <strong class="userinput"><code>LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponential growth");</code></strong>
</pre><p lang="en">
	  </p><p>Los sistemas se pueden resolver teniendo a <code class="varname">y</code> como un vector (columna) en cualquier parte. Es decir, <code class="varname">y0</code> puede ser un vector en cuyo caso <code class="varname">f</code> será un número <code class="varname">x</code> y un vector del mismo tamaño para el segundo argumento y devolverá un vector del mismo tamaño.</p><p lang="en">
		  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
		  <a class="link" href="ch11s08.html#gel-function-ExpandMatrix">ExpandMatrix</a>,
		  and pick out the right columns.  Example:
          </p><pre lang="en" class="screen"><code class="prompt">genius&gt;</code> <strong class="userinput"><code>LinePlotClear();</code></strong>
<code class="prompt">genius&gt;</code> <strong class="userinput"><code>lines = EulersMethodFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,500);</code></strong>
<code class="prompt">genius&gt;</code> <strong class="userinput"><code>lines = ExpandMatrix(lines);</code></strong>
<code class="prompt">genius&gt;</code> <strong class="userinput"><code>firstline = lines@(,[1,2]);</code></strong>
<code class="prompt">genius&gt;</code> <strong class="userinput"><code>secondline = lines@(,[1,3]);</code></strong>
<code class="prompt">genius&gt;</code> <strong class="userinput"><code>LinePlotWindow = [0,10,-2,2];</code></strong>
<code class="prompt">genius&gt;</code> <strong class="userinput"><code>LinePlotDrawLine(firstline,"color","blue","legend","First");</code></strong>
<code class="prompt">genius&gt;</code> <strong class="userinput"><code>LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Second");</code></strong>
</pre><p lang="en">
	  </p><p>Consulte <a class="ulink" href="http://mathworld.wolfram.com/EulerForwardMethod.html" target="_top">Mathworld</a> o <a class="ulink" href="https://en.wikipedia.org/wiki/Eulers_method" target="_top">Wikipedia</a> para obtener más información.</p><p>Desde la versión 1.0.10 en adelante.</p></dd><dt><span class="term"><a name="gel-function-FindRootBisection"></a>FindRootBisection</span></dt><dd><pre class="synopsis">FindRootBisection (f,a,b,TOL,N)</pre><p>Buscar la raíz de una función utilizando el método de la bisección. <code class="varname">a</code> y <code class="varname">b</code> son los límites iniciales del intervalo, <strong class="userinput"><code>f(a)</code></strong> y <strong class="userinput"><code>f(b)</code></strong> deben tener signos opuestos. <code class="varname">TOL</code> es la tolerancia deseada y <code class="varname">N</code> es el límite del número de iteraciones a ejecutar, 0 indica sin límites. La función devuelve un vector <strong class="userinput"><code>[success,value,iteration]</code></strong>, donde <code class="varname">success</code> un booleano que indica el éxito, <code class="varname">value</code> es el último valor calculado, e <code class="varname">iteration</code> es el número de iteraciones realizadas.</p></dd><dt><span class="term"><a name="gel-function-FindRootFalsePosition"></a>FindRootFalsePosition</span></dt><dd><pre class="synopsis">FindRootFalsePosition (f,a,b,TOL,N)</pre><p>Buscar la raíz de una función utilizando el método de la posición falsa. <code class="varname">a</code> y <code class="varname">b</code> son los valores iniciales del intervalo, <strong class="userinput"><code>f(a)</code></strong> y <strong class="userinput"><code>f(b)</code></strong> deben tener signos opuestos. <code class="varname">TOL</code> es la tolerancia deseada y <code class="varname">N</code> es el límite del número de iteraciones a ejecutar, 0 indica sin límites. La función devuelve un vector <strong class="userinput"><code>[success,value,iteration]</code></strong>, donde <code class="varname">success</code> es un booleano que indica el éxito, <code class="varname">value</code> es el último valor calculado, e <code class="varname">iteration</code> es el número de iteraciones realizadas.</p></dd><dt><span class="term"><a name="gel-function-FindRootMullersMethod"></a>FindRootMullersMethod</span></dt><dd><pre class="synopsis">FindRootMullersMethod (f,x0,x1,x2,TOL,N)</pre><p>Buscar la raíz de una función utilizando el método de Muller. <code class="varname">TOL</code> es la tolerancia deseada y <code class="varname">N</code> es el límite del número de iteraciones a ejecutar, 0 indica sin límites. La función devuelve un vector <strong class="userinput"><code>[success,value,iteration]</code></strong>, donde <code class="varname">success</code> un booleano que indica el éxito, <code class="varname">value</code> es el último valor calculado, e <code class="varname">iteration</code> es el número de iteraciones realizadas.</p></dd><dt><span class="term"><a name="gel-function-FindRootSecant"></a>FindRootSecant</span></dt><dd><pre class="synopsis">FindRootSecant (f,a,b,TOL,N)</pre><p>Buscar la raíz de una función utilizando el método de la secante. <code class="varname">a</code> y <code class="varname">b</code> son los límites iniciales del intervalo, <strong class="userinput"><code>f(a)</code></strong> y <strong class="userinput"><code>f(b)</code></strong> deben tener signos opuestos. <code class="varname">TOL</code> es la tolerancia deseada y <code class="varname">N</code> es el límite del número de iteraciones a ejecutar, 0 indica sin límites. La función devuelve un vector <strong class="userinput"><code>[success,value,iteration]</code></strong>, donde <code class="varname">success</code> es un booleano que indica el éxito, <code class="varname">value</code> es el último valor calculado, e <code class="varname">iteration</code> es el número de iteraciones realizadas.</p></dd><dt><span class="term"><a name="gel-function-HalleysMethod"></a>HalleysMethod</span></dt><dd><pre class="synopsis">HalleysMethod (f,df,ddf,guess,epsilon,maxn)</pre><p>Encontrar ceros utilizando el método de Halleys. Siendo <code class="varname">f</code> la función, <code class="varname">df</code> es la derivada de <code class="varname">f</code>, y <code class="varname">ddf</code> es la segunda derivada de <code class="varname">f</code>. La variable <code class="varname">guess</code> es la aproximación inicial. La función devuelve después dos valores sucesivos que están dentro de los límites que marca <code class="varname">epsilon</code> o después de <code class="varname">maxn</code> iteraciones en cuyo caso devuelve <code class="constant">null</code> indicando un fallo.</p><p>Consulte también <a class="link" href="ch11s13.html#gel-function-NewtonsMethod"><code class="function">NewtonsMethod</code></a> y <a class="link" href="ch11s19.html#gel-function-SymbolicDerivative"><code class="function">SymbolicDerivative</code></a>.</p><p lang="en">
	    Example to find the square root of 10:
          </p><pre lang="en" class="screen"><code class="prompt">genius&gt;</code> <strong class="userinput"><code>HalleysMethod(`(x)=x^2-10,`(x)=2*x,`(x)=2,3,10^-10,100)</code></strong>
</pre><p lang="en">
	  </p><p>Consulte la <a class="ulink" href="https://en.wikipedia.org/wiki/Halley%27s_method" target="_top">Wikipedia</a> para más información.</p><p>Desde la versión 1.0.18 en adelante.</p></dd><dt><span class="term"><a name="gel-function-NewtonsMethod"></a>NewtonsMethod</span></dt><dd><pre class="synopsis">NewtonsMethod (f,df,guess,epsilon,maxn)</pre><p>Encontrar ceros utilizando el método de Newton. La variable <code class="varname">f</code> es la función y <code class="varname">df</code> es la derivada de <code class="varname">f</code>. La variable <code class="varname">guess</code> el supuesto inicial. La función devuelve después dos valores sucesivos que están dentro de los límites que marca <code class="varname">epsilon</code> o después de <code class="varname">maxn</code> iteraciones en cuyo caso devuelve <code class="constant">null</code> indicando un fallo.</p><p>Consulte también <a class="link" href="ch11s15.html#gel-function-NewtonsMethodPoly"><code class="function">NewtonsMethodPoly</code></a> y <a class="link" href="ch11s19.html#gel-function-SymbolicDerivative"><code class="function">SymbolicDerivative</code></a>.</p><p lang="en">
	    Example to find the square root of 10:
          </p><pre lang="en" class="screen"><code class="prompt">genius&gt;</code> <strong class="userinput"><code>NewtonsMethod(`(x)=x^2-10,`(x)=2*x,3,10^-10,100)</code></strong>
</pre><p lang="en">
	  </p><p>Consulte la <a class="ulink" href="https://en.wikipedia.org/wiki/Newtons_method" target="_top">Wikipedia</a> para obtener más información.</p><p>Desde la versión 1.0.18 en adelante.</p></dd><dt><span class="term"><a name="gel-function-PolynomialRoots"></a>PolynomialRoots</span></dt><dd><pre class="synopsis">PolynomialRoots (p)</pre><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 <strong class="userinput"><code>4*x^3 + 2*x + 1</code></strong> que corresponde al vector <strong class="userinput"><code>[1,2,0,4]</code></strong>. Devuelve un vector columna de las soluciones.</p><p>La función llama a <a class="link" href="ch11s13.html#gel-function-QuadraticFormula">QuadraticFormula</a>, <a class="link" href="ch11s13.html#gel-function-CubicFormula">CubicFormula</a>, y a <a class="link" href="ch11s13.html#gel-function-QuarticFormula">QuarticFormula</a>.</p></dd><dt><span class="term"><a name="gel-function-QuadraticFormula"></a>QuadraticFormula</span></dt><dd><pre class="synopsis">QuadraticFormula (p)</pre><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 <strong class="userinput"><code>3*x^2 + 2*x + 1</code></strong> que corresponde con el vector <strong class="userinput"><code>[1,2,3]</code></strong>. Devuelve un vector columna de las dos soluciones.</p><p>Consulte <a class="ulink" href="http://planetmath.org/QuarticFormula" target="_top">Planetmath</a>, <a class="ulink" href="http://mathworld.wolfram.com/QuarticEquation.html" target="_top">Mathworld</a>, o <a class="ulink" href="https://en.wikipedia.org/wiki/Quartic_equation" target="_top">Wikipedia</a> para obtener más información.</p></dd><dt><span class="term"><a name="gel-function-QuarticFormula"></a>QuarticFormula</span></dt><dd><pre class="synopsis">QuarticFormula (p)</pre><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 <strong class="userinput"><code>5*x^4 + 2*x + 1</code></strong> que corresponde con el vector <strong class="userinput"><code>[1,2,0,0,5]</code></strong>. Devuelve un vector columna de las cuatro soluciones.</p><p>Consulte <a class="ulink" href="http://planetmath.org/QuarticFormula" target="_top">Planetmath</a>, <a class="ulink" href="http://mathworld.wolfram.com/QuarticEquation.html" target="_top">Mathworld</a>, o <a class="ulink" href="https://en.wikipedia.org/wiki/Quartic_equation" target="_top">Wikipedia</a> para obtener más información.</p></dd><dt><span class="term"><a name="gel-function-RungeKutta"></a>RungeKutta</span></dt><dd><pre class="synopsis">RungeKutta (f,x0,y0,x1,n)</pre><p>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 <code class="varname">x0</code>, <code class="varname">y0</code> tienden a <code class="varname">x1</code> con <code class="varname">n</code> incrementos, devuelve <code class="varname">y</code> en <code class="varname">x1</code>.</p><p>Los sistemas se pueden resolver teniendo a <code class="varname">y</code> como un vector (columna) en cualquier parte. Es decir, <code class="varname">y0</code> puede ser un vector en cuyo caso <code class="varname">f</code> será un número <code class="varname">x</code> y un vector del mismo tamaño para el segundo argumento y devolverá un vector del mismo tamaño.</p><p>Consulte <a class="ulink" href="http://mathworld.wolfram.com/Runge-KuttaMethod.html" target="_top">Mathworld</a> o <a class="ulink" href="https://en.wikipedia.org/wiki/Runge-Kutta_methods" target="_top">Wikipedia</a> para obtener más información.</p></dd><dt><span class="term"><a name="gel-function-RungeKuttaFull"></a>RungeKuttaFull</span></dt><dd><pre class="synopsis">RungeKuttaFull (f,x0,y0,x1,n)</pre><p>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 <code class="varname">x0</code>, <code class="varname">y0</code> tienden a <code class="varname">x1</code> con <code class="varname">n</code> incrementos, devuelve una matriz de 2 por <strong class="userinput"><code>n+1</code></strong> con los valores <code class="varname">x</code> e <code class="varname">y</code>. Adecuado para enlazar con <a class="link" href="ch11s20.html#gel-function-LinePlotDrawLine">LinePlotDrawLine</a> o <a class="link" href="ch11s20.html#gel-function-LinePlotDrawPoints">LinePlotDrawPoints</a>.</p><p lang="en">
	    Example:
          </p><pre lang="en" class="screen"><code class="prompt">genius&gt;</code> <strong class="userinput"><code>LinePlotClear();</code></strong>
<code class="prompt">genius&gt;</code> <strong class="userinput"><code>line = RungeKuttaFull(`(x,y)=y,0,1.0,3.0,50);</code></strong>
<code class="prompt">genius&gt;</code> <strong class="userinput"><code>LinePlotDrawLine(line,"window","fit","color","blue","legend","Exponential growth");</code></strong>
</pre><p lang="en">
	  </p><p>Los sistemas se pueden resolver teniendo a <code class="varname">y</code> como un vector (columna) en cualquier parte. Es decir, <code class="varname">y0</code> puede ser un vector en cuyo caso <code class="varname">f</code> será un número <code class="varname">x</code> y un vector del mismo tamaño para el segundo argumento y devolverá un vector del mismo tamaño.</p><p lang="en">
		  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
		  <a class="link" href="ch11s08.html#gel-function-ExpandMatrix">ExpandMatrix</a>,
		  and pick out the right columns.  Example:
          </p><pre lang="en" class="screen"><code class="prompt">genius&gt;</code> <strong class="userinput"><code>LinePlotClear();</code></strong>
<code class="prompt">genius&gt;</code> <strong class="userinput"><code>lines = RungeKuttaFull(`(x,y)=[y@(2),-y@(1)],0,[1.0,1.0],10.0,100);</code></strong>
<code class="prompt">genius&gt;</code> <strong class="userinput"><code>lines = ExpandMatrix(lines);</code></strong>
<code class="prompt">genius&gt;</code> <strong class="userinput"><code>firstline = lines@(,[1,2]);</code></strong>
<code class="prompt">genius&gt;</code> <strong class="userinput"><code>secondline = lines@(,[1,3]);</code></strong>
<code class="prompt">genius&gt;</code> <strong class="userinput"><code>LinePlotWindow = [0,10,-2,2];</code></strong>
<code class="prompt">genius&gt;</code> <strong class="userinput"><code>LinePlotDrawLine(firstline,"color","blue","legend","First");</code></strong>
<code class="prompt">genius&gt;</code> <strong class="userinput"><code>LinePlotDrawPoints(secondline,"color","red","thickness",3,"legend","Second");</code></strong>
</pre><p lang="en">
	  </p><p>Consulte <a class="ulink" href="http://mathworld.wolfram.com/Runge-KuttaMethod.html" target="_top">Mathworld</a> o <a class="ulink" href="https://en.wikipedia.org/wiki/Runge-Kutta_methods" target="_top">Wikipedia</a> para obtener más información.</p><p>Desde la versión 1.0.10 en adelante.</p></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch11s12.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch11.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch11s14.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Funciones </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Estadísticas</td></tr></table></div></body></html>