wxMaxima ezunits смешно бизнес - PullRequest
2 голосов
/ 08 мая 2020

Обработка блоков нарушена или что мне не хватает?

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

1 Ответ

0 голосов
/ 09 мая 2020

Для первой части вы должны использовать круглые скобки, чтобы указать желаемую группировку. Когда вы пишете 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

Просто для удовольствия, давайте проверим размеры этого количества. Думаю, это должна быть сила / площадь.

(%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`horse или x`hour + y`dollar - коэффициент конверсии можно определить постфактум. В целом, я считаю, что математическая установка допускает переосмысление выражений постфактум.

...