Есть ли пакеты Mathematica для представления доказательств/дериваций?

Реализация до разработчиков компилятора.

, Если Ваш вопрос, "что произойдет с таким объявлением" - компилятор установит первый элемент массива на значение, которое Вы обеспечили (0), и все другие будут обнулены, потому что это - значение по умолчанию для опущенных элементов массива.

7
задан Charles E. Grant 28 August 2009 в 07:31
поделиться

2 ответа

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)

Если вы думаете, что было бы проще использовать фактическое уравнение вместо имени переменной , выражение во входных данных, и вы используете интерфейс записной книжки, выделите слово выражение с помощью мыши, вызовите контекстное меню и выберите "

3
ответ дан 7 December 2019 в 12:23
поделиться

Я не думаю, что вам нужен пакет. Что вы хотите сделать, так это манипулировать каждой формулой в соответствии с правилом вывода. В MMa вы можете моделировать правила вывода для формулы с помощью преобразований. Итак, если у вас есть формула f , вы можете применить правило вывода I , выполнив (мой синтаксис MMa устарел на 15 лет)

f ./ I 

для создания следующей формулы в вашей последовательности .

MMa, конечно, попытается упростить ваши формулы, если они содержат стандартные алгебраические операторы и термины, такие как постоянные числа и арифметические операторы. Вы можете запретить MMa применять собственные правила вывода, заключив формулу в форму Hold [...] .

2
ответ дан 7 December 2019 в 12:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: