Русскоязычный форум закрыт из-за отсутствия активности (доступен только для чтения).
Пожалуйста, пользуйтесь англоязычной его версией. Приносим извинения за неудобства
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

Вход


Опции
К последнему сообщению К первому непрочитанному
Offline mkraska  
#1 Оставлено : 10 ноября 2012 г. 20:56:52(UTC)
mkraska


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 27.10.2012(UTC)
Сообщений: 73
Германия

Сказал(а) «Спасибо»: 397 раз
Поблагодарили: 45 раз в 35 постах
В прикрепленном файле пример где различные формулы дают различжые результаты но печатаются одинаково. Если сумма возвышается в степень, тогда необходима скобка чтобы выражение было однозначное.
Вложение(я):
Summen.sm (13kb) загружен 20 раз(а).
Пользователь mkraska прикрепил следующие файлы:
Summen.png
Martin Kraska

Неоффицальная портативная версия SMath с дополнениями http://smath.info/wiki/SMath%20with%20Plugins.ashx

Wanna join the discussion?! Login to your Форум проекта SMath forum account. Новые регистрации запрещены.

Offline mikekaganski  
#2 Оставлено : 11 ноября 2012 г. 15:07:23(UTC)
mikekaganski


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 19.03.2012(UTC)
Сообщений: 112
Мужчина
Российская Федерация
Откуда: Khabarovsk, Russia

Сказал «Спасибо»: 130 раз
Поблагодарили: 33 раз в 29 постах
Автор: mkraska Перейти к цитате
Автор: mikekaganski Перейти к цитате

Я совершенно согласен, что применённая запись формулы была не самой удачной. Мне следовало бы не лениться и не торопиться. Однако:
1. Формула была введена так, чтобы можно было просмотреть её "исходный код" (и топикстартер продемонстрировал, что он может это сделать, когда процитировал формулу в своём ответе).
2. Несмотря на неочевидность, здесь нет нарушения требований синтаксиса математики. А при вводе всё достаточно очевидно - программа подчёркивает выражение, над которым производятся действия.


Возражаюсь. Не знаю более опасного нарушения требований синтаксиса математики чем неоднозначность. Ведь это вызывает неочевидные ошибки. Если однозначность только получается с помощю исходного кода или контекстного меню (как в другом серьёзном случая неоднозначности: оптимизация численная/символьная) - тогда SMath теряет смысль. Кому не хочется прямо видеть что и как вычисляется, тому Excel.

Если SMath не стремился к тому что любой лист доходчивый и однозначный и для не-SMathчиков (об очевидности уже не речь идет), я больще не мог бы его рекомендовать студентам. Дай бог (или Андрей) что не зря работа над учебником... Иначе пришлось бы стартовать проект для строения интерфейса в виде Mathcad/SMath для Maxima.

Меня не пугают недостатки нынешнего уровня SMath (наоборот, считаюсь ценительем), а что может быть ожидание однозначного формата считается вопросом вкуса.


(Пусть дискуссия идёт здесь, в топике, специально созданном для этой проблемы)

Я с Вами согласен. И в качестве примера, не вызывающего возражений, приведу возведение в степень: когда в SMath видим выражение

a^c/b
не возникает сомнений, что именно возведено в степень: в данном случае числитель. В случае возведения всей дроби в степень скобки будут добавлены автоматически:

{a/b}^c
Но всё же просто заставить программу городить скобки по любому поводу было бы тоже неправильно. Возьмём суммирование. Аналогично предыдущему примеру, применим эту операцию к дроби:

sum(a/b;a;1;n)
Здесь всё прекрасно видно и без скобок; лишние скобки в этом случае будут только загромождать выражение в ущерб ясности. А со сложением не всё так гладко:

sum(a+b;a;1;n) vs sum(a;a;1;n)+b
В первом случае a+b под знаком суммы, во втором результат суммирования a сложен с b. А ведь вариант записи интегралов, сумм и произведений сложных подынтегральных выражений без скобок весьма распространён и общепринят. И формализовать такие неоднозначности можно разве что "матрицей скобок", где для каждой пары операций будет проставлено, требуются скобки или нет. И то всем не угодишь... Может быть, лучше требовать аккуратности от автора формулы? (Камень в мой огород.) Хотя это не выход, заранее соглашусь.
С уважением,
Михаил Каганский
thanks 1 пользователь поблагодарил mikekaganski за этот пост.
mkraska оставлено 11.11.2012(UTC)
Offline mkraska  
#3 Оставлено : 11 ноября 2012 г. 17:47:57(UTC)
mkraska


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 27.10.2012(UTC)
Сообщений: 73
Германия

Сказал(а) «Спасибо»: 397 раз
Поблагодарили: 45 раз в 35 постах
Автор: mikekaganski Перейти к цитате
А со сложением не всё так гладко:

sum(a+b;a;1;n) vs sum(a;a;1;n)+b
В первом случае a+b под знаком суммы, во втором результат суммирования a сложен с b. А ведь вариант записи интегралов, сумм и произведений сложных подынтегральных выражений без скобок весьма распространён и общепринят. И формализовать такие неоднозначности можно разве что "матрицей скобок", где для каждой пары операций будет проставлено, требуются скобки или нет. И то всем не угодишь... Может быть, лучше требовать аккуратности от автора формулы?


Матрица скобок действительно может быть хорошое решение. Пока вероятно надо согласиться на то, как её запольнять. Пусть различаем где
  • обязательo
  • можно
  • нельзя
