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

Уведомление

Icon
Error

Вход


Опции
К последнему сообщению К первому непрочитанному
Offline 4007  
#1 Оставлено : 2 сентября 2014 г. 10:49:51(UTC)
4007

Статус: Newbie

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

Сказал «Спасибо»: 1 раз
Работаю в версии 0.97 (5346), Win XP SP3.
Смотрел в версии 0.95 и получил тоже самое.

См. прикрепленный файл
Вложение(я):
Ошибка в матрицах.sm (8kb) загружен 35 раз(а).
Пользователь 4007 прикрепил следующие файлы:
SMath.png

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

Offline genf  
#2 Оставлено : 2 сентября 2014 г. 12:08:57(UTC)
genf


Статус: Advanced Member

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

Сказал «Спасибо»: 311 раз
Поблагодарили: 7 раз в 6 постах
А зачем переопределяете уже определенную переменную?
Удалите и все будет верно.
Ученье свет!
Offline 4007  
#3 Оставлено : 2 сентября 2014 г. 12:41:44(UTC)
4007

Статус: Newbie

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

Сказал «Спасибо»: 1 раз
Спасибо за ответ, но:
1. В Руководстве не нашел ничего о недопустимости переопределения переменных.
2. См. прилагаемый файл

т.е. ответ неверный.

Отредактировано пользователем 2 сентября 2014 г. 14:27:14(UTC)  | Причина: Уточнение

Пользователь 4007 прикрепил следующие файлы:
SMath.png
Offline mikekaganski  
#4 Оставлено : 2 сентября 2014 г. 15:31:38(UTC)
mikekaganski


Статус: Advanced Member

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

Сказал «Спасибо»: 130 раз
Поблагодарили: 33 раз в 29 постах
Когда определяется переменная, её значение зависит от того, известны ли программе имена, входящие в её определение.
Если имя, входящее в определение, уже задано, подставляется его значение. Иначе остаётся само имя.

Например, в Вашем последнем примере, слева, R определено до того, как заданы i и j. Поскольку они были неизвестны, R определилась как

el(VV,i)+el(VV,j),

то есть как этакая замаскированная функция. Затем, определяя i и j и получая значение R, Вы фактически спрашиваете: "Чему равно выражение el(VV,i)+el(VV,j) при текущем значении i и j?"

А на момент, когда Вы определяете Z, i равно трём, а j - двум. Z вычисляется в момент определения и имеет значение

el(VV,3)+el(VV,2)≡55,

и затем, переопределяя i и j, Вы спрашиваете, чему равно el(VV,3)+el(VV,2) при текущих i и j.

Это можно увидеть во всплывающих подсказках, появляющихся при наведении курсора на определение.
Автор: 4007 Перейти к цитате
... т.е. ответ неверный.

Проявляйте уважение к тем, кто берёт на себя труд отвечать на Ваши вопросы. В данном случае не ответ неверный, а Ваши знания недостаточны. Вам дали не полный ответ, а направление поиска. Следовательно, неверен Ваш вывод.

Отредактировано пользователем 2 сентября 2014 г. 15:46:21(UTC)  | Причина: Не указана

С уважением,
Михаил Каганский
Offline 4007  
#5 Оставлено : 2 сентября 2014 г. 16:25:21(UTC)
4007

Статус: Newbie

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

Сказал «Спасибо»: 1 раз
Приношу извинения за некорректность.
Спасибо за разъяснения.
Но чуднО. И оказалось, что матрица здесь не причем: речь идет о логике работы программы.

Где об этом нюансе в Руководстве почитать?

И как объяснить это? (см.приложенное).
Это - нонсенс и караул!
Как я объясню моему инженеру, к-рый пользовался Excel'ем, что он что-то неверно записал?
Как быть? Как отключить это запоминание?

Отредактировано пользователем 3 сентября 2014 г. 4:38:04(UTC)  | Причина: Не указана

Пользователь 4007 прикрепил следующие файлы:
Image 1.png
Offline mikekaganski  
#6 Оставлено : 3 сентября 2014 г. 8:16:18(UTC)
mikekaganski


Статус: Advanced Member

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

Сказал «Спасибо»: 130 раз
Поблагодарили: 33 раз в 29 постах
Объяснить инженеру, "который пользовался Excel'ем", что это - не Excel - мне кажется, высшее техническое образование инженера должно давать ему возможность осознать этот факт. Если человек умеет выполнять свою работу только при условии, что все кнопочки и лампочки на инструменте расположены строго в определённом порядке - его квалификация нуждается в переоценке... И для него - повторюсь - есть всплывающие подсказки, где он может сразу увидеть, как именно программа восприняла его определение.

То, что Вы называете "нонсенсом" - как раз правильно! Именно так и должно быть, это логично, разумно и естественно. Переменная нужна для того, чтобы хранить ЧИСЛО до того момента, как туда не запишут другое ЧИСЛО. А вот наоборот (хранить не число, а выражение) - это особенность, которая может сбивать с толку, хотя и довольно интересная, если ей грамотно пользоваться.

