Доброе Утро !
Дурацкий вопрос : почему в Maple нельзя опускать знак умножения перед или между скобками ?
Например, что означает эта запись : (a+b)(a-b); ?
Чем она отличается от этой : (a+b)*(a-b); ?
В символьном виде они почти эквивалентны, а в числовом - нет...
(a+b)(a-b)
Модератор: Admin
-
- Сообщения: 90
- Зарегистрирован: Чт июн 22, 2006 7:29 pm
(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
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
Доброе Утро !
Речь, конечно же, идёт только о входном языке. Выходной оставим в покое. Я для этого специально выражения написал красным цветом и поставил в конце символ ;. Да и к какому языку может относиться фраза "нельзя опускать" ? ( Хотя, тоже вопрос интересный : можно ли рассчитывать на понимание, если задавать вопрос на том же языке, на котором получаешь ответы ? ;)
Вот я и спрашиваю : каков синтаксис в данном случае ?
1. Синтаксис допускает равное употребление знака умножения, либо пробела, либо пропуска знака операции умножения ? Тогда почему выражения со знаком умножения и с пропущенным знаком умножения имеют разный смысл ?
2. Синтаксис запрещает пропускать знак умножения ? Тогда почему не выдаётся сообщение о синтаксической ошибке ? Попробуйте ради интереса поставить два знака арифметических операций подряд :
3+*2;
В ответ получите :
Error, `*` unexpected
3. Синтаксис признаёт конструкцию (a+b)(a-b); правильной, но считает её отличной от (a+b)*(a-b); ? Тогда каков её смысл ?
Приведите примеры, где есть ещё такой синтаксис ?
Мне думается, что будут два варианта : либо знак умножения, или пробел, или их пропуск будут восприниматься одинаково - как операция умножения ( как, например, это допустимо в СКА Mathematica и Derive ); либо, в случае пропуска знака умножения, будет возникать синтаксическая ошибка с соответствующим сообщением ( как, например, это происходит в СКА GAP или некоторых трансляторах с Алгола 68 ).
Андрей М. писал(а):Вопрос действительно дурацкий!
> (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
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
Доброе Утро !
Извините, но я ваш ответ не понял. Если бы "переменные" 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));
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
FIDO-NET - 2:461/640.9 AKA 2:461/700.9
E-MAIL - mds at ire dot kharkov dot ua
Я не располагаю временем перед Новым годом комментировать различного рода недопонимания как по Maple, так и по символьной математике в целом. Просто приведу цепочку примеров, из которых легко будеи узреть суть ответа на ваш, повторяю, дурацкий вопрос.
> (8)(2);
8
> (a)(b);
a(b)
> a(b);
a(b)
> a(2);
a(2)
> 2(a);
2
В качестве подсказки см. организацию функциональных средств в Maple. Успехов в дальнейших пустых экспериментах. С Новым годом, господа!
> (8)(2);
8
> (a)(b);
a(b)
> a(b);
a(b)
> a(2);
a(2)
> 2(a);
2
В качестве подсказки см. организацию функциональных средств в Maple. Успехов в дальнейших пустых экспериментах. С Новым годом, господа!
Тоже буду краток. Все вытекает из следующего свойства Maple
<number>(); -> <number>
> 15.6(), 8(), 5+6*I ();
15.6, 8, 5 + 6 I
Также это верно и для NULL. Причем, в скобках вызовы не выполняются, а только упрощения выраженийНа это обратил внимание еще проф. Аладьев в Maple V и использовал его в весьма интересных контекстах.
<number>(); -> <number>
> 15.6(), 8(), 5+6*I ();
15.6, 8, 5 + 6 I
Также это верно и для NULL. Причем, в скобках вызовы не выполняются, а только упрощения выраженийНа это обратил внимание еще проф. Аладьев в Maple V и использовал его в весьма интересных контекстах.