249
247
<td valign="middle" align="left"> </td>
250
248
<td valign="middle" align="left">[<a href="#SEC20" title="Beginning of this chapter or previous chapter"> << </a>]</td>
251
249
<td valign="middle" align="left">[<a href="#SEC20" title="Up section"> Up </a>]</td>
252
<td valign="middle" align="left">[<a href="maxima_7.html#SEC30" title="Next chapter"> >> </a>]</td>
253
<td valign="middle" align="left"> </td>
254
<td valign="middle" align="left"> </td>
255
<td valign="middle" align="left"> </td>
256
<td valign="middle" align="left"> </td>
257
<td valign="middle" align="left">[<a href="maxima.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
258
<td valign="middle" align="left">[<a href="maxima_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
259
<td valign="middle" align="left">[<a href="maxima_76.html#SEC287" title="Index">Index</a>]</td>
260
<td valign="middle" align="left">[<a href="maxima_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
262
<h2 class="section"> 6.2 Asignación </h2>
264
<p>Existen dos operadores de asignación en Maxima, <code>:</code> y <code>::</code>.
265
Por ejemplo, <code>a: 3</code> asigna a la variable <code>a</code> el valor de 3. Por otro lado, <code>::</code> asigna el valor de la expresión de su derecha al valor de la cantidad de su izquierda, el cual debe evaluarse a una variable de tipo átomo o una variable subindicada.
268
<a name="Expresiones-complejas"></a>
270
<table cellpadding="1" cellspacing="1" border="0">
271
<tr><td valign="middle" align="left">[<a href="#SEC22" title="Previous section in reading order"> < </a>]</td>
272
<td valign="middle" align="left">[<a href="#SEC24" title="Next section in reading order"> > </a>]</td>
273
<td valign="middle" align="left"> </td>
274
<td valign="middle" align="left">[<a href="#SEC20" title="Beginning of this chapter or previous chapter"> << </a>]</td>
275
<td valign="middle" align="left">[<a href="#SEC20" title="Up section"> Up </a>]</td>
276
<td valign="middle" align="left">[<a href="maxima_7.html#SEC30" title="Next chapter"> >> </a>]</td>
277
<td valign="middle" align="left"> </td>
278
<td valign="middle" align="left"> </td>
279
<td valign="middle" align="left"> </td>
280
<td valign="middle" align="left"> </td>
281
<td valign="middle" align="left">[<a href="maxima.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
282
<td valign="middle" align="left">[<a href="maxima_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
283
<td valign="middle" align="left">[<a href="maxima_76.html#SEC287" title="Index">Index</a>]</td>
284
<td valign="middle" align="left">[<a href="maxima_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
286
<h2 class="section"> 6.3 Expresiones complejas </h2>
250
<td valign="middle" align="left">[<a href="maxima_7.html#SEC29" title="Next chapter"> >> </a>]</td>
251
<td valign="middle" align="left"> </td>
252
<td valign="middle" align="left"> </td>
253
<td valign="middle" align="left"> </td>
254
<td valign="middle" align="left"> </td>
255
<td valign="middle" align="left">[<a href="maxima.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
256
<td valign="middle" align="left">[<a href="maxima_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
257
<td valign="middle" align="left">[<a href="maxima_78.html#SEC302" title="Index">Index</a>]</td>
258
<td valign="middle" align="left">[<a href="maxima_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
260
<h2 class="section"> 6.2 Expresiones complejas </h2>
288
262
<p>Una expresión compleja se especifica en Maxima añadiendo a la parte
289
263
real de la expresión el producto de <code>%i</code> por la parte imaginaria. Así las raíces de la ecuación <code>x^2 - 4*x + 13 = 0</code> son <code>2 + 3*%i</code> y <code>2 - 3*%i</code>. Nótese que la simplificación de productos de expresiones complejas puede ser efectuado expandiendo el producto. La simplificación de cocientes, raíces y otras funciones que
517
510
<td valign="middle" align="left"> </td>
518
511
<td valign="middle" align="left">[<a href="#SEC20" title="Beginning of this chapter or previous chapter"> << </a>]</td>
519
512
<td valign="middle" align="left">[<a href="#SEC20" title="Up section"> Up </a>]</td>
520
<td valign="middle" align="left">[<a href="maxima_7.html#SEC30" title="Next chapter"> >> </a>]</td>
521
<td valign="middle" align="left"> </td>
522
<td valign="middle" align="left"> </td>
523
<td valign="middle" align="left"> </td>
524
<td valign="middle" align="left"> </td>
525
<td valign="middle" align="left">[<a href="maxima.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
526
<td valign="middle" align="left">[<a href="maxima_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
527
<td valign="middle" align="left">[<a href="maxima_76.html#SEC287" title="Index">Index</a>]</td>
528
<td valign="middle" align="left">[<a href="maxima_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
530
<h2 class="section"> 6.7 Desigualdades </h2>
532
<p>Maxima dispone de los operadores de desigualdad <code><</code>, <code><=</code>, <code>>=</code>, <code>></code>, <code>#</code> y <code>notequal</code>.
533
Véase <code>if</code> para una descripción de las expresiones condicionales.
536
<a name="Sintaxis"></a>
538
<table cellpadding="1" cellspacing="1" border="0">
539
<tr><td valign="middle" align="left">[<a href="#SEC27" title="Previous section in reading order"> < </a>]</td>
540
<td valign="middle" align="left">[<a href="#SEC29" title="Next section in reading order"> > </a>]</td>
541
<td valign="middle" align="left"> </td>
542
<td valign="middle" align="left">[<a href="#SEC20" title="Beginning of this chapter or previous chapter"> << </a>]</td>
543
<td valign="middle" align="left">[<a href="#SEC20" title="Up section"> Up </a>]</td>
544
<td valign="middle" align="left">[<a href="maxima_7.html#SEC30" title="Next chapter"> >> </a>]</td>
545
<td valign="middle" align="left"> </td>
546
<td valign="middle" align="left"> </td>
547
<td valign="middle" align="left"> </td>
548
<td valign="middle" align="left"> </td>
549
<td valign="middle" align="left">[<a href="maxima.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
550
<td valign="middle" align="left">[<a href="maxima_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
551
<td valign="middle" align="left">[<a href="maxima_76.html#SEC287" title="Index">Index</a>]</td>
552
<td valign="middle" align="left">[<a href="maxima_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
554
<h2 class="section"> 6.8 Sintaxis </h2>
513
<td valign="middle" align="left">[<a href="maxima_7.html#SEC29" title="Next chapter"> >> </a>]</td>
514
<td valign="middle" align="left"> </td>
515
<td valign="middle" align="left"> </td>
516
<td valign="middle" align="left"> </td>
517
<td valign="middle" align="left"> </td>
518
<td valign="middle" align="left">[<a href="maxima.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
519
<td valign="middle" align="left">[<a href="maxima_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
520
<td valign="middle" align="left">[<a href="maxima_78.html#SEC302" title="Index">Index</a>]</td>
521
<td valign="middle" align="left">[<a href="maxima_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
523
<h2 class="section"> 6.7 Sintaxis </h2>
556
525
<p>Es posible definir nuevos operadores con una precedencia especificada,
557
526
o eliminar o redefinir la precedencia de operadores ya existentes.
1846
1835
<dt><u>Función:</u> <b>ordergreat</b><i> (<var>v_1</var>, ..., <var>v_n</var>)</i>
1847
<a name="IDX176"></a>
1849
<dd><p>Establece una ordenación para las variables <var>v_1</var>, ..., <var>v_n</var>
1850
de manera que <var>v_1</var> > <var>v_2</var> > ... > <var>v_n</var> y
1851
<var>v_n</var> > cualquier otra variable no mencionada como argumento.
1853
<p>Véase también <code>orderless</code>.
1858
<dt><u>Función:</u> <b>ordergreatp</b><i> (<var>expr_1</var>, <var>expr_2</var>)</i>
1859
1836
<a name="IDX177"></a>
1861
<dd><p>Devuelve <code>true</code> si <var>expr_2</var> precede a <var>expr_1</var> según el orden establecido con la función <code>ordergreat</code>.
1866
1838
<dt><u>Función:</u> <b>orderless</b><i> (<var>v_1</var>, ..., <var>v_n</var>)</i>
1867
1839
<a name="IDX178"></a>
1869
<dd><p>Establece una ordenación para las variables <var>v_1</var>, ..., <var>v_n</var>
1870
de manera que <var>v_1</var> < <var>v_2</var> < ... < <var>v_n</var> y
1871
<var>v_n</var> < cualquier otra variable no mencionada como argumento.
1873
<p>Así, la ordenación completa de objetos es: constantes numéricas <
1874
constantes declaradas < escalares declarados < primer argumento de <code>orderless</code> <
1875
... < último argumento de <code>orderless</code> < variables que empiezan por A < ...
1876
< variables que empiezan por Z < último argumento de <code>ordergreat</code> <
1877
... < primer argumento de <code>ordergreat</code> < objetos declarados como <code>mainvar</code>.
1879
<p>Véanse también <code>ordergreat</code> y <code>mainvar</code>.
1841
<dd><p><code>ordergreat</code> cambia el orden canónico de las expresiones de
1842
Maxima, de manera que <var>v_1</var> prevalece sobre <var>v_2</var>, que
1843
prevalece sobre ..., que prevalece sobre <var>v_n</var>, que prevalece
1844
sobre cualquier otro símbolo no presente en la
1845
lista de argumentos.
1847
<p><code>orderless</code> cambia el orden canónico de las expresiones de
1848
Maxima, de manera que <var>v_1</var> precede a <var>v_2</var>, que precede a ...,
1849
que precede a <var>v_n</var>, que precede a cualquier otra variable no
1850
presente en la lista de argumentos.
1852
<p>El orden impuesto por <code>ordergreat</code> y <code>orderless</code> se
1853
destruye con <code>unorder</code>. <code>ordergreat</code> y <code>orderless</code>
1854
sólo se pueden llamar una vez, a menos que se invoque a <code>unorder</code>.
1855
La última llamada a <code>ordergreat</code> y <code>orderless</code> es la que
1858
<p>Véase también <code>ordergreatp</code>.
1864
<dt><u>Función:</u> <b>ordergreatp</b><i> (<var>expr_1</var>, <var>expr_2</var>)</i>
1865
<a name="IDX179"></a>
1884
1867
<dt><u>Función:</u> <b>orderlessp</b><i> (<var>expr_1</var>, <var>expr_2</var>)</i>
1885
<a name="IDX179"></a>
1868
<a name="IDX180"></a>
1887
<dd><p>Devuelve <code>true</code> si <var>expr_1</var> precede a <var>expr_2</var> según el orden establecido con la función <code>orderless</code>.
1870
<dd><p><code>ordergreatp</code> devuelve <code>true</code> si <var>expr_1</var> prevalece sobre
1871
<var>expr_2</var> en el orden canónico de las expresiones de Maxima, o
1872
<code>false</code> en caso contrario.
1874
<p><code>orderlessp</code> devuelve <code>true</code> si <var>expr_1</var> precede a
1875
<var>expr_2</var> en el orden canónico de las expresiones de Maxima, o
1876
<code>false</code> en caso contrario.
1878
<p>Todos los átomos y expresiones de Maxima son comparables bajo
1879
<code>ordergreatp</code> y <code>orderlessp</code>, aunque existen ejemplos aislados
1880
de expresiones para los que estos predicados no son transitivos.
1882
<p>La ordenación canónica de átomos (símbolos, números
1883
literales y cadenas) es la siguiente: (enteros y decimales en coma flotante)
1884
preceden a (números decimales grandes o <i>bigfloats</i>), que preceden a (constantes
1885
declaradas), que preceden a (cadenas), que preceden a (escalares declarados), que preceden a
1886
(primer argumento de <code>orderless</code>), que precede a ..., que precede a (último
1887
argumento de <code>orderless</code>), que precede a (otros símbolos), que
1888
preceden a (último argumento de <code>ordergreat</code>), que precede a ..., que
1889
precede a (primer argumento de <code>ordergreat</code>), que precede a (variables
1890
principales declaradas).
1892
<p>Para las expresiones no atómicas, la ordenación canónica se deriva de la
1893
ordenación de átomos. Para los operadores nativos <code>+</code>, <code>*</code> y <code>^</code>,
1894
los criterios de ordenación no son sencillos de resumir.
1895
Para otros operadores nativos, y todas las demás funciones y operadores,
1896
las expresiones se ordenan por sus argumentos (empezando por el primero),
1897
después por el nombre del operador o función. En caso de expresiones
1898
con subíndices, el símbolo subindicado se
1899
considera operador y el subíndice un argumento del mismo.
1901
<p>El orden canónico de expresiones se modifica mediante las funciones
1902
<code>ordergreat</code> y <code>orderless</code>, así como por las
1903
declaraciones <code>mainvar</code>, <code>constant</code> y <code>scalar</code>.
1905
<p>Véase también <code>sort</code>.
1909
<p>Ordenación de símbolos comunes y constantes.
1910
Nótese que <code>%pi</code> no se ordena en función de su valor
1913
<pre class="example">(%i1) stringdisp : true;
1915
(%i2) sort ([%pi, 3b0, 3.0, x, X, "foo", 3, a, 4, "bar", 4.0, 4b0]);
1916
(%o2) [3, 3.0, 4, 4.0, 3.0b0, 4.0b0, %pi, "bar", "foo", a, x, X]
1918
<p>Efecto producido por las funciones <code>ordergreat</code> y <code>orderless</code>.
1920
<pre class="example">(%i1) sort ([M, H, K, T, E, W, G, A, P, J, S]);
1921
(%o1) [A, E, G, H, J, K, M, P, S, T, W]
1922
(%i2) ordergreat (S, J);
1924
(%i3) orderless (M, H);
1926
(%i4) sort ([M, H, K, T, E, W, G, A, P, J, S]);
1927
(%o4) [M, H, A, E, G, K, P, T, W, J, S]
1929
<p>Efecto producido por las declaraciones <code>mainvar</code>, <code>constant</code> y <code>scalar</code>.
1931
<pre class="example">(%i1) sort ([aa, foo, bar, bb, baz, quux, cc, dd, A1, B1, C1]);
1932
(%o1) [aa, bar, baz, bb, cc, dd, foo, quux, A1, B1, C1]
1933
(%i2) declare (aa, mainvar);
1935
(%i3) declare ([baz, quux], constant);
1937
(%i4) declare ([A1, B1], scalar);
1939
(%i5) sort ([aa, foo, bar, bb, baz, quux, cc, dd, A1, B1, C1]);
1940
(%o5) [baz, quux, A1, B1, bar, bb, cc, dd, foo, C1, aa]
1942
<p>Ordenación de expresiones no atómicas.
1944
<pre class="example">(%i1) sort ([1, 2, n, f(1), f(2), f(2, 1), g(1), g(1, 2), g(n), f(n, 1)]);
1945
(%o1) [1, 2, f(1), g(1), g(1, 2), f(2), f(2, 1), n, g(n),
1947
(%i2) sort ([foo(1), X[1], X[k], foo(k), 1, k]);
1948
(%o2) [1, foo(1), X , k, foo(k), X ]
1892
1954
<dt><u>Función:</u> <b>part</b><i> (<var>expr</var>, <var>n_1</var>, ..., <var>n_k</var>)</i>
1893
<a name="IDX180"></a>
1955
<a name="IDX181"></a>
1895
1957
<dd><p>Devuelve partes de la forma mostrada de <code>expr</code>. Obtiene la parte de <code>expr</code> que se especifica por los índices <var>n_1</var>, ..., <var>n_k</var>. Primero se obtiene la parte <var>n_1</var> de <code>expr</code>, después la parte <var>n_2</var> del resultado anterior, y así sucesivamente. El resultado que se obtiene es la parte <var>n_k</var> de ... la parte <var>n_2</var> de la parte <var>n_1</var> de <code>expr</code>.