1 @c English version: 2011-06-11
3 * Introducción a ezunits::
4 * Introducción a physical_constants::
5 * Funciones y variables para ezunits::
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},
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.
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.
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
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
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
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:
117 velocidad de la luz en el vacío
123 impedancia característica del vacío
125 constante gravitatoria de Newton
133 temperature de Planck
141 flujo magnético cuántico
143 conductancia cuántica
145 constante de Josephson
147 constante de von Klitzing
153 constante de estructura fina
161 cuanto de circulación
167 constante de masa atómica
172 constante molar de los gases
174 constante de Boltzmann
176 volumen molar del gas ideal
178 constante de Loschmidt
180 constante de Sackur-Tetrode (constante de entropía absoluta)
182 constante de Stefan-Boltzmann
184 primera constante de radiación
186 primera constante de radiación para radiancia espectral
188 segunda constante de radiación
190 Constante de la ley del desplazamiento de Wien
192 Constante de la ley del desplazamiento de Wien
197 Lista de todos los símbolos que tienen la propiedad
198 @code{physical_constant}.
201 @c load ("physical_constants")$
202 @c propvars (physical_constant);
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]
214 Propiedades de la constante física @code{%c}.
217 @c load ("physical_constants")$
219 @c get (%c, description);
225 (%i1) load ("physical_constants")$
226 (%i2) constantp (%c);
228 (%i3) get (%c, description);
229 (%o3) speed of light in vacuum
230 (%i4) constvalue (%c);
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}.
247 @c load ("physical_constants")$
256 (%i1) load ("physical_constants")$
260 (%i3) %, m = 1 ` lbm;
263 (%i4) constvalue (%);
266 (%o4) 89875517873681764 ` ------
270 Computing conversions to base units; may take a moment.
272 (%o5) ------------------ ` J
276 (%o6) --------------- ` GJ
279 (%o7) 4.0759872051556356e+7 ` GJ
284 @node Funciones y variables para ezunits, , Introducción a physical_constants, ezunits
285 @section Funciones y variables para ezunits
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},
298 Las operaciones aritméticas con magnitudes dimensionales se realizan
299 de la forma convencional.
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.
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")}.
314 Unidades del Sistema Internacional.
324 (%i1) load ("ezunits")$
331 (%i5) dimensions (foo);
336 Unidades definidas por el usuario.
342 @c fundamental_units (bar);
345 (%i1) load ("ezunits")$
346 (%i2) bar : x ` acre;
348 (%i3) dimensions (bar);
351 (%i4) fundamental_units (bar);
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);
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);
371 (%i4) baz2 : 1000`gallon/fortnight;
373 (%o4) 1000 ` ---------
375 (%i5) subst (fortnight = 14*day, baz2);
382 Operaciones aritméticas y magnitudes dimensionales.
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);
393 (%i1) load ("ezunits")$
394 (%i2) 100 ` kg + 200 ` kg;
396 (%i3) 100 ` m^3 - 100 ` m^3;
399 (%i4) (10 ` kg) * (17 ` m/s^2);
404 (%i5) (x ` m) / (y ` s);
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
437 Para utilizar este operador ejecútese primero @code{load("ezunits")}.
441 Conjunto de conversiones conocidas.
445 @c display2d : false$
446 @c known_unit_conversions;
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,
494 Converiones de unidades fundamentales.
502 @c 1 ` W `` Btu/hour;
504 @c 100 ` degC `` degF;
505 @c -40 ` degF `` degC;
506 @c 1 ` acre*ft `` m^3;
510 (%i1) load ("ezunits")$
512 Computing conversions to base units; may take a moment.
524 (%i6) 1 ` W `` Btu/hour;
530 (%o7) 3.412322274881517 ` ----
532 (%i8) 100 ` degC `` degF;
534 (%i9) -40 ` degF `` degC;
536 (%i10) 1 ` acre*ft `` m^3;
538 (%o10) ----------- ` m
542 (%o11) 1233.48183754752 ` m
545 Transformando pies a metros y viceversa.
549 @c 100 ` m + 100 ` ft;
550 @c (100 ` m + 100 ` ft) `` ft;
552 @c (100 ` m + 100 ` ft) `` m;
556 (%i1) load ("ezunits")$
557 (%i2) 100 ` m + 100 ` ft;
558 (%o2) 100 ` m + 100 ` ft
559 (%i3) (100 ` m + 100 ` ft) `` ft;
564 (%o4) 428.0839895013123 ` ft
565 (%i5) (100 ` m + 100 ` ft) `` m;
573 Análisis dimensional para encontrar dimensiones y unidades fundamentales.
577 @c foo : 1 ` acre * ft;
579 @c fundamental_units (foo);
584 (%i1) load ("ezunits")$
585 (%i2) foo : 1 ` acre * ft;
587 (%i3) dimensions (foo);
590 (%i4) fundamental_units (foo);
595 (%o5) ----------- ` m
599 (%o6) 1233.48183754752 ` m
602 Declaración de conversiones.
606 @c declare_unit_conversion (MMBtu = 10^6*Btu, kW = 1000*W);
607 @c declare_unit_conversion (kWh = kW*hour, MWh = 1000*kWh,
610 @c 1 ` kW/m^2 `` MMBtu/bell/ft^2;
613 (%i1) load ("ezunits")$
614 (%i2) declare_unit_conversion (MMBtu = 10^6*Btu, kW = 1000*W);
616 (%i3) declare_unit_conversion (kWh = kW*hour, MWh = 1000*kWh,
619 (%i4) 1 ` kW*s `` MWh;
620 Computing conversions to base units; may take a moment.
624 (%i5) 1 ` kW/m^2 `` MMBtu/bell/ft^2;
626 (%o5) ---------- ` --------
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")}.
652 Valor de una constante física.
655 @c load ("physical_constants")$
657 @c get ('%G, 'description);
660 (%i1) load ("physical_constants")$
661 (%i2) constvalue (%G);
664 (%o2) 6.67428 ` -----
667 (%i3) get ('%G, 'description);
668 (%o3) Newtonian constant of gravitation
671 Declarando una nueva constante.
675 @c declare_constvalue (FOO, 100 ` lbm / acre);
676 @c FOO * (50 ` acre);
680 (%i1) load ("ezunits")$
681 (%i2) declare_constvalue (FOO, 100 ` lbm / acre);
685 (%i3) FOO * (50 ` acre);
687 (%i4) constvalue (%);
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")}.
711 @code{units} aplicado a expresiones dimensionales literales.
719 @c units (foo * bar);
720 @c units (foo / bar);
724 (%i1) load ("ezunits")$
725 (%i2) foo : 100 ` kg;
737 (%i6) units (foo * bar);
741 (%i7) units (foo / bar);
750 @code{units} aplicado a símbolos con unidades declaradas.
755 @c declare_units (aa, J);
762 (%i1) load ("ezunits")$
767 (%i2) declare_units (aa, J);
774 (%i5) foo : 100 ` kg;
776 (%i6) units (aa * foo);
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")}.
798 @code{qty} aplicado a expresiones dimensionales literales.
809 (%i1) load ("ezunits")$
810 (%i2) foo : 100 ` kg;
822 (%i6) qty (foo * bar);
826 @code{qty} aplicado a símbolos con unidades declaradas.
830 @c declare_qty (aa, xx);
837 (%i1) load ("ezunits")$
838 (%i2) declare_qty (aa, xx);
845 (%i5) foo : 100 ` kg;
847 (%i6) qty (aa * foo);
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
862 Para utilizar esta función ejecútese primero @code{load("ezunits")}.
866 @code{unitp} aplicado a expresiones dimensionales literales.
873 (%i1) load ("ezunits")$
874 (%i2) unitp (100 ` kg);
878 @code{unitp} applied to a symbol declared dimensional.
883 @c declare (foo, dimensional);
887 (%i1) load ("ezunits")$
890 (%i3) declare (foo, dimensional);
896 @code{unitp} aplicado a una expresión en la que el operador
897 principal se declara dimensional.
901 @c unitp (bar (x, y, z));
902 @c declare (bar, dimensional);
903 @c unitp (bar (x, y, z));
906 (%i1) load ("ezunits")$
907 (%i2) unitp (bar (x, y, z));
909 (%i3) declare (bar, dimensional);
911 (%i4) unitp (bar (x, y, z));
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")}.
936 Conversión de unidades expresadas por ecuaciones con términos multiplicativos.
940 @c declare_unit_conversion (nautical_mile = 1852 * m,
941 @c fortnight = 14 * day);
942 @c 100 ` nautical_mile / fortnight `` m/s;
945 (%i1) load ("ezunits")$
946 (%i2) declare_unit_conversion (nautical_mile = 1852 * m,
947 fortnight = 14 * day);
949 (%i3) 100 ` nautical_mile / fortnight `` m/s;
950 Computing conversions to base units; may take a moment.
956 Conversión de unidades expresadas por ecuaciones con expresiones dimensionales
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;
966 (%i1) load ("ezunits")$
967 (%i2) declare_unit_conversion (1 ` fluid_ounce = 2 ` tablespoon);
969 (%i3) declare_unit_conversion (1 ` tablespoon = 3 ` teaspoon);
971 (%i4) 15 ` fluid_ounce `` teaspoon;
972 Computing conversions to base units; may take a moment.
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.
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);
1003 (%i1) load ("ezunits") $
1004 (%i2) declare_dimensions ([x, y, z], length, [t, u], time);
1006 (%i3) dimensions (y^2/u);
1011 (%i4) fundamental_units (y^2/u);
1012 0 errors, 0 warnings
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.
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;
1047 (%i1) load ("ezunits") $
1048 (%i2) fundamental_dimensions;
1049 (%o2) [length, mass, time, current, temperature, quantity]
1050 (%i3) declare_fundamental_dimensions (money, cattle, happiness);
1052 (%i4) fundamental_dimensions;
1053 (%o4) [length, mass, time, current, temperature, quantity,
1054 money, cattle, happiness]
1055 (%i5) remove_fundamental_dimensions (cattle, happiness);
1057 (%i6) fundamental_dimensions;
1058 (%o6) [length, mass, time, current, temperature, quantity, money]
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.
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);
1091 (%i1) load ("ezunits") $
1092 (%i2) declare_fundamental_dimensions (money, cattle, happiness);
1094 (%i3) declare_fundamental_units (dollar, money, goat, cattle,
1096 (%o3) [dollar, goat, smile]
1097 (%i4) dimensions (100 ` dollar/goat/km^2);
1099 (%o4) --------------
1102 (%i5) dimensions (x ` smile/kg);
1106 (%i6) fundamental_units (money*cattle/happiness);
1107 0 errors, 0 warnings
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
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")}.
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);
1138 (%i1) load ("ezunits")$
1139 (%i2) dimensions (1000 ` kg*m^2/s^3);
1145 (%i3) declare_units (foo, acre*ft/hour);
1149 (%i4) dimensions (foo);
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);
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);
1174 (%i5) dimensions_as_list (foo);
1175 (%o5) [3, 0, - 1, 0, 0, 0]
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")}.
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);
1209 (%i1) load ("ezunits")$
1210 (%i2) fundamental_units ();
1211 (%o2) [m, kg, s, A, K, mol]
1212 (%i3) fundamental_units (100 ` mile/hour);
1216 (%i4) declare_units (aa, g/foot^2);
1221 (%i5) fundamental_units (aa);
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")}.
1240 @c load ("ezunits") $
1241 @c dimensionless ([x ` m, y ` m/s, z ` s]);
1244 (%i1) load ("ezunits") $
1245 (%i2) dimensionless ([x ` m, y ` m/s, z ` s]);
1246 0 errors, 0 warnings
1247 0 errors, 0 warnings
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.
1258 @c load ("ezunits") $
1259 @c load ("physical_constants") $
1260 @c dimensionless([%h_bar, %m_e, %m_P, %%e, %c, %e_0]);
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
1270 (%o3) [--------------, ----]
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")}.