2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Работа с символьными выражениями в Wolfram mathematica
Сообщение22.02.2020, 17:18 


23/12/19
15
Добрый день!
У меня два вопроса:
1) Как можно задать, например, коммутационные соотношения между символами над которыми я произвожу операции, например a,b,c,d (на случай, когда мне нужно раскрыть произведение выражений составленных из a,b,c,d).
2) Как заставить wolfram раскрыть полностью произведение выражений из a,b,c,d ? Например, (a+b)(c+d) -> ac+ad+bc+bd. И, иллюстрация пункта 1) - соответственно, если бы были какие либо соотношения между этими символами, например bc=bd и ac = 0, то получилось бы ad+2*bd.

 Профиль  
                  
 
 Re: Работа с символьными выражениями в Wolfram mathematica
Сообщение22.02.2020, 17:56 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Leon006w в сообщении #1440872 писал(а):
Как заставить wolfram раскрыть полностью произведение выражений из a,b,c,d ? Например, (a+b)(c+d) -> ac+ad+bc+bd
Expand[(a + b) (c + d)]
Leon006w в сообщении #1440872 писал(а):
И, иллюстрация пункта 1) - соответственно, если бы были какие либо соотношения между этими символами, например bc=bd и ac = 0, то получилось бы ad+2*bd.
Можно сделать простую подстановку: a c + b c + a d + b d /. {b c -> b d, a c -> 0}
На самом деле, нужно действовать тоньше, но я сам тут плаваю.

 Профиль  
                  
 
 Re: Работа с символьными выражениями в Wolfram mathematica
Сообщение22.02.2020, 18:28 
Заслуженный участник


27/04/09
28128
Я не припомню, чтобы в моей восьмой версии было что-то такое, но в следующих могли добавить. Например вот добавили в какой-то символьные тензорные выражения, где как раз можно задавать соотношения на индексы. А так я бы предложил примерно то же что Aritaborian: применять замены такого вида, может быть сделать функцию, которая бы принимала соотношения и выражение и работала с ним по частям, учитывая возможно некоторые случаи, когда простая замена не срабатывает (из-за хитростей полного представления выражения).

-- Сб фев 22, 2020 20:31:06 --

Было бы полезным, если замен окажется достаточно, сделать функцию, превращающую соотношения-равенства в список подстановок, которые (в идеале) оставят большей частью переменные из начала алфавита (например). И a + b + c == 0 превращалось бы в c -> -a - b, а потом уж делать подстановки последнего.

-- Сб фев 22, 2020 20:48:08 --

(Конечно придётся учитывать, что b c == b d придётся скорее всего преобразовывать в d -> b c / b. Это самая неудобная часть дела. Можно использовать Solve[b c == b d, d] (после определения того, что d — самая последняя в алфавитном порядке переменная в соотношении), но вдруг в более сложном случае Solve выдаст более одного ответа, брр. Хотя если соотношения всегда вида «сумма произведений переменных равна нулю / сумме произведений переменных, и всё линейно по каждой переменной», то ничего страшного на этом пути не возникнет.)

 Профиль  
                  
 
 Re: Работа с символьными выражениями в Wolfram mathematica
Сообщение22.02.2020, 20:32 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
arseniiv, здесь есть несколько уровней сложности и нужно понять, до какой скорости разгоняться сходу, чтобы ТС было понятно. Судя по тому, что ТС неведома даже функция раскрытия скобок, можно ограничиться тем, что уже сказали мы (это были нулевой и первый). Далее нужно пойти по пути представления выражений в WL. И уже потом — вот про эти вот возможности новых версий WL (а может, и не они там нужны).

-- 22.02.2020, 20:35 --

arseniiv в сообщении #1440883 писал(а):
(Конечно придётся учитывать, что b c == b d придётся скорее всего преобразовывать в d -> b c / b. Это самая неудобная часть дела. Можно использовать Solve[b c == b d, d] (после определения того, что d — самая последняя в алфавитном порядке переменная в соотношении), но вдруг в более сложном случае Solve выдаст более одного ответа, брр. Хотя если соотношения всегда вида «сумма произведений переменных равна нулю / сумме произведений переменных, и всё линейно по каждой переменной», то ничего страшного на этом пути не возникнет.)
У меня чувство, что это ложный путь на костылях. Это всё делается более хитро и в то же время более элегантно. Но не могу сказать, как :facepalm:

 Профиль  
                  
 
 Re: Работа с символьными выражениями в Wolfram mathematica
Сообщение22.02.2020, 21:12 
Заслуженный участник


27/04/09
28128
Aritaborian в сообщении #1440899 писал(а):
arseniiv, здесь есть несколько уровней сложности и нужно понять, до какой скорости разгоняться сходу, чтобы ТС было понятно.
Да, конечно. Это я просто на будущее, не пропадать же мыслям.

Aritaborian в сообщении #1440899 писал(а):
И уже потом — вот про эти вот возможности новых версий WL (а может, и не они там нужны).
Да, я не предлагал использовать те тензорные штуки, даже не уверен что их можно прикрутить к делу. Это было скорее о том, что может быть в новых версиях есть и подходящий функционал, просто мне не проверить (ну, можно полезть в документацию в вебе, но я как-то не привык увы). :-)

Aritaborian в сообщении #1440899 писал(а):
У меня чувство, что это ложный путь на костылях. Это всё делается более хитро и в то же время более элегантно. Но не могу сказать, как :facepalm:
А. Ну тогда пожелаю, чтобы оно скорее там оформилось, интересно было бы сравнить. А я уже надумываю, может поэкспериментировать с конкретной реализацией. Правда она была бы с теми ограничениями, которые я выше описал, потому что не вижу, зачем более общие, и притом меньше представляю, что в таком случае делать.

 Профиль  
                  
 
 Re: Работа с символьными выражениями в Wolfram mathematica
Сообщение22.02.2020, 21:20 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
arseniiv в сообщении #1440909 писал(а):
А я уже надумываю, может поэкспериментировать с конкретной реализацией.
Почему бы и нет. Если у вас в голове что-то крутится, не откладывайте. Потом покажете, посмеёмся (над кем-нибудь из нас или просто вместе). Просто у меня в голове чёткое ощущение, что при решении подобных задач использовать, к примеру, Solve, это абсолютно неверный путь.

 Профиль  
                  
 
 Re: Работа с символьными выражениями в Wolfram mathematica
Сообщение22.02.2020, 21:22 
Заслуженный участник


27/04/09
28128
P. S. Вы таки будете смеяться:

Код:
In[12]:= Assuming[b c == b d && a c == 0, (a + b) (c + d) // Simplify // Expand]
Out[12]= a d + 2 b d

Если этого варианта будет недостаточно, подумаем опять.

 Профиль  
                  
 
 Re: Работа с символьными выражениями в Wolfram mathematica
Сообщение22.02.2020, 21:25 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
arseniiv, да, я даже посмеялся. Изначальная задача ТС была более глубока, но пускай он освоит хотя бы это. Спасибо!

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group