Mathematica 8.0, очевидное упрощение отсутствует, почему? - PullRequest
4 голосов
/ 19 января 2012

Заранее извиняюсь, если есть очевидный ответ, я не пользователь Mathematica, но я работаю над заимствованным ноутбуком, и это то, что у меня есть на данный момент.По какой-то причине в Simplify и FullSimplify отсутствуют очевидные упрощения, например:

Simplify[1/2 (2/5 (x - y)^2 + 2/3 z)]

Выход:

1/2 (2/5 (x - y)^2 + (2 z)/3)

По какой-то причине он не избавляется от1/2 фактора, попробуйте сами!

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

Я что-то упустил?

PS: этот ноутбук имеет Mathematica 8.0

EDIT : FullSimplify работает для предыдущего примера, но не для

FullSimplify[1/2 (2 (x - y)^2 + 2/5 (y - z)^2)]

Ответы [ 4 ]

4 голосов
/ 19 января 2012

FullSimplify у меня работает:

In[693]:= Simplify[1/2 (2/5 (x - y)^2 + 2/3 z)]

Out[693]= 1/2 (2/5 (x - y)^2 + (2 z)/3)

In[694]:= FullSimplify[1/2 (2/5 (x - y)^2 + 2/3 z)]

Out[694]= 1/5 (x - y)^2 + z/3

In[695]:= $Version

Out[695]= "8.0 for Mac OS X x86 (64-bit) (October 5, 2011)"
3 голосов
/ 19 января 2012

Иногда Collect может быть более подходящим:

 In[1]:= Collect[1/2 (2/5 (x - y)^2 + 2/3 z), {z}]

 Out[1]= 1/5 (x - y)^2 + z/3

Редактировать

In[2]:= Collect[1/2 (2 (x - y)^2 + 2/5 (y - z)^2), {x - y, y - z}]

Out[2]= (x - y)^2 + 1/5 (y - z)^2

В этом конкретном случае подход Вербеи с использованием Ditribute представляется наиболее простым способом получить то, что вы хотите, однако Collect[expr, list] настраивается на общие случаи, упорядочивая список. В Mathematica есть много функций, которые могут помочь в различных случаях. Хотя Simplify и FullSimplify могут быть немного умнее, они могут многое сделать. Хороший пример их различного поведения вы можете найти ниже:

enter image description here

Я рекомендую поближе взглянуть на аккуратную демонстрацию того, что можно ожидать в целом: Упрощение некоторых алгебраических выражений с использованием Mathematica .

3 голосов
/ 19 января 2012

Я не знаю, почему Simplify пропускает этот случай, но FullSimplify помогает здесь:

FullSimplify[1/2 (2/5 (x - y)^2 + 2/3 z)]

дает:

Mathematica graphics

2 голосов
/ 19 января 2012

Для вашего второго примера Distribute работает:

Distribute[1/2 (2 (x - y)^2 + 2/5 (y - z)^2)]

приводит к

  (x - y)^2 + 1/5 (y - z)^2  

, что, как я полагаю, вы хотите.

...