2

单位的处理是否损坏或我错过了什么?

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
4

1 回答 1

1

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

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

只是为了好玩,让我们检查一下这个数量的尺寸。我想应该是力/面积。

(%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/sN. 无论如何,这就是我能做到的。

(%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之类的东西——转换率可以在事后确定。一般来说,我相信,允许在事后重新解释表达式是数学态度。

于 2020-05-09T20:16:11.217 回答