wxMaxima ezunits 有趣的业务

wxMaxima ezunits funny business

单位的处理是否损坏或我缺少什么?

load(ezunits);

σ_N: 10000`N/(50`mm*10`mm);

newts: 123`kg*m/s^3; newts `` N; newts + 321 `kg*m/s^2;

产生的不是人们所希望的:

(%i1)   load(ezunits);
(%o1)   "C:/maxima-5.43.2/share/maxima/5.43.2/share/ezunits/ezunits.mac"
(%i2)   σ_N: 10000`N/(50`mm*10`mm);
(σ_N)   10000 ` (N/500 ` 1/mm^2)
(%i5)   newts: 123`kg*m/s^3; newts `` N; newts + 321 `kg*m/s^2;
(newts) 123 ` (kg*m)/s^3
(%o4)   123/s ` N
(%o5)   321 ` (kg*m)/s^2+123 ` (kg*m)/s^3

应该是:

σ_N= 20 N/mm^2
newts= 123 N/s

对于第一部分,您必须使用括号来指示您想要的分组。当你写 a ` b/c 时,它被解释为 a ` (b/c),但在这种情况下你想要 (a ` b)/c。 (分组之所以如此,是因为假设 x ` m/s 之类的东西比 (x ` m)/s 更常见。)

(%i2) σ_N: (10000`N)/(50`mm*10`mm);
                                  N
(%o2)                       20 ` ---
                                   2
                                 mm

为了好玩,让我们检查一下这个数量的尺寸。我猜应该是force/area.

(%i3) dimensions (%);
                              mass
(%o3)                     ------------
                                     2
                          length time
(%i4) dimensions (N);
                           length mass
(%o4)                      -----------
                                  2
                              time
(%i5) dimensions (mm);
(%o5)                        length

我觉得很合适。

对于第二部分,我不明白你在做什么。变量 newts 的单位等于 N/s,所以我不明白你为什么要将它转换为 N,我也不明白你为什么要这样做将 N/s 添加到 N。不管怎样,这就是我能做的。

(%i6) newts: 123`kg*m/s^3;
                                 kg m
(%o6)                      123 ` ----
                                   3
                                  s
(%i7) newts `` N/s;
                                   N
(%o7)                        123 ` -
                                   s

不同维度的数量相加时,ezunits就这样吧;它不会产生错误或任何东西。

(%i8) newts + 321 ` kg*m/s^2;
                           kg m         kg m
(%o8)                321 ` ---- + 123 ` ----
                             2            3
                            s            s

这样做的动机是它允许像 3`sheep + 2`horsex`hour + y`dollar 这样的东西——转换率可以在事后确定。总的来说,允许在事实发生后重新解释表达式是我认为的数学态度。