Реализация до разработчиков компилятора.
, Если Ваш вопрос, "что произойдет с таким объявлением" - компилятор установит первый элемент массива на значение, которое Вы обеспечили (0), и все другие будут обнулены, потому что это - значение по умолчанию для опущенных элементов массива.
Mathematica также предоставляет ряд высокоуровневых функций для управления алгебраическими функциями. Среди них Expand
, Apart
и Together
и Cancel
, хотя их довольно много.
Кроме того, для вашего конкретного примера применения одного и того же преобразования к обеим сторонам уравнения (то есть к выражению с головой Equal
) вы можете использовать функцию Thread
, который работает так же, как ваша функция MultBothSides
, но с гораздо большей общностью.
In[1]:= expression = 2 a == a b
Out[1]:= 2 a == a b
In[2]:= Thread[expression /a, Equal]
Out[2]:= 2 == b
In[3]:= Thread[expression - c, Equal]
Out[3]:= 2 a - c == a b - c
В любом из представленных решений должно быть относительно легко увидеть, что повлекло за собой шаг. Если вам нужно что-то более явное, вы можете написать свою собственную функцию так:
In[4]:= ApplyToBothSides[f_, eq_Equal] := Map[f, eq]
In[5]:= ApplyToBothSides[4 * #&, expression]
Out[5]:= 8 a == 4 a b
It ' как обобщение вашей функции MultBothSides
, использующее тот факт, что Map
работает с выражениями с любой головой, а не только с заголовком List
. Если вы пытаетесь общаться с аудиторией, которая не знакома с Mathematica, использование таких имен может помочь вам общаться более четко. В аналогичном ключе, если вы хотите использовать правила замены, предложенные Ирой Бакстером, может оказаться полезным написать Replace или ReplaceAll вместо использования /.
синтаксический сахар.
In[6]:= ReplaceAll[expression, a -> (x + y)]
Out[6]:= 2 (x + y) == b (x + y)
Если вы думаете, что было бы проще использовать фактическое уравнение вместо имени переменной , выражение
во входных данных, и вы используете интерфейс записной книжки, выделите слово выражение
с помощью мыши, вызовите контекстное меню и выберите "
Я не думаю, что вам нужен пакет. Что вы хотите сделать, так это манипулировать каждой формулой в соответствии с правилом вывода. В MMa вы можете моделировать правила вывода для формулы с помощью преобразований. Итак, если у вас есть формула f , вы можете применить правило вывода I , выполнив (мой синтаксис MMa устарел на 15 лет)
f ./ I
для создания следующей формулы в вашей последовательности .
MMa, конечно, попытается упростить ваши формулы, если они содержат стандартные алгебраические операторы и термины, такие как постоянные числа и арифметические операторы. Вы можете запретить MMa применять собственные правила вывода, заключив формулу в форму Hold [...] .