Mathematica не интерпретирует CenterDot как Times в численных расчетах - PullRequest
4 голосов
/ 02 декабря 2011

Почему Mathematica не показывает числовой результат

(0.8\[CenterDot]452\[CenterDot]20+1.5\[CenterDot]4180\[CenterDot]10
  -2\[CenterDot]900\[CenterDot]100) / (0.8\[CenterDot]452
  +1.5\[CenterDot]4180-1\[CenterDot]2\[CenterDot]900) // N

Ответы [ 4 ]

9 голосов
/ 02 декабря 2011

Просто для завершения некоторых других ответов / комментариев, если вы хотите, чтобы CenterDot интерпретировался как Times как при вводе, так и при выводе, используя что-то вроде

Unprotect[CenterDot, Times];
CenterDot = Times;
Times /: MakeBoxes[Times[a__], fmt_] := 
  With[{cbox = ToBoxes[HoldForm[CenterDot[a]]]}, 
   InterpretationBox[cbox, Times[a]]];
Protect[CenterDot, Times];

Который вы можете добавить в init.m , если хотите, чтобы он был загружен по умолчанию.

Работает как с числовыми, так и с символьными выражениями, например,

In[5]:= 1\[CenterDot]2\[CenterDot]3   
Out[5]= 6

In[6]:= a b c    
Out[6]= a\[CenterDot]b\[CenterDot]c

Вы можете также сделать автоматически вставленный символ умножения между числами, разделенными пробелом, равным CenterDot, выполнив

SetOptions[EvaluationNotebook[], 
  {AutoMultiplicationSymbol -> True, NumberMultiplier -> "\[CenterDot]"}]

или выбрав Центральная точка в диалоговом окне настроек в разделе Внешний вид> Числа> Умножение .

Например:
screenshot

4 голосов
/ 02 декабря 2011

Умножение в Mathematica записывается в виде пробела (Times[a,b] == a b) или звездочки (Times[a,b] == a*b). \[CenterDot] не интерпретируется как умножение.

4 голосов
/ 02 декабря 2011

Просто замените \[CenterDot] пробелом

1 голос
/ 03 декабря 2011

Я думаю, что первый метод Саймона можно написать более кратко.Пожалуйста, просмотрите:

Unprotect[Times];

CenterDot = Times;

Format[a_*b__] := Interpretation[HoldForm[a\[CenterDot]b], a*b];

Вторая попытка.Я считаю, что это правильно работает с Convert To > StandardForm и редактирования.

CenterDot = Times;

MakeBoxes[Times[x__], _] := RowBox @ Riffle[ToBoxes /@ {x}, "\[CenterDot]"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...