Update docs to match implementation of $build_and_dump_html_index
[maxima.git] / doc / info / es / ezunits.texi
blob174d192cbaf1123e34c7296613d000f000a20b00
1 @c English version: 2011-06-11
2 @menu
3 * Introducción a ezunits::
4 * Introducción a physical_constants::
5 * Funciones y variables para ezunits::
6 @end menu
8 @node Introducción a ezunits, Introducción a physical_constants, ezunits, ezunits
9 @section Introducción a ezunits
11 @code{ezunits} es un paquete para trabajar con magnitudes dimensionales, incluyendo
12 algunas funciones para realizar análisis dimensional.
13 @code{ezunits} puede hacer operaciones aritméticas con magnitudes dimensionales y
14 efectuar conversiones entre unidades.
15 Las unidades que se definen son las del Sistema Internacional (SI) y otras comunes en
16 los Estados Unidos, siendo posible declarar otras nuevas.
18 Véase también @code{physical_constants}, una colección de constantes físicas.
20 Es necesario ejecutar primero @code{load("ezunits")} para utilizar este paquete. 
21 Con @code{demo(ezunits)} se podrán ver algunos ejemplos de utilización.
22 La función @code{known_units} devuelve una lista con todas las unidades
23 que están definidas y @code{display_known_unit_conversions} muestra
24 las conversiones conocidas por el sistema en un formato de lectura sencilla.
26 Una expresión tal como @math{a ` b} representa una magnitud dimensional, siendo
27 @code{a} una magnitud adimensional y @code{b} las unidades.
28 Se puede utilizar un símbolo como unidad, sin necesidad
29 de declararlo como tal ni de que deba cumplir propiedades especiales.
30 Tanto la magnitud como la unidad de una expresión de la forma @math{a ` b}
31 pueden extraerse invocando las funciones @code{qty} y @code{units},
32 respectivamente.
34 Una expresión tal como @code{a ` b `` c} convierte las unidades @code{b}
35 en @code{c}. El paquete @code{ezunits} contiene funciones conversoras para
36 unidades fundamentales del SI, unidades derivadas, así como
37 algunas otras unidades ajenas al SI.
38 Las conversiones entre unidades que no estén programadas en @code{ezunits}
39 podrán declararse a posteriori.
40 Las conversiones conocidas por @code{ezunits} están especificadas en la
41 variable global @code{known_unit_conversions}, incluyendo tanto las ya
42 declaradas por defecto como aquéllas introducidas por el usuario.
43 Las conversiones para los productos, cocientes y potencias de unidades
44 se derivan del conjunto de conversiones ya conocidas.
46 En general, Maxima prefiere números exactos (enteros o racionales)
47 a inexactos (decimales en coma flotante), por lo que @code{ezunits}
48 respetará los exactos cuando aparezcan en expresiones de magnitudes
49 dimensionales. Todas las conversiones del paquete se han definido en
50 términos de números exactos.
52 No hay un sistema de representación de unidades que se considere preferible,
53 razón por la cual las unidades no se convierten a otras a menos que se
54 indique de forma explícita. @code{ezunits} reconoce los prefijos
55 m-, k-, M y G- para mili-, kilo-, mega- y giga-, respectivamente, tal como se
56 utilizan en el SI; estos prefijos sólo se utilizan cuando así
57 se indica de forma explícita.
59 Las operaciones aritméticas con magnitudes dimensionales se realizan
60 de la forma convencional.
62 @itemize
63 @item @code{(x ` a) * (y ` b)} es igual a @math{(x * y) ` (a * b)}.
64 @item @code{(x ` a) + (y ` a)} es igual a @math{(x + y) ` a}.
65 @item @code{(x ` a)^y} es igual a @math{x^y ` a^y} si @code{y} es adimensional.
66 @end itemize
68 @code{ezunits} no necesita que las unidades en una suma tengan las mismas 
69 dimensiones; estos términos serán sumados sin emitirse mensaje de error.
71 @code{ezunits} incluye funciones para el análisis dimensional elemental,
72 como las dimensiones fundamentales, las unidades fundamentales de una
73 magnitud dimensional o el cálculo de magnitudes adimensionales y
74 unidades naturales. Las funciones de análisis dimensional son
75 adaptaciones de funciones semejantes escritas por Barton Willis en
76 otro paquete.
78 Con el fin de poder llevar a cabo análisis dimensionales, se 
79 mantiene una lista de dimensiones fundamentales y otra lista asociada
80 de unidades fundamentales; por defecto, las dimensiones fundamentales son
81 longitud, masa, tiempo, carga, temperatura y cantidad de materia, siendo
82 las unidades fundamentales las propias del Sistema Internacional.
83 En cualquier caso, es posible declarar otras dimensiones y unidades
84 fundamentales.
88 @node Introducción a physical_constants, Funciones y variables para ezunits, Introducción a ezunits, ezunits
89 @section Introducción a physical_constants
91 @code{physical_constants} contiene constantes físicas
92 recomendadas por el CODATA 2006 (@url{http://physics.nist.gov/constants}).
93 La instrucción @code{load("physical_constants")} carga este paquete
94 en memoria junto con el propio @code{ezunits}, si éste no estaba
95 previamente cargado.
97 Una constante física se representa por un símbolo
98 con la propiedad de ser un valor constante. El valor constante es una magnitud
99 dimensional en la sintaxis de @code{ezunits}. La función @code{constvalue}
100 extrae el valor constante, el cual no es el valor ordinario del símbolo,
101 por lo que las constantes físicas se mantienen inalteradas en las
102 expresiones evaluadas hasta que sus valores sea extraído con
103 la función @code{constvalue}.
105 @code{physical_constants} incluye cierta información adicional,
106 como la descripción de cada constante, una estimación del error 
107 de su valor numérico y una propiedad para ser representada en TeX.
108 Para identificar constantes físicas, cada símbolo
109 tiene la propiedad @code{physical_constant}, de forma que 
110 @code{propvars(physical_constant)} muestra la lista de todas
111 las constantes físicas.
113 @code{physical_constants} contiene las siguientes constantes:
115 @table @code
116 @item %c
117 velocidad de la luz en el vacío
118 @item %mu_0
119 constante magnética
120 @item %e_0
121 constante eléctrica
122 @item %Z_0
123 impedancia característica del vacío
124 @item %G
125 constante gravitatoria de Newton
126 @item %h
127 constante de Planck
128 @item %h_bar
129 constante de Planck
130 @item %m_P
131 masa de Planck
132 @item %T_P
133 temperature de Planck
134 @item %l_P
135 longitud de Planck
136 @item %t_P
137 tiempo de Planck
138 @item %%e
139 carga elemental
140 @item %Phi_0
141 flujo magnético cuántico
142 @item %G_0
143 conductancia cuántica
144 @item %K_J
145 constante de Josephson
146 @item %R_K
147 constante de von Klitzing
148 @item %mu_B
149 magnetón de Bohr
150 @item %mu_N
151 magnetón nuclear
152 @item %alpha
153 constante de estructura fina
154 @item %R_inf
155 constante de Rydberg
156 @item %a_0
157 radio de Bohr
158 @item %E_h
159 energía de Hartree
160 @item %ratio_h_me
161 cuanto de circulación
162 @item %m_e
163 masa del electrón
164 @item %N_A
165 número de Avogadro
166 @item %m_u
167 constante de masa atómica
168 atomic mass constant
169 @item %F
170 constante de Faraday
171 @item %R
172 constante molar de los gases
173 @item %%k
174 constante de Boltzmann
175 @item %V_m
176 volumen molar del gas ideal
177 @item %n_0
178 constante de Loschmidt
179 @item %ratio_S0_R
180 constante de Sackur-Tetrode (constante de entropía absoluta)
181 @item %sigma
182 constante de Stefan-Boltzmann
183 @item %c_1
184 primera constante de radiación
185 @item %c_1L
186 primera constante de radiación para radiancia espectral
187 @item %c_2
188 segunda constante de radiación
189 @item %b
190 Constante de la ley del desplazamiento de Wien
191 @item %b_prime
192 Constante de la ley del desplazamiento de Wien
193 @end table
195 Ejemplos:
197 Lista de todos los símbolos que tienen la propiedad
198 @code{physical_constant}.
200 @c ===beg===
201 @c load ("physical_constants")$
202 @c propvars (physical_constant);
203 @c ===end===
204 @example
205 (%i1) load ("physical_constants")$
206 (%i2) propvars (physical_constant);
207 (%o2) [%c, %mu_0, %e_0, %Z_0, %G, %h, %h_bar, %m_P, %T_P, %l_P, 
208 %t_P, %%e, %Phi_0, %G_0, %K_J, %R_K, %mu_B, %mu_N, %alpha, 
209 %R_inf, %a_0, %E_h, %ratio_h_me, %m_e, %N_A, %m_u, %F, %R, %%k, 
210 %V_m, %n_0, %ratio_S0_R, %sigma, %c_1, %c_1L, %c_2, %b, %b_prime]
211 @end example
214 Propiedades de la constante física @code{%c}.
216 @c ===beg===
217 @c load ("physical_constants")$
218 @c constantp (%c);
219 @c get (%c, description);
220 @c constvalue (%c);
221 @c get (%c, RSU);
222 @c tex (%c);
223 @c ===end===
224 @example
225 (%i1) load ("physical_constants")$
226 (%i2) constantp (%c);
227 (%o2)                         true
228 (%i3) get (%c, description);
229 (%o3)               speed of light in vacuum
230 (%i4) constvalue (%c);
231                                       m
232 (%o4)                     299792458 ` -
233                                       s
234 (%i5) get (%c, RSU);
235 (%o5)                           0
236 (%i6) tex (%c);
237 $$c$$
238 (%o6)                         false
239 @end example
242 Energía equivalente de una libra-masa. El símbolo
243 @code{%c} se mantiene hasta que su valor es extraído
244 con la llamada a la función @code{constvalue}.
246 @c ===beg===
247 @c load ("physical_constants")$
248 @c m * %c^2;
249 @c %, m = 1 ` lbm;
250 @c constvalue (%);
251 @c E : % `` J;
252 @c E `` GJ;
253 @c float (%);
254 @c ===end===
255 @example
256 (%i1) load ("physical_constants")$
257 (%i2) m * %c^2;
258                                 2
259 (%o2)                         %c  m
260 (%i3) %, m = 1 ` lbm;
261                               2
262 (%o3)                       %c  ` lbm
263 (%i4) constvalue (%);
264                                             2
265                                        lbm m
266 (%o4)              89875517873681764 ` ------
267                                           2
268                                          s
269 (%i5) E : % `` J;
270 Computing conversions to base units; may take a moment. 
271                      366838848464007200
272 (%o5)                ------------------ ` J
273                              9
274 (%i6) E `` GJ;
275                       458548560580009
276 (%o6)                 --------------- ` GJ
277                          11250000
278 (%i7) float (%);
279 (%o7)              4.0759872051556356e+7 ` GJ
280 @end example
284 @node Funciones y variables para ezunits, , Introducción a physical_constants, ezunits
285 @section Funciones y variables para ezunits
287 @deffn {Operador} `
289 Operador de magnitud dimensional. 
290 Una expresión tal como @math{a ` b} representa una magnitud dimensional, siendo
291 @code{a} una magnitud adimensional y @code{b} las unidades.
292 Se puede utilizar un símbolo como unidad, sin necesidad
293 de declararlo como tal ni de que deba cumplir propiedades especiales.
294 Tanto la magnitud como la unidad de una expresión de la forma @math{a ` b}
295 pueden extraerse invocando las funciones @code{qty} y @code{units},
296 respectivamente.
298 Las operaciones aritméticas con magnitudes dimensionales se realizan
299 de la forma convencional.
301 @itemize
302 @item @code{(x ` a) * (y ` b)} es igual a @math{(x * y) ` (a * b)}.
303 @item @code{(x ` a) + (y ` a)} es igual a @math{(x + y) ` a}.
304 @item @code{(x ` a)^y} es igual a @math{x^y ` a^y} si @code{y} es adimensional.
305 @end itemize
307 @code{ezunits} no necesita que las unidades en una suma tengan las mismas 
308 dimensiones; estos términos serán sumados sin emitirse mensaje de error.
310 Para utilizar este operador ejecútese primero @code{load("ezunits")}.
312 Ejemplos:
314 Unidades del Sistema Internacional.
316 @c ===beg===
317 @c load ("ezunits")$
318 @c foo : 10 ` m;
319 @c qty (foo);
320 @c units (foo);
321 @c dimensions (foo);
322 @c ===end===
323 @example
324 (%i1) load ("ezunits")$
325 (%i2) foo : 10 ` m;
326 (%o2)                        10 ` m
327 (%i3) qty (foo);
328 (%o3)                          10
329 (%i4) units (foo);
330 (%o4)                           m
331 (%i5) dimensions (foo);
332 (%o5)                        length
333 @end example
336 Unidades definidas por el usuario.
338 @c ===beg===
339 @c load ("ezunits")$
340 @c bar : x ` acre;
341 @c dimensions (bar);
342 @c fundamental_units (bar);
343 @c ===end===
344 @example
345 (%i1) load ("ezunits")$
346 (%i2) bar : x ` acre;
347 (%o2)                       x ` acre
348 (%i3) dimensions (bar);
349                                    2
350 (%o3)                        length
351 (%i4) fundamental_units (bar);
352                                 2
353 (%o4)                          m
354 @end example
356 Unidades ad hoc.
358 @c ===beg===
359 @c load ("ezunits")$
360 @c baz : 3 ` sheep + 8 ` goat + 1 ` horse;
361 @c subst ([sheep = 3*goat, horse = 10*goat], baz);
362 @c baz2 : 1000`gallon/fortnight;
363 @c subst (fortnight = 14*day, baz2);
364 @c ===end===
365 @example
366 (%i1) load ("ezunits")$
367 (%i2) baz : 3 ` sheep + 8 ` goat + 1 ` horse;
368 (%o2)           8 ` goat + 3 ` sheep + 1 ` horse
369 (%i3) subst ([sheep = 3*goat, horse = 10*goat], baz);
370 (%o3)                       27 ` goat
371 (%i4) baz2 : 1000`gallon/fortnight;
372                                 gallon
373 (%o4)                   1000 ` ---------
374                                fortnight
375 (%i5) subst (fortnight = 14*day, baz2);
376                           500   gallon
377 (%o5)                     --- ` ------
378                            7     day
379 @end example
382 Operaciones aritméticas y magnitudes dimensionales.
384 @c ===beg===
385 @c load ("ezunits")$
386 @c 100 ` kg + 200 ` kg;
387 @c 100 ` m^3 - 100 ` m^3;
388 @c (10 ` kg) * (17 ` m/s^2);
389 @c (x ` m) / (y ` s);
390 @c (a ` m)^2;
391 @c ===end===
392 @example
393 (%i1) load ("ezunits")$
394 (%i2) 100 ` kg + 200 ` kg;
395 (%o2)                       300 ` kg
396 (%i3) 100 ` m^3 - 100 ` m^3;
397                                   3
398 (%o3)                        0 ` m
399 (%i4) (10 ` kg) * (17 ` m/s^2);
400                                  kg m
401 (%o4)                      170 ` ----
402                                    2
403                                   s
404 (%i5) (x ` m) / (y ` s);
405                               x   m
406 (%o5)                         - ` -
407                               y   s
408 (%i6) (a ` m)^2;
409                               2    2
410 (%o6)                        a  ` m
411 @end example
414 @end deffn
416 @deffn {Operador} `@w{}`
418 Operador de conversión de unidades.
419 Una expresión tal como @math{a ` b `@w{}` c} convierte las unidades @code{b}
420 en @code{c}. El paquete @code{ezunits} contiene funciones conversoras para
421 unidades fundamentales del SI, unidades derivadas, así como
422 algunas otras unidades ajenas al SI.
423 Las conversiones entre unidades que no estén programadas en @code{ezunits}
424 podrán declararse a posteriori.
425 Las conversiones conocidas por @code{ezunits} están especificadas en la
426 variable global @code{known_unit_conversions}, incluyendo tanto las ya
427 declaradas por defecto como aquéllas introducidas por el usuario.
428 Las conversiones para los productos, cocientes y potencias de unidades
429 se derivan del conjunto de conversiones ya conocidas.
431 No hay un sistema de representación de unidades que se considere preferible,
432 razón por la cual las unidades no se convierten a otras a menos que se
433 indique de forma explícita. Del mismo modo, @code{ezunits}
434 no transforma prefijos (milli-, centi-, deci-, etc) a menos que se le
435 indique.
437 Para utilizar este operador ejecútese primero @code{load("ezunits")}.
439 Ejemplos:
441 Conjunto de conversiones conocidas.
443 @c ===beg===
444 @c load ("ezunits")$
445 @c display2d : false$
446 @c known_unit_conversions;
447 @c ===end===
448 @example
449 (%i1) load ("ezunits")$
450 (%i2) display2d : false$
451 (%i3) known_unit_conversions;
452 (%o3) @{acre = 4840*yard^2,Btu = 1055*J,cfm = feet^3/minute,
453        cm = m/100,day = 86400*s,feet = 381*m/1250,ft = feet,
454        g = kg/1000,gallon = 757*l/200,GHz = 1000000000*Hz,
455        GOhm = 1000000000*Ohm,GPa = 1000000000*Pa,
456        GWb = 1000000000*Wb,Gg = 1000000*kg,Gm = 1000000000*m,
457        Gmol = 1000000*mol,Gs = 1000000000*s,ha = hectare,
458        hectare = 100*m^2,hour = 3600*s,Hz = 1/s,inch = feet/12,
459        km = 1000*m,kmol = 1000*mol,ks = 1000*s,l = liter,
460        lbf = pound_force,lbm = pound_mass,liter = m^3/1000,
461        metric_ton = Mg,mg = kg/1000000,MHz = 1000000*Hz,
462        microgram = kg/1000000000,micrometer = m/1000000,
463        micron = micrometer,microsecond = s/1000000,
464        mile = 5280*feet,minute = 60*s,mm = m/1000,
465        mmol = mol/1000,month = 2629800*s,MOhm = 1000000*Ohm,
466        MPa = 1000000*Pa,ms = s/1000,MWb = 1000000*Wb,
467        Mg = 1000*kg,Mm = 1000000*m,Mmol = 1000000000*mol,
468        Ms = 1000000*s,ns = s/1000000000,ounce = pound_mass/16,
469        oz = ounce,Ohm = s*J/C^2,
470        pound_force = 32*ft*pound_mass/s^2,
471        pound_mass = 200*kg/441,psi = pound_force/inch^2,
472        Pa = N/m^2,week = 604800*s,Wb = J/A,yard = 3*feet,
473        year = 31557600*s,C = s*A,F = C^2/J,GA = 1000000000*A,
474        GC = 1000000000*C,GF = 1000000000*F,GH = 1000000000*H,
475        GJ = 1000000000*J,GK = 1000000000*K,GN = 1000000000*N,
476        GS = 1000000000*S,GT = 1000000000*T,GV = 1000000000*V,
477        GW = 1000000000*W,H = J/A^2,J = m*N,kA = 1000*A,
478        kC = 1000*C,kF = 1000*F,kH = 1000*H,kHz = 1000*Hz,
479        kJ = 1000*J,kK = 1000*K,kN = 1000*N,kOhm = 1000*Ohm,
480        kPa = 1000*Pa,kS = 1000*S,kT = 1000*T,kV = 1000*V,
481        kW = 1000*W,kWb = 1000*Wb,mA = A/1000,mC = C/1000,
482        mF = F/1000,mH = H/1000,mHz = Hz/1000,mJ = J/1000,
483        mK = K/1000,mN = N/1000,mOhm = Ohm/1000,mPa = Pa/1000,
484        mS = S/1000,mT = T/1000,mV = V/1000,mW = W/1000,
485        mWb = Wb/1000,MA = 1000000*A,MC = 1000000*C,
486        MF = 1000000*F,MH = 1000000*H,MJ = 1000000*J,
487        MK = 1000000*K,MN = 1000000*N,MS = 1000000*S,
488        MT = 1000000*T,MV = 1000000*V,MW = 1000000*W,
489        N = kg*m/s^2,R = 5*K/9,S = 1/Ohm,T = J/(m^2*A),V = J/C,
490        W = J/s@}
491 @end example
494 Converiones de unidades fundamentales.
496 @c ===beg===
497 @c load ("ezunits")$
498 @c 1 ` ft `` m;
499 @c %, numer; 
500 @c 1 ` kg `` lbm; 
501 @c %, numer;
502 @c 1 ` W `` Btu/hour;
503 @c %, numer;
504 @c 100 ` degC `` degF;
505 @c -40 ` degF `` degC;
506 @c 1 ` acre*ft `` m^3;
507 @c %, numer;
508 @c ===end===
509 @example
510 (%i1) load ("ezunits")$
511 (%i2) 1 ` ft `` m;
512 Computing conversions to base units; may take a moment. 
513                             381
514 (%o2)                       ---- ` m
515                             1250
516 (%i3) %, numer;
517 (%o3)                      0.3048 ` m
518 (%i4) 1 ` kg `` lbm;
519                             441
520 (%o4)                       --- ` lbm
521                             200
522 (%i5) %, numer;
523 (%o5)                      2.205 ` lbm
524 (%i6) 1 ` W `` Btu/hour;
525                            720   Btu
526 (%o6)                      --- ` ----
527                            211   hour
528 (%i7) %, numer;
529                                         Btu
530 (%o7)               3.412322274881517 ` ----
531                                         hour
532 (%i8) 100 ` degC `` degF;
533 (%o8)                      212 ` degF
534 (%i9) -40 ` degF `` degC;
535 (%o9)                     (- 40) ` degC
536 (%i10) 1 ` acre*ft `` m^3;
537                         60228605349    3
538 (%o10)                  ----------- ` m
539                          48828125
540 (%i11) %, numer;
541                                           3
542 (%o11)                1233.48183754752 ` m
543 @end example
545 Transformando pies a metros y viceversa.
547 @c ===beg===
548 @c load ("ezunits")$
549 @c 100 ` m + 100 ` ft;
550 @c (100 ` m + 100 ` ft) `` ft;
551 @c %, numer;
552 @c (100 ` m + 100 ` ft) `` m;
553 @c %, numer;
554 @c ===end===
555 @example
556 (%i1) load ("ezunits")$
557 (%i2) 100 ` m + 100 ` ft;
558 (%o2)                  100 ` m + 100 ` ft
559 (%i3) (100 ` m + 100 ` ft) `` ft;
560                            163100
561 (%o3)                      ------ ` ft
562                             381
563 (%i4) %, numer;
564 (%o4)                428.0839895013123 ` ft
565 (%i5) (100 ` m + 100 ` ft) `` m;
566                             3262
567 (%o5)                       ---- ` m
568                              25
569 (%i6) %, numer;
570 (%o6)                      130.48 ` m
571 @end example
573 Análisis dimensional para encontrar dimensiones y unidades fundamentales.
575 @c ===beg===
576 @c load ("ezunits")$
577 @c foo : 1 ` acre * ft;
578 @c dimensions (foo);
579 @c fundamental_units (foo);
580 @c foo `` m^3;
581 @c %, numer;
582 @c ===end===
583 @example
584 (%i1) load ("ezunits")$
585 (%i2) foo : 1 ` acre * ft;
586 (%o2)                      1 ` acre ft
587 (%i3) dimensions (foo);
588                                    3
589 (%o3)                        length
590 (%i4) fundamental_units (foo);
591                                 3
592 (%o4)                          m
593 (%i5) foo `` m^3;
594                         60228605349    3
595 (%o5)                   ----------- ` m
596                          48828125
597 (%i6) %, numer;
598                                           3
599 (%o6)                 1233.48183754752 ` m
600 @end example
602 Declaración de conversiones.
604 @c ===beg===
605 @c load ("ezunits")$
606 @c declare_unit_conversion (MMBtu = 10^6*Btu, kW = 1000*W);
607 @c declare_unit_conversion (kWh = kW*hour, MWh = 1000*kWh, 
608 @c                          bell = 1800*s);
609 @c 1 ` kW*s `` MWh;
610 @c 1 ` kW/m^2 `` MMBtu/bell/ft^2;
611 @c ===end===
612 @example
613 (%i1) load ("ezunits")$
614 (%i2) declare_unit_conversion (MMBtu = 10^6*Btu, kW = 1000*W);
615 (%o2)                         done
616 (%i3) declare_unit_conversion (kWh = kW*hour, MWh = 1000*kWh,
617                                bell = 1800*s);
618 (%o3)                         done
619 (%i4) 1 ` kW*s `` MWh;
620 Computing conversions to base units; may take a moment. 
621                              1
622 (%o4)                     ------- ` MWh
623                           3600000
624 (%i5) 1 ` kW/m^2 `` MMBtu/bell/ft^2;
625                        1306449      MMBtu
626 (%o5)                 ---------- ` --------
627                       8242187500          2
628                                    bell ft
629 @end example
630 @end deffn
632 @deffn {Función} constvalue (@var{x})
633 @deffnx {Función} declare_constvalue (@var{a}, @var{x})
634 @deffnx {Función} remove_constvalue (@var{a})
636 Devuelve la constante declarada para un símbolo.
637 Los valores constantes se declaran con @code{declare_constvalue}.
639 Los valores constantes reconocidos por @code{constvalue}
640 son distintos de los valores declarados por @code{numerval}
641 y reconocidos por @code{constantp}.
643 El paquete @code{physical_units} declara los valores constantes
644 de las constantes físicas.
646 @code{remove_constvalue} deshace la acción de @code{declare_constvalue}.
648 Para utilizar estas funciones ejecútese primero @code{load("ezunits")}.
650 Ejemplos:
652 Valor de una constante física.
654 @c ===beg===
655 @c load ("physical_constants")$
656 @c constvalue (%G);
657 @c get ('%G, 'description);
658 @c ===end===
659 @example
660 (%i1) load ("physical_constants")$
661 (%i2) constvalue (%G);
662                                      3
663                                     m
664 (%o2)                    6.67428 ` -----
665                                        2
666                                    kg s
667 (%i3) get ('%G, 'description);
668 (%o3)           Newtonian constant of gravitation
669 @end example
671 Declarando una nueva constante.
673 @c ===beg===
674 @c load ("ezunits")$
675 @c declare_constvalue (FOO, 100 ` lbm / acre);
676 @c FOO * (50 ` acre);
677 @c constvalue (%);
678 @c ===end===
679 @example
680 (%i1) load ("ezunits")$
681 (%i2) declare_constvalue (FOO, 100 ` lbm / acre);
682                                  lbm
683 (%o2)                      100 ` ----
684                                  acre
685 (%i3) FOO * (50 ` acre);
686 (%o3)                     50 FOO ` acre
687 (%i4) constvalue (%);
688 (%o4)                      5000 ` lbm
689 @end example
691 @end deffn
693 @deffn {Función} units (@var{x})
694 @deffnx {Función} declare_units (@var{a}, @var{u})
696 Devuelve las unidades de la magnitud dimensional @var{x},
697 o 1 en caso de que @var{x} sea adimensional.
699 @var{x} puede ser una expresión literal dimensional @math{a ` b},
700 un símbolo con unidades declaradas por
701 medio de @code{declare_units}, o una expresión 
702 que contenga cualquiera o ambos de los anteriores.
704 @code{declare_constvalue} declara que @code{units(@var{a})}
705 debe devolver @var{u}, siendo @var{u} una expresión.
707 Para utilizar estas funciones ejecútese primero @code{load("ezunits")}.
709 Ejemplos:
711 @code{units} aplicado a expresiones dimensionales literales.
713 @c ===beg===
714 @c load ("ezunits")$
715 @c foo : 100 ` kg;
716 @c bar : x ` m/s;
717 @c units (foo);
718 @c units (bar);
719 @c units (foo * bar);
720 @c units (foo / bar);
721 @c units (foo^2);
722 @c ===end===
723 @example
724 (%i1) load ("ezunits")$
725 (%i2) foo : 100 ` kg;
726 (%o2)                              100 ` kg
727 (%i3) bar : x ` m/s;
728                                          m
729 (%o3)                                x ` -
730                                          s
731 (%i4) units (foo);
732 (%o4)                                 kg
733 (%i5) units (bar);
734                                        m
735 (%o5)                                  -
736                                        s
737 (%i6) units (foo * bar);
738                                      kg m
739 (%o6)                                ----
740                                       s
741 (%i7) units (foo / bar);
742                                      kg s
743 (%o7)                                ----
744                                       m
745 (%i8) units (foo^2);
746                                         2
747 (%o8)                                 kg
748 @end example
750 @code{units} aplicado a símbolos con unidades declaradas.
752 @c ===beg===
753 @c load ("ezunits")$
754 @c units (aa);
755 @c declare_units (aa, J);
756 @c units (aa);
757 @c units (aa^2);
758 @c foo : 100 ` kg;
759 @c units (aa * foo);
760 @c ===end===
761 @example
762 (%i1) load ("ezunits")$
763 (%i2) linenum:0;
764 (%o0)                                  0
765 (%i1) units (aa);
766 (%o1)                                  1
767 (%i2) declare_units (aa, J);
768 (%o2)                                  J
769 (%i3) units (aa);
770 (%o3)                                  J
771 (%i4) units (aa^2);
772                                        2
773 (%o4)                                 J
774 (%i5) foo : 100 ` kg;
775 (%o5)                              100 ` kg
776 (%i6) units (aa * foo);
777 (%o6)                                kg J
778 @end example
780 @end deffn
782 @deffn {Función} qty (@var{x})
783 @deffnx {Función} declare_qty (@var{a}, @var{x})
785 @code{qty} devuelve la parte adimensional de la magnitud dimensional @var{x},
786 o @var{x}, si @var{x} es adimensional.
787 @var{x} puede ser una expresión literal dimensional @math{a ` b},
788 un símbolo con unidades declaradas o una expresión 
789 que contenga cualquiera o ambos de los anteriores.
791 @code{declare_qty} declara que @code{qty(@var{a})}
792 debe devolver @var{x}, siendo @var{x} una magnitud dimensional.
794 Para utilizar estas funciones ejecútese primero @code{load("ezunits")}.
796 Ejemplos:
798 @code{qty} aplicado a expresiones dimensionales literales.
800 @c ===beg===
801 @c load ("ezunits")$
802 @c foo : 100 ` kg;
803 @c qty (foo);
804 @c bar : v ` m/s;
805 @c foo * bar;
806 @c qty (foo * bar);
807 @c ===end===
808 @example
809 (%i1) load ("ezunits")$
810 (%i2) foo : 100 ` kg;
811 (%o2)                       100 ` kg
812 (%i3) qty (foo);
813 (%o3)                          100
814 (%i4) bar : v ` m/s;
815                                   m
816 (%o4)                         v ` -
817                                   s
818 (%i5) foo * bar;
819                                   kg m
820 (%o5)                     100 v ` ----
821                                    s
822 (%i6) qty (foo * bar);
823 (%o6)                         100 v
824 @end example
826 @code{qty} aplicado a símbolos con unidades declaradas.
828 @c ===beg===
829 @c load ("ezunits")$
830 @c declare_qty (aa, xx);
831 @c qty (aa);
832 @c qty (aa^2);
833 @c foo : 100 ` kg;
834 @c qty (aa * foo);
835 @c ===end===
836 @example
837 (%i1) load ("ezunits")$
838 (%i2) declare_qty (aa, xx);
839 (%o2)                          xx
840 (%i3) qty (aa);
841 (%o3)                          xx
842 (%i4) qty (aa^2);
843                                  2
844 (%o4)                          xx
845 (%i5) foo : 100 ` kg;
846 (%o5)                       100 ` kg
847 (%i6) qty (aa * foo);
848 (%o6)                        100 xx
849 @end example
851 @end deffn
853 @c PROBABLY SHOULD RENAME THIS TO DIMENSIONALP !!
854 @deffn {Función} unitp (@var{x})
856 Devuelve @code{true} si @var{x} es una expresión dimensional
857 literal, un símbolo declarado como dimensional o
858 una expresión en la que su operador principal ha sido declarado
859 como dimensional. En cualquier otro caso, @code{unitp} devuelve
860 @code{false}.
862 Para utilizar esta función ejecútese primero @code{load("ezunits")}.
864 Ejemplos:
866 @code{unitp} aplicado a expresiones dimensionales literales.
868 @c ===beg===
869 @c load ("ezunits")$
870 @c unitp (100 ` kg);
871 @c ===end===
872 @example
873 (%i1) load ("ezunits")$
874 (%i2) unitp (100 ` kg);
875 (%o2)                         true
876 @end example
878 @code{unitp} applied to a symbol declared dimensional.
880 @c ===beg===
881 @c load ("ezunits")$
882 @c unitp (foo);
883 @c declare (foo, dimensional);
884 @c unitp (foo);
885 @c ===end===
886 @example
887 (%i1) load ("ezunits")$
888 (%i2) unitp (foo);
889 (%o2)                         false
890 (%i3) declare (foo, dimensional);
891 (%o3)                         done
892 (%i4) unitp (foo);
893 (%o4)                         true
894 @end example
896 @code{unitp} aplicado a una expresión en la que el operador
897 principal se declara dimensional.
899 @c ===beg===
900 @c load ("ezunits")$
901 @c unitp (bar (x, y, z));
902 @c declare (bar, dimensional);
903 @c unitp (bar (x, y, z));
904 @c ===end===
905 @example
906 (%i1) load ("ezunits")$
907 (%i2) unitp (bar (x, y, z));
908 (%o2)                         false
909 (%i3) declare (bar, dimensional);
910 (%o3)                         done
911 (%i4) unitp (bar (x, y, z));
912 (%o4)                         true
913 @end example
915 @end deffn
917 @deffn {Función} declare_unit_conversion (@var{u} = @var{v}, ...)
919 Añade las ecuaciones @var{u} = @var{v}, ... a la lista de conversiones
920 de unidades conocidas por el operador de conversión @math{`@w{}`}.
921 @var{u} y @var{v} son términos multiplicativos en las que las
922 variables son unidades o expresiones dimensionales literales.
924 De momento, es imperativo expresar las conversiones de forma
925 que el miembro izquierdo de cada ecuación sea una unidad simple
926 (en opsición a una expresión multiplicativa) o una expresión
927 dimensional literal con la cantidad igual a 1 y con unidad simple.
928 Está previsto eliminar esta restricción en versiones futuras.
930 @code{known_unit_conversions} es la lista de conversiones de unidades conocidas.
932 Para utilizar esta función ejecútese primero @code{load("ezunits")}.
934 Ejemplos:
936 Conversión de unidades expresadas por ecuaciones con términos multiplicativos.
938 @c ===beg===
939 @c load ("ezunits")$
940 @c declare_unit_conversion (nautical_mile = 1852 * m, 
941 @c                          fortnight = 14 * day);
942 @c 100 ` nautical_mile / fortnight `` m/s;
943 @c ===end===
944 @example
945 (%i1) load ("ezunits")$
946 (%i2) declare_unit_conversion (nautical_mile = 1852 * m,
947                                fortnight = 14 * day);
948 (%o2)                         done
949 (%i3) 100 ` nautical_mile / fortnight `` m/s;
950 Computing conversions to base units; may take a moment. 
951                             463    m
952 (%o3)                       ---- ` -
953                             3024   s
954 @end example
956 Conversión de unidades expresadas por ecuaciones con expresiones dimensionales
957 literales.
959 @c ===beg===
960 @c load ("ezunits")$
961 @c declare_unit_conversion (1 ` fluid_ounce = 2 ` tablespoon);
962 @c declare_unit_conversion (1 ` tablespoon = 3 ` teaspoon);
963 @c 15 ` fluid_ounce `` teaspoon;
964 @c ===end===
965 @example
966 (%i1) load ("ezunits")$
967 (%i2) declare_unit_conversion (1 ` fluid_ounce = 2 ` tablespoon);
968 (%o2)                         done
969 (%i3) declare_unit_conversion (1 ` tablespoon = 3 ` teaspoon);
970 (%o3)                         done
971 (%i4) 15 ` fluid_ounce `` teaspoon;
972 Computing conversions to base units; may take a moment. 
973 (%o4)                     90 ` teaspoon
974 @end example
977 @end deffn
980 @deffn {Función} declare_dimensions (@var{a_1}, @var{d_1}, ..., @var{a_n}, @var{d_n})
981 @deffnx {Función} remove_dimensions (@var{a_1}, ..., @var{a_n})
983 @code{declare_dimensions} declara @var{a_1}, ..., @var{a_n}
984 con las dimensiones @var{d_1}, ..., @var{d_n}, respectivamente.
986 Cada @var{a_k} es un símbolo o lista de símbolos.
987 En caso de ser una lista, cada símbolo en @var{a_k} se
988 declara de dimensión @var{d_k}.
990 @code{remove_dimensions} invierte el efecto de @code{declare_dimensions}.
992 Ejecútese @code{load("ezunits")} para hacer uso de estas funciones.
994 Ejemplos:
996 @c ===beg===
997 @c load ("ezunits") $
998 @c declare_dimensions ([x, y, z], length, [t, u], time);
999 @c dimensions (y^2/u);
1000 @c fundamental_units (y^2/u);
1001 @c ===end===
1002 @example
1003 (%i1) load ("ezunits") $
1004 (%i2) declare_dimensions ([x, y, z], length, [t, u], time);
1005 (%o2)                         done
1006 (%i3) dimensions (y^2/u);
1007                                    2
1008                              length
1009 (%o3)                        -------
1010                               time
1011 (%i4) fundamental_units (y^2/u);
1012 0 errors, 0 warnings
1013                                 2
1014                                m
1015 (%o4)                          --
1016                                s
1017 @end example
1019 @end deffn
1021 @deffn {Función} declare_fundamental_dimensions (@var{d_1}, @var{d_2}, @var{d_3}, ...)
1022 @deffnx {Función} remove_fundamental_dimensions (@var{d_1}, @var{d_2}, @var{d_3}, ...)
1023 @deffnx {Variable global} fundamental_dimensions
1025 @code{declare_fundamental_dimensions} declara dimensiones fundamentales.
1026 Los símbolos @var{d_1}, @var{d_2}, @var{d_3}, ... se añaden a la lista
1027 de dimensiones fundamentales si no están ya presentes en la lista.
1029 @code{remove_fundamental_dimensions} invierte el efecto de @code{declare_fundamental_dimensions}.
1031 @code{fundamental_dimensions} es la lista de dimensiones fundamentales.
1032 Por defecto, la lista comprende algunas dimensiones físicas.
1034 Ejecútese @code{load("ezunits")} para hacer uso de estas funciones.
1036 Ejemplos:
1038 @c ===beg===
1039 @c load ("ezunits") $
1040 @c fundamental_dimensions;
1041 @c declare_fundamental_dimensions (money, cattle, happiness);
1042 @c fundamental_dimensions;
1043 @c remove_fundamental_dimensions (cattle, happiness);
1044 @c fundamental_dimensions;
1045 @c ===end===
1046 @example
1047 (%i1) load ("ezunits") $
1048 (%i2) fundamental_dimensions;
1049 (%o2) [length, mass, time, current, temperature, quantity]
1050 (%i3) declare_fundamental_dimensions (money, cattle, happiness);
1051 (%o3)                         done
1052 (%i4) fundamental_dimensions;
1053 (%o4) [length, mass, time, current, temperature, quantity, 
1054                                         money, cattle, happiness]
1055 (%i5) remove_fundamental_dimensions (cattle, happiness);
1056 (%o5)                         done
1057 (%i6) fundamental_dimensions;
1058 (%o6) [length, mass, time, current, temperature, quantity, money]
1059 @end example
1061 @end deffn
1064 @deffn {Función} declare_fundamental_units (@var{u_1}, @var{d_1}, ..., @var{u_n}, @var{d_n})
1065 @deffnx {Función} remove_fundamental_units (@var{u_1}, ..., @var{u_n})
1067 @code{declare_fundamental_units} declara @var{u_1}, ..., @var{u_n}
1068 de dimensiones @var{d_1}, ..., @var{d_n}, respectivamente.
1069 Todos los argumentos deben símbolos.
1071 Tras la llamada a @code{declare_fundamental_units},
1072 @code{dimensions(@var{u_k})} devuelve @var{d_k} para cada argumento @var{u_1}, ..., @var{u_n},
1073 y @code{fundamental_units(@var{d_k})} devuelve @var{u_k} para cada @var{d_1}, ..., @var{d_n}.
1075 @code{remove_fundamental_units} invierte el efecto de @code{declare_fundamental_units}.
1077 Ejecútese @code{load("ezunits")} para hacer uso de estas funciones.
1079 Ejemplos:
1081 @c ===beg===
1082 @c load ("ezunits") $
1083 @c declare_fundamental_dimensions (money, cattle, happiness);
1084 @c declare_fundamental_units (dollar, money, goat, cattle,
1085 @c                            smile, happiness);
1086 @c dimensions (100 ` dollar/goat/km^2);
1087 @c dimensions (x ` smile/kg);
1088 @c fundamental_units (money*cattle/happiness);
1089 @c ===end===
1090 @example
1091 (%i1) load ("ezunits") $
1092 (%i2) declare_fundamental_dimensions (money, cattle, happiness);
1093 (%o2)                         done
1094 (%i3) declare_fundamental_units (dollar, money, goat, cattle,
1095                                  smile, happiness);
1096 (%o3)                 [dollar, goat, smile]
1097 (%i4) dimensions (100 ` dollar/goat/km^2);
1098                              money
1099 (%o4)                    --------------
1100                                       2
1101                          cattle length
1102 (%i5) dimensions (x ` smile/kg);
1103                             happiness
1104 (%o5)                       ---------
1105                               mass
1106 (%i6) fundamental_units (money*cattle/happiness);
1107 0 errors, 0 warnings
1108                            dollar goat
1109 (%o6)                      -----------
1110                               smile
1111 @end example
1113 @end deffn
1116 @deffn {Función} dimensions (@var{x})
1117 @deffnx {Función} dimensions_as_list (@var{x})
1119 @code{dimensions} devuelve las dimensiones de la magnitud dimensional @var{x}
1120 en forma de expresión que contiene productos y potencias de dimensiones
1121 fundamentales.
1123 @code{dimensions_as_list} devuelve las dimensiones de la magnitud dimensional @var{x}
1124 en forma de lista, cuyos elementos indican las potencias de las dimensiones
1125 fundamentales correspondientes.
1127 Para utilizar estas funciones ejecútese primero @code{load("ezunits")}.
1129 Ejemplos:
1131 @c ===beg===
1132 @c load ("ezunits")$
1133 @c dimensions (1000 ` kg*m^2/s^3);
1134 @c declare_units (foo, acre*ft/hour);
1135 @c dimensions (foo);
1136 @c ===end===
1137 @example
1138 (%i1) load ("ezunits")$
1139 (%i2) dimensions (1000 ` kg*m^2/s^3);
1140                                 2
1141                           length  mass
1142 (%o2)                     ------------
1143                                  3
1144                              time
1145 (%i3) declare_units (foo, acre*ft/hour);
1146                              acre ft
1147 (%o3)                        -------
1148                               hour
1149 (%i4) dimensions (foo);
1150                                    3
1151                              length
1152 (%o4)                        -------
1153                               time
1154 @end example
1157 @c ===beg===
1158 @c load ("ezunits")$
1159 @c fundamental_dimensions;
1160 @c dimensions_as_list (1000 ` kg*m^2/s^3);
1161 @c declare_units (foo, acre*ft/hour);
1162 @c dimensions_as_list (foo);
1163 @c ===end===
1164 @example
1165 (%i1) load ("ezunits")$
1166 (%i2) fundamental_dimensions;
1167 (%o2)  [length, mass, time, charge, temperature, quantity]
1168 (%i3) dimensions_as_list (1000 ` kg*m^2/s^3);
1169 (%o3)                 [2, 1, - 3, 0, 0, 0]
1170 (%i4) declare_units (foo, acre*ft/hour);
1171                              acre ft
1172 (%o4)                        -------
1173                               hour
1174 (%i5) dimensions_as_list (foo);
1175 (%o5)                 [3, 0, - 1, 0, 0, 0]
1176 @end example
1179 @end deffn
1183 @deffn {Función} fundamental_units (@var{x})
1184 @deffnx {Función} fundamental_units ()
1186 @code{fundamental_units(@var{x})} devuelve las unidades
1187 asociadas a las dimensiones fundamentales de @var{x},
1188 tal como queda determinada por @code{dimensions(@var{x})}.
1190 @var{x} puede ser una expresión literal dimensional @math{a ` b},
1191 un símbolo con unidades declaradas a través de
1192 @code{declare_units} o una expresión que contenga a ambos.
1194 @code{fundamental_units()} devuelve una lista con las unidades
1195 fundamentales conocidas, tal como fueron declaradas por @code{declare_fundamental_units}.
1197 Para utilizar esta función ejecútese primero @code{load("ezunits")}.
1199 Ejemplos:
1201 @c ===beg===
1202 @c load ("ezunits")$
1203 @c fundamental_units ();
1204 @c fundamental_units (100 ` mile/hour);
1205 @c declare_units (aa, g/foot^2);
1206 @c fundamental_units (aa);
1207 @c ===end===
1208 @example
1209 (%i1) load ("ezunits")$
1210 (%i2) fundamental_units ();
1211 (%o2)                 [m, kg, s, A, K, mol]
1212 (%i3) fundamental_units (100 ` mile/hour);
1213                                 m
1214 (%o3)                           -
1215                                 s
1216 (%i4) declare_units (aa, g/foot^2);
1217                                 g
1218 (%o4)                         -----
1219                                   2
1220                               foot
1221 (%i5) fundamental_units (aa);
1222                                kg
1223 (%o5)                          --
1224                                 2
1225                                m
1226 @end example
1228 @end deffn
1230 @deffn {Función} dimensionless (@var{L})
1232 Devuelve una expresión sin dimensiones que se puede formar
1233 a partir de una lista @var{L} de cantidades dimensionales 
1235 Para utilizar esta función ejecútese primero @code{load("ezunits")}.
1237 Ejemplos:
1239 @c ===beg===
1240 @c load ("ezunits") $
1241 @c dimensionless ([x ` m, y ` m/s, z ` s]);
1242 @c ===end===
1243 @example
1244 (%i1) load ("ezunits") $
1245 (%i2) dimensionless ([x ` m, y ` m/s, z ` s]);
1246 0 errors, 0 warnings
1247 0 errors, 0 warnings
1248                                y z
1249 (%o2)                         [---]
1250                                 x
1251 @end example
1253 Cantidades adimensionales obtenidas a partir de cantidades físicas.
1254 Nótese que el primer elemento de la lista es proporcional a la
1255 constante de estructura fina.
1257 @c ===beg===
1258 @c load ("ezunits") $
1259 @c load ("physical_constants") $
1260 @c dimensionless([%h_bar, %m_e, %m_P, %%e, %c, %e_0]);
1261 @c ===end===
1262 @example
1263 (%i1) load ("ezunits") $
1264 (%i2) load ("physical_constants") $
1265 (%i3) dimensionless([%h_bar, %m_e, %m_P, %%e, %c, %e_0]);
1266 0 errors, 0 warnings
1267 0 errors, 0 warnings
1268                               2
1269                            %%e        %m_e
1270 (%o3)                [--------------, ----]
1271                       %c %e_0 %h_bar  %m_P
1272 @end example
1274 @end deffn
1277 @deffn {Función} natural_unit (@var{expr}, [@var{v_1}, ..., @var{v_n}])
1279 Busca los exponentes @var{e_1}, ..., @var{e_n} tales que
1280 @code{dimension(@var{expr}) = dimension(@var{v_1}^@var{e_1} ... @var{v_n}^@var{e_n})}.
1282 Para utilizar esta función ejecútese primero @code{load("ezunits")}.
1284 @end deffn