ставить скобки чтобы намерение исходного кода была правилно изображено. Это определяет свободу автора

С исходным кодом sum(((R.2/j)^{-1}),j,1,m)^{-1} представление

sum(((R.2/j)^{-1}),j,1,m)^{-1}

не только неоднозначное а просто неправилное. Внешный степень по-видумому ничем не отличается от внутренним но в исходном коде внутренный относится к дроби в сумме а внешний к сумме. То есть, матрица скобок для "суммы в степен" должна указать "обязательo"

Также нужно различать функции и операторы.
Функция всегда покажет границы аргумента/-ов скобками. Эти скобки надо воспринимать как часть имени. Только с этим соглашением выражение sin(x)^2 не может читаться как sin(x^2).

Такое соглашение для операторов суммы и произведения (и вообще префикс-операторов) очевидно не существует. Если такой оператор применяется как операнд постфикс-оператора или как первый операнд инфиксного оператора, тогда оператор и его операнд обязательно надо скобить.

Кстати, иногда SMath это уже знает. Попробуйте, напр. применять постфикс-оператор факультет к сумме

sum(a,a,1,5).
Просто не удаётся пока не ставите целое выражение в скобки.

(sum(a,a,1,5))!

Так по моему можно поступать и в общем случае.

Впольне возможно распространить это к функциям с одним аргументом. Тогда их можно писать без скобек точно там где это и возможно для префикс-операторов.
Martin Kraska

Неоффицальная портативная версия SMath с дополнениями http://smath.info/wiki/SMath%20with%20Plugins.ashx
Offline mikekaganski  
#4 Оставлено : 12 ноября 2012 г. 1:09:46(UTC)
mikekaganski


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 19.03.2012(UTC)
Сообщений: 112
Мужчина
Российская Федерация
Откуда: Khabarovsk, Russia

Сказал «Спасибо»: 130 раз
Поблагодарили: 33 раз в 29 постах
Автор: mkraska Перейти к цитате
Впольне возможно распространить это к функциям с одним аргументом. Тогда их можно писать без скобек точно там где это и возможно для префикс-операторов.


Для функций это было бы приятно, но тогда уж следовало бы реализовать общепринятую нотацию: sin x² для квадрата аргумента и sin²x для квадрата синуса. И в этом случае нынешняя нотация sin(x+y)² должна означать совершенно противоположное, чем сейчас. Иначе снова появится визуальная неоднозначность.

Наверное, я чего-то не понимаю, но почему Вы считаете сумму и произведение префиксными операторами? Это всё же двухместные операторы, в отличие от, скажем, натурального логарифма, или (с натяжкой) от возведения в степень, если не считать показатель степени операндом.
С уважением,
Михаил Каганский
Offline mkraska  
#5 Оставлено : 12 ноября 2012 г. 22:50:13(UTC)
mkraska


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 27.10.2012(UTC)
Сообщений: 73
Германия

Сказал(а) «Спасибо»: 397 раз
Поблагодарили: 45 раз в 35 постах
Автор: mikekaganski Перейти к цитате

sin x² для квадрата аргумента

ok, если считать возведение в степень более приоритетным чем примениение функции к аргументу. Тогда возведение в степень синуса надо писать (sin x)². И правда, sin(x+y)² означало бы противоположное, чем сейчас. Так по моему можно поступать с суммой и с произведением (sum, product).

Если наоборот, т.е. примениение функции к аргументу более приоритетно чем возведение в степень, тогда синус квадрате пишется sin (x² ) и квадрат синуса sin x². sin(x+y)² означало бы то же самое как сейчас. Так наверно хорошо для остальных функциях.

Если не хочется принять разные приоритеты тогда скобки нужны в обеих случаях: sin (x² ), (sin x)². sin(x+y)² было бы неоднозначно. Пришлось бы писать (sin(x+y))² или sin((x+y)² )

Бо всех примерах все показанные скобки обязательные. Мне кажется что громадная матрица скобек не нужна, только нужен список приоритетности и некоторые правила для скобек.

Автор: mikekaganski Перейти к цитате

Наверное, я чего-то не понимаю, но почему Вы считаете сумму и произведение префиксными операторами? Это всё же двухместные операторы, в отличие от, скажем, натурального логарифма, или (с натяжкой) от возведения в степень, если не считать показатель степени операндом.

двухместные? По счёту черных квадратчиков sum(1) одноместный оператор, а sum(4) и product(4) четырёхместные операторы. Префиксным оператором назвал т.к. оператор перед операндом, несмотря на то что оператор может содержать переменные части (но эти от неоднозначности не страдают).

Отредактировано пользователем 13 ноября 2012 г. 2:43:55(UTC)  | Причина: Не указана

Martin Kraska

Неоффицальная портативная версия SMath с дополнениями http://smath.info/wiki/SMath%20with%20Plugins.ashx
Offline mikekaganski  
#6 Оставлено : 12 ноября 2012 г. 23:55:26(UTC)
mikekaganski


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 19.03.2012(UTC)
Сообщений: 112
Мужчина
Российская Федерация
Откуда: Khabarovsk, Russia

Сказал «Спасибо»: 130 раз
Поблагодарили: 33 раз в 29 постах
Автор: mkraska Перейти к цитате
двухместные? По счёту черных квадратчиков sum(1) одноместный оператор, а sum(4) и product(4) четырёхместные операторы.


Сорри, надо больше спать... Blush
С уважением,
Михаил Каганский
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.