Поясню на этом Вашем примере ещё раз.

В момент первого определения Z все входящие в определение переменные уже определены. Z может быть вычислена в этот момент полностью. Программа её успешно и вычисляет. Z получает окончательное значение, дальнейшие Ваши фокусы с другими переменными больше на неё не влияют.
То же самое и при переопределении.

То, чего, похоже, хотите Вы - т.е. чтобы все переменные запоминали не численное значение выражения, получающееся в месте определения, а только формулу, и пересчитывались каждый раз в том месте, где используются - сделало бы использование программы невозможным. Вы не смогли бы полагаться ни на одно значение, полученное с помощью любого выражения сложнее "X:=5". Вам бы приходилось в каждом месте, где Вы хотите получить результат, перепроверить все значения всех переменных, входящих в определение искомой величины, и все определения всех входящих туда переменных по цепочке: а не переопределили ли Вы где-то какую-нибудь величину случайно?

Например, рассмотрим вариант, когда Вы хотите запомнить значение некоего (i-го) элемента вектора V. Вы пишете:

A:el(V,i)

и со спокойной совестью надеетесь, что A хранит то, что там было. Затем Вы что-то делаете с вектором, и хотите сравнить текущее значение этого элемента с сохранённым. Как Вы думаете, Вам это удастся, если в A будет лежать не число, а формула (вида "найди текущее значение переменной i; теперь загляни в вектор V и найди там элемент с номером, равным вычисленному значению i" )?

А если нужно такое выражение-формула, то это называется функцией. Определите свои функции a(b,c):=b+c и пользуйтесь потом явно a(11,22)=33; a(22,44)=66; ... А если Вы хотите упрощённой записи (то есть без синтаксиса функции), то для Вас есть специальная возможность - определить выражение заранее, до определения входящих в него элементов. Но пользоваться этой возможностью нужно осознанно, понимая, что именно делаешь. Что под видом "переменной" на самом деле имеешь дело с замаскированной функцией.

Так что для не очень сообразительного инженера можно просто написать инструкцию: в зависимости от того, что Вам импонирует, либо "определять все входящие в выражение величины строго ДО того, как они будут использованы в формуле", либо (если хочется острых ощущений при отлавливании неочевидных ошибок) "определять все входящие в выражение величины строго ПОСЛЕ того, как они будут использованы в формуле".

Отредактировано пользователем 3 сентября 2014 г. 8:22:18(UTC)  | Причина: Не указана

С уважением,
Михаил Каганский
Offline 4007  
#7 Оставлено : 3 сентября 2014 г. 10:25:31(UTC)
4007

Статус: Newbie

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

Сказал «Спасибо»: 1 раз
Спасибо за столь развернутый ответ.
Из Вашего сообщения я понял, что противоядия нет. Ф-ции не слишком понятны для обывателя, да и обращение к ф-ции не очень читаемо.
Как-то исправило бы это положение, если бы ф-цию можно было вызывать типа:
f(t:=23, w:=84, Q:=B, ...)

ПС:
Так уж сложилось, что в общей массе инженеры у нас такие какие есть и другие вряд ли появятся. Я сам такой.
Эксперты, к-рые проверяют наши расчеты, ничем от нас не отличаются, т.е. не бог весть что и даже хуже.
Критиковать нас можно много, но толку - ноль.
Прилагаю расчет в ходе работы над к-рым эта проблема проявилась: может быть Вам будет любопытно.

Хотел бы сказать большое спасибо всем, кто работал и работает над этой программой. Молодцы!

Это замечательный программый продукт (ничуть не хуже MathCAD, а может быть и лучше) с хорошей поддержкой, отличный сайт и живой форум.
Значит всё можем! И это радует.

Но, наверное, реклама слабовата: в учебных заведениях (и не только) используют краденый MathCAD, а о SMath не слыхали вовсе.
Вложение(я):
Расчет-Экc-Бульдозера.doc (89kb) загружен 37 раз(а).
Offline mikekaganski  
#8 Оставлено : 3 сентября 2014 г. 10:54:50(UTC)
mikekaganski


Статус: Advanced Member

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

Сказал «Спасибо»: 130 раз
Поблагодарили: 33 раз в 29 постах
Автор: 4007 Перейти к цитате
Как-то исправило бы это положение, если бы ф-цию можно было вызывать типа:
f(t:=23, w:=84, Q:=B, ...)


А вы попробуйте Good Это как раз возможно.

Автор: 4007 Перейти к цитате
Прилагаю расчет в ходе работы над к-рым эта проблема проявилась: может быть Вам будет любопытно.


На самом деле было бы интересно увидеть файл .sm с этим расчётом, с указанием места, где Вам хотелось бы видеть что-то по-другому. Может быть, такая возможность есть, только другим путём...
С уважением,
Михаил Каганский
Offline 4007  
#9 Оставлено : 3 сентября 2014 г. 12:01:10(UTC)
4007

Статус: Newbie

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

