(a+b)(a-b)

Форум пользователей пакета Maple

Модератор: Admin

Дима Масалов
Сообщения: 90
Зарегистрирован: Чт июн 22, 2006 7:29 pm

(a+b)(a-b)

Сообщение Дима Масалов » Ср дек 27, 2006 11:05 pm

Доброе Утро !

Дурацкий вопрос : почему в Maple нельзя опускать знак умножения перед или между скобками ?
Например, что означает эта запись : (a+b)(a-b); ?
Чем она отличается от этой : (a+b)*(a-b); ?
В символьном виде они почти эквивалентны, а в числовом - нет...
Dima Masalov
FIDO-NET - 2:461/640.9 AKA 2:461/700.9
E-MAIL - mds at ire dot kharkov dot ua

Андрей М.
Сообщения: 239
Зарегистрирован: Чт апр 21, 2005 3:15 pm

Сообщение Андрей М. » Ср дек 27, 2006 11:46 pm

Вопрос действительно дурацкий!

> (a+b)*(a-b);

(a + b)(a - b)

> (a+b)*(a-b)


Таков синтаксис языка, да и не только Maple. Результат же вычисления скопируйте снова в Input и опять получите исходное выражение. В Output ряд знаков операций для удобства не отображается.

aar
Сообщения: 100
Зарегистрирован: Чт авг 10, 2006 11:27 am

Сообщение aar » Чт дек 28, 2006 10:42 am

Что означает запись (a+b)(c+d) выяснить несложно:
> (a+b)(c+d);
a(c + d) + b(c + d)
Т.е. a, b понимаются как неизвестные операторы, да еще и дистрибутивные.

Дима Масалов
Сообщения: 90
Зарегистрирован: Чт июн 22, 2006 7:29 pm

Сообщение Дима Масалов » Сб дек 30, 2006 10:49 pm

Доброе Утро !

Андрей М. писал(а):Вопрос действительно дурацкий!

> (a+b)*(a-b);

(a + b)(a - b)

> (a+b)*(a-b)


Таков синтаксис языка, да и не только Maple. Результат же вычисления скопируйте снова в Input и опять получите исходное выражение. В Output ряд знаков операций для удобства не отображается.


Речь, конечно же, идёт только о входном языке. Выходной оставим в покое. Я для этого специально выражения написал красным цветом и поставил в конце символ ;. Да и к какому языку может относиться фраза "нельзя опускать" ? ( Хотя, тоже вопрос интересный : можно ли рассчитывать на понимание, если задавать вопрос на том же языке, на котором получаешь ответы ? ;)

Андрей М. писал(а):Таков синтаксис языка, да и не только Maple.


Вот я и спрашиваю : каков синтаксис в данном случае ?
1. Синтаксис допускает равное употребление знака умножения, либо пробела, либо пропуска знака операции умножения ? Тогда почему выражения со знаком умножения и с пропущенным знаком умножения имеют разный смысл ?
2. Синтаксис запрещает пропускать знак умножения ? Тогда почему не выдаётся сообщение о синтаксической ошибке ? Попробуйте ради интереса поставить два знака арифметических операций подряд :
3+*2;
В ответ получите :
Error, `*` unexpected
3. Синтаксис признаёт конструкцию (a+b)(a-b); правильной, но считает её отличной от (a+b)*(a-b); ? Тогда каков её смысл ?

Андрей М. писал(а):Таков синтаксис языка, да и не только Maple.


Приведите примеры, где есть ещё такой синтаксис ?
Мне думается, что будут два варианта : либо знак умножения, или пробел, или их пропуск будут восприниматься одинаково - как операция умножения ( как, например, это допустимо в СКА Mathematica и Derive ); либо, в случае пропуска знака умножения, будет возникать синтаксическая ошибка с соответствующим сообщением ( как, например, это происходит в СКА GAP или некоторых трансляторах с Алгола 68 ).
Dima Masalov

FIDO-NET - 2:461/640.9 AKA 2:461/700.9

E-MAIL - mds at ire dot kharkov dot ua

Дима Масалов
Сообщения: 90
Зарегистрирован: Чт июн 22, 2006 7:29 pm

Сообщение Дима Масалов » Сб дек 30, 2006 10:50 pm

Доброе Утро !

aar писал(а):Что означает запись (a+b)(c+d) выяснить несложно:
> (a+b)(c+d);
a(c + d) + b(c + d)
Т.е. a, b понимаются как неизвестные операторы, да еще и дистрибутивные.


Извините, но я ваш ответ не понял. Если бы "переменные" a и b были известны, то это была бы уже не символьная математика, а численные вычисления. :-)
Что здесь означает слово "дистрибутивный", я не знаю.

Вы смелый человек ? Вас не пугают авантюрные эксперименты ? Тогда решитесь поставить численный эксперимент - выполните эти присваивания :

a:=5; b:=3; c:=2; d:=1;

И потом ещё раз выполните ваше выражение. Я надеюсь, вам, как и Андрею М., будет несложно объяснить мне полученный результат.
А заодно и результат этого эксперимента :

(5+3)*(5-3);
(5+3)(5-3);

А также, как он согласуется с "символьным" ( в случае, если a и b не имеют значений ) :

expand((a+b)*(a-b));
expand((a+b)(a-b));
Dima Masalov

FIDO-NET - 2:461/640.9 AKA 2:461/700.9

E-MAIL - mds at ire dot kharkov dot ua

Андрей М.
Сообщения: 239
Зарегистрирован: Чт апр 21, 2005 3:15 pm

Сообщение Андрей М. » Сб дек 30, 2006 11:06 pm

Я не располагаю временем перед Новым годом комментировать различного рода недопонимания как по Maple, так и по символьной математике в целом. Просто приведу цепочку примеров, из которых легко будеи узреть суть ответа на ваш, повторяю, дурацкий вопрос.

> (8)(2);

8

> (a)(b);

a(b)

> a(b);

a(b)

> a(2);

a(2)

> 2(a);

2

В качестве подсказки см. организацию функциональных средств в Maple. Успехов в дальнейших пустых экспериментах. С Новым годом, господа!

xyz
Сообщения: 202
Зарегистрирован: Чт мар 24, 2005 3:42 pm

Сообщение xyz » Вс дек 31, 2006 12:07 am

Тоже буду краток. Все вытекает из следующего свойства Maple


<number>(); -> <number>
> 15.6(), 8(), 5+6*I ();

15.6, 8, 5 + 6 I

Также это верно и для NULL. Причем, в скобках вызовы не выполняются, а только упрощения выраженийНа это обратил внимание еще проф. Аладьев в Maple V и использовал его в весьма интересных контекстах.

aar
Сообщения: 100
Зарегистрирован: Чт авг 10, 2006 11:27 am

Сообщение aar » Вт янв 02, 2007 12:27 pm

И еще примерчики для демострации:
> a := (x) -> x:
> b := (x) -> abs(x):
> (a+b+1)(c+d);

c + d + |c + d| + 1

> a := cos:
> b := sin:
> (a+b)(c+d);

cos(c + d) + sin(c + d)