Сказал «Спасибо»: 1 раз
Михаил, сообщаю следующее:

1=========================================
Цитата из Руководства пользователя,глава 8, раздел 8.1, подраздел "Проверка рабочего листа в SMath Studio":
----- начало цитаты -----------
SMath Studio просматривает рабочий лист также, как вы читаете его: слева направо и
от начала до конца. Это означает что переменная или функция, определенная посредством
команды “: =”, будет действовать везде ниже и правее от места определения.

...
(после рисунка 8.2)
Замечание: Вы можете определить переменную не раз в том же самом рабочем листе. SMath Studio просто использует первое определение для всех выражений ниже первого определения и выше второго. Для выражений ниже второго определения и выше третьего, SMath Studio использует второе определение, и так далее.
------- конец цитаты -----------
Это к предмету всего предыдущего разговора. В чем я не прав?

2=================================================
Пробую вызов ф-ции с именованными параметрами (скажу, что в Руководстве я этого не нашел)
F(A,С):=A+С
F(1,2)=3
F(A:=1,С:=2) <= добавить символ "=" не удается

3=================================================
sm-файл расчета пришлю обязательно, если получится его сделать.

4=================================================
Неудачно назвал тему. Хотел бы "Неясности с областью действия переменных"
Как это сделать - не знаю. Может быть подскажете?

С уважением, Анатолий.

Отредактировано пользователем 3 сентября 2014 г. 12:10:12(UTC)  | Причина: Не указана

Offline mikekaganski  
#10 Оставлено : 3 сентября 2014 г. 14:54:53(UTC)
mikekaganski


Статус: Advanced Member

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

Сказал «Спасибо»: 130 раз
Поблагодарили: 33 раз в 29 постах
По первому пункту - при чём тут неправота? Переопределяйте любую переменную, сколько нужно. На то она и переменная. Кто утверждал обратное? Просто каждое определение следует заданным в программе правилам. Их Вам объяснили. Их надо учитывать. Если следующее определение производится в других условиях, результат у него другой. Вот и всё.

Функция вида f(a:=1,b:=2)=... у меня прекрасно набирается. Тут нужно разбираться, может быть, что-то с настройками?
С уважением,
Михаил Каганский
Offline kasper  
#11 Оставлено : 3 сентября 2014 г. 15:11:44(UTC)
kasper


Статус: Advanced Member

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

Сказал «Спасибо»: 21 раз
Поблагодарили: 13 раз в 9 постах
Автор: mikekaganski Перейти к цитате

Функция вида f(a:=1,b:=2)=... у меня прекрасно набирается. Тут нужно разбираться, может быть, что-то с настройками?


Возможно, проблема в типе разделителя? (точка или точка с запятой, в зависимости от версии и настроек)
Offline 4007  
#12 Оставлено : 3 сентября 2014 г. 16:10:59(UTC)
4007

Статус: Newbie

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

Сказал «Спасибо»: 1 раз
1. По некоторым обстоятельствам предпочитаю portable версию программы.
Но имею 0.95 portable, у 0.97 ее почему-то нет.
0.97 работает с именованными параметрами у ф-ций нормально, 0.95 - глючит.
Спасибо большое за подсказку и подталкивание.

2. Прилагаю sm-файл, к-рый накропал по ранее приложенной методике.
Обратите внимание: в тексте формирование конечной матрицы (для меня это просто таблица) описано в 2-х областях.
Результат получен, но как-то коряво. Будем полировать: для пользователя большое значение имеет оформление и легкость восприятия. Это сложно.

3. Кстати, выяснился один глюк программы (0.95, в 0.97 еще не проверял):
рамкой выделяю кусок текста, содержащий Область, и пытаюсь его передвинуть.
Все двигается, кроме Области. Крайне неприятно.
П.С. по п.3: 0.97 тоже глючит, но несколько иначе. Трудно объяснить.

Отредактировано пользователем 3 сентября 2014 г. 16:17:40(UTC)  | Причина: Не указана

Вложение(я):
Выбросы от бульдозера.sm (44kb) загружен 37 раз(а).
Offline mikekaganski  
#13 Оставлено : 4 сентября 2014 г. 5:54:14(UTC)
mikekaganski


Статус: Advanced Member

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

Сказал «Спасибо»: 130 раз
Поблагодарили: 33 раз в 29 постах
Автор: 4007 Перейти к цитате
1. По некоторым обстоятельствам предпочитаю portable версию программы.
Но имею 0.95 portable, у 0.97 ее почему-то нет.

Посмотрите http://smath.info/wiki/SMath%20with%20Plugins.ashx
С уважением,
Михаил Каганский
Offline 4007  
#14 Оставлено : 4 сентября 2014 г. 8:20:57(UTC)
4007

Статус: Newbie

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

Сказал «Спасибо»: 1 раз
Спасибо. Но:
1. Это не совсем portable: требуется установка .NET
2. При запуске говорит о неподключенных плагинах. С этим не разбирался, но тоже нехорошо.
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.