Smath studio как пользоваться


Глава 8. Вычисление в SMath Studio

8.1 Определение переменных и присваивание им значений

Когда Вы печатаете выражение на рабочем листе, Вы обычно делаете одну из двух вещей:

Мы представляем эти темы в этом и следующем разделе. См. “Численное значение выражения” для деталей о численном значении.

Определение переменных

Определение переменной позволяет задать значение переменной в области рабочего листа, находящейся ниже и справа от места определения. Чтобы определить переменную, выполните три шага:

1. Напечатайте имя переменной, которая будет определена. Глава 4, “Работа с математикой,” содержит описание правильных имен переменной.

2. Нажмите клавишу двоеточие (:), или нажмите значок Арифметика. Появляется символ определения (: =) и метка-заполнитель, расположенная справа от символа определения.

3. Напечатайте выражение, чтобы закончить определение. Это выражение может включать числа и любые ранее определенные переменные и функции.

Левая сторона “: =” может содержать любое следующее:

Встроенные переменные

SMath Studio включает предопределенные или встроенные переменные. Предопределенные переменные могут иметь обычное значение, как  и e, или использоваться в качестве системных переменных, чтобы управлять работой SMath Studio. См. “Предопределенные переменные” в приложениях для списка встроенных переменных в SMath Studio.

Замечание

В дополнение к встроенным переменным, описанным здесь, SMath Studio рассматривает названия всех встроенных единиц как предопределенные переменные. См. раздел “Единицы и измерения”.

Хотя у предопределенных переменных SMath Studio уже есть значения, когда вы запускаете SMath Studio, вы можете изменить их значения. Например, если Вы хотите использовать переменную, названную e со значением отличным от того, которое предварительно задал SMath Studio, переопределите это значение. Переменная e будет иметь   новое значение всюду в рабочем листе ниже и направо от места переопределения.

Численное значение выражения

Чтобы получить значение выражения в цифровой форме, выполните следующие действия:

1. Напечатайте выражение, содержащее любую верную комбинацию чисел, переменных, и функций. Все переменные или функции, входящие в это выражение, должны быть определены ранее в рабочем листе.

2. Нажмите клавишу “=”, или нажмите значок Арифметика. SMath Studio вычисляет значение выражения и показывает его после  знака равенства.

Рисунок 8.1 показывает некоторые результаты, вычисленные из предварительно определенных переменных.

Рис. 8.1 : Вычисления, основанные на простых определенных переменных.

Совет

Всякий раз, когда Вы вычисляете значение выражения, SMath Studio показывает финальную метку-заполнитель в конце уравнения. Вы можете использовать эту метку-заполнитель для задания размерности, как объяснено в пункте “Работа с результатами”. Как только Вы щелкаете вне области, SMath Studio скрывает метку-заполнитель.

Проверка рабочего листа в SMath Studio

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

Рисунок 8-2 показывает примеры того, как размещение уравнений в рабочем листе влияет на вычисление результатов. В первом случае, когда вычисление суммы x и y выдвинуто на передний план, указано, что они не определены (SMath Studio показывает их красным цветом на экране). Это произошло потому, что определения для x и y лежат ниже того места, где они используются. Поскольку SMath Studio просматривает сверху донизу, когда он добирается до первого уравнения, он не знает значения x и y.

Рис. 8.2 SMath Studio оценивает уравнения сверху вниз на рабочем листе. Неопределенные переменные выдвинуты на первый план.

Замечание

Вы можете определить переменную не раз в том же самом рабочем листе. SMath Studio просто использует первое определение для всех выражений ниже первого определения и выше второго. Для выражений ниже второго определения и выше третьего, SMath Studio использует второе определение, и так далее.

Переменные, изменяющиеся в диапазоне

Итеративные процессы в рабочих листах SMath Studio зависят от переменных, изменяющихся в диапазоне. За исключением пути ее определения, переменная диапазона выглядит точно так же, как обычная переменная. Различие - то, что обычная переменная принимает только одно значение. Переменная, изменяющаяся в диапазоне, с другой стороны, берет диапазон значений, отделенных равномерными шагами. Например, вы можете определить переменную, изменяющуюся в диапазоне, чтобы пройти от -4 до 4 с шагом 2. Если вы теперь используете эту переменную, изменяющуюся в диапазоне в выражении, SMath Studio оценивает это выражение пять раз, каждый раз для каждого значения, взятого для переменной, изменяющейся в диапазоне.

Переменные, изменяющиеся в диапазоне, крайне важны для максимально полной эксплуатации способностей SMath Studio. Этот раздел показывает, как определить и использовать переменные, изменяющиеся в диапазоне, чтобы выполнить итерацию. Для описания более продвинутых повторяющихся операций, сделанных благодаря возможностям  программных операторов в SMath Studio, обратитесь к главе 15, "Программирование".

Определение и использование переменных, изменяющихся в диапазоне

Чтобы определить переменную диапазона, напечатайте имя переменной, сопровождаемое диапазоном значений. Например, вот как определить переменную j в пределах от от 0 до 15 с шагом 1

1. Напечатайте j и затем нажмите клавишу  двоеточия (:), или нажмите значок Арифметика. Пустая  метка-заполнитель указывает, что SMath Studio ожидает определение для j. В этой точке SMath Studio не знает, должна ли j быть обычной переменной или переменной диапазона

2. Нажмите r. В выпадающем окне выберите строку range (2). Это говорит SMath Studio, что Вы определяете переменную диапазона.

3. Нажмите клавишу Tab. SMath Studio показывает две метки-заполнителя, разделенные символом “..”.

4. Закончите определение переменной диапазона, печатая 1 и 15 в первой и второй метке-заполнителе соответственно.

Это определение указывает, что j теперь берет значения 1,2,3..15. Чтобы определить переменную, изменяющуюся в диапазоне, которая изменяется с шагом отличным от 1, см. раздел “Типы диапазонов”.

Как только вы определяете переменную, изменяющуюся в диапазоне, она принимает  свой полный спектр значений каждый раз, когда вы используете ее. Если Вы используете переменную, изменяющуюся в диапазоне, например в уравнении, SMath Studio оценивает это уравнение для каждого значения переменной диапазона.

Вы должны определить переменную, изменяющуюся в диапазоне точно как показано выше. Должны быть:

Замечание

Вы можете определить другую переменную, используя переменную, изменяющуюся в диапазоне. Например, если определив j как показано выше, вы теперь определяете i:=j+1. SMath Studio создаст изменяющуюся в диапазоне переменную i, прибавив 1 к каждому значению изменяющейся в диапазоне переменной j.

Чтобы понять, как SMath Studio вычисляет с использованием переменных, изменяющимися в диапазоне, имейте в виду этот основной принцип:

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

Если Вы используете две или больше переменных, изменяющихся в диапазоне в уравнении, SMath Studio оценивает уравнение каждый раз для каждого значения каждой переменной, изменяющейся в диапазоне.

Совет

SMath Studio занимает много времени, чтобы вычислить уравнения с ранжированными выражениями, так как может быть много вычислений для каждого уравнения. В то время как SMath Studio производит вычисления, указатель мыши изменяет свою внешний вид. Чтобы изучить, как прервать происходящее вычисление, см. “Прерывания вычислений”.

Типы диапазонов

Определение j в предыдущем разделе, в пределах от от 1 до 15, является примером самого простого типа определения диапазона. Но SMath Studio разрешает задавать переменные, изменяющиеся в диапазоне, со значениями в пределах от одного любого значения к любому другому значению, используя любое постоянное приращение или декремент.

Чтобы определить переменную, изменяющуюся в диапазоне с величиной шага, отличной от 1, проделайте следующие действия:

1. Напечатайте j и затем нажмите клавишу  двоеточия (:), или нажмите значок Арифметика. Пустая  метка-заполнитель указывает, что SMath Studio ожидает определение для j. В этой точке SMath Studio не знает, должна ли j быть обычной переменной или переменной диапазона

2. Нажмите r. В выпадающем окне выберите строку range (3). Это говорит SMath Studio, что Вы определяете переменную диапазона.

3. Нажмите клавишу Tab. SMath Studio показывает три метки-заполнителя, первая и вторая разделены “;”, вторая и третья разделенные символом “..”.

4. Закончите определение переменной диапазона, печатая 1, 1.1 и 2 в первой, второй и третьей метке-заполнителе соответственно.

В этом определении диапазона:

Замечание

Вы можете использовать произвольные скалярные выражения при  определении диапазона. Однако, эти значения должны всегда быть вещественными числами. Также отметьте, что, если вы используете дробное приращение для переменной диапазона, вы не сможете использовать эту переменную, изменяющуюся в диапазоне, в качестве индекас, потому что индексы должны быть целыми числами.

8.2 Определение функций и присваивание им значений

Как описано в главе 10, “Встроенные Функции,” у SMath Studio есть обширное встроенное множество функции. Вы можете расширить диапазон, добавив к встроенным функциям SMath Studio ваши собственные функции, определенные вами.

Вы определяете функцию почти таким же способом, которым вы определяете переменную. Имя функции слева, символ определения идет в середине, и выражение идет справа. Основное различие – то, что имя включает список параметров. Пример ниже показывает, как определить функцию, названную dist(x, y), который возвращает расстояние между точкой с координатами (x, y) и началом координат.

Напечатайте такую функцию:

1. Напечатайте имя функции:

2. Напечатайте левую круглую скобку, сопровождаемую одним или более именами, отделенными запятыми. Закончите этот список параметров, печатая правую круглую скобку

Замечание

Это не имеет никакого значения, были ли имена в списке параметров определены или использовались в другом месте в рабочем листе. Все, что важно, - эти аргументы должны быть именами. Они не могут быть более сложными выражениями.

3. Нажмите клавишу двоеточия (:) или нажмите значок Арифметика. Вы увидите символ разделения (:=)

4. Напечатайте выражение, чтобы определить функцию. В этом примере выражение возводит в степень только имена из списка параметров. Вообще, выражение может содержать также любые ранее определенные функции и переменные.

Как только вы определили функцию, вы можете использовать ее где угодно ниже и направо от определения, как вы использовали бы переменную.

Когда вы вычисляете выражение, содержащее функцию, как показано в рисунке 8.3, SMath Studio:

  1. вычисляет аргументы, которые вы помещаете между круглыми скобками;

  2. заменяет фиктивные аргументы в определении функции, которые вы помещаете между круглыми скобками, фактическими аргументами;

  3. производит все арифметические действия для определенной пользователем функции;

  4. возвращает результат как значение функции.

Рисунок 8.3 Функция, определенная пользователем, для вычисления расстояния от начала координат до заданной точки

Замечание

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

Замечание

Определенные пользователем имена функции учитывают регистр. Функция f(x) отличается от функции F(x). Встроенные функции SMath Studio так же чувствительны к регистру, т. е. запись SIN(x) не будет интерпретирована как вызов встроенной функции определения синуса sin(x).

Переменные в функциях, определенных пользователем

Когда Вы определяете функцию, SMath Studio не должен даже знать типы аргументов - являются ли аргументы скалярами, векторами, матрицами, и так далее. Только, когда SMath Studio вычисляет значение функции, он должен знать типы аргумента.

Однако, если в определении функции Вы используете имя переменной, которое не находится в списке параметров, Вы должны определить это имя переменной выше определения функции. Значение этой переменной в то время, когда вы вычисляете значение функции, тогда, становится постоянной частью функции. Это иллюстрировано на рис. 8.4.

Если Вы хотите, чтобы функция зависела от значения переменной, Вы должны включать ту переменную как аргумент. В противном случае SMath Studio использует только постоянное значение переменной в той точке в рабочем листе, где функция определена.

8.3 Единицы измерения и размерности

Когда Вы запускаете SMath Studio, полная система единиц измерения доступна для ваших вычислений. Вы можете рассматривать эти единицы точно так же как встроенные переменные. Чтобы назначить единицы измерения на число или выражение, только умножьте эту переменную на эту единицу измерения.

SMath Studio обозначает большинство единиц их общими сокращениями. SMath Studio использует единицы от системы единицы СИ (также известный как Международная система Единиц) в результатах любых вычислений, но вы можете использовать любые поддерживаемые единицы, которые вы желаете, в создании ваших выражений. Смотрите “Отображение единиц измерений в результатах” для получения дополнительной информации.

Рис. 8.4 Значение пользовательской функции зависит от ее аргументов

Для примера, напечатайте следующие выражения (здесь “Tab” – нажатие клавиши Tab):

mass:75*kg “Tab”

acc:100*m “Tab” /s “Tab” ^2

accg:9.8*m “Tab” /s “Tab” ^2

F:mass*(acc+accg)

F=

Рисунок 8.5 показывает, как эти уравнения появляются в рабочем листе.

Рис. 8.5 Выражения с использованием единиц измерения

Совет

Если Вы определяете переменную, которая состоит из числа, сопровождаемого немедленно единицей измерения, вы можете опустить символ умножения; SMath Studio вставляет очень небольшой пробел и рассматривает умножение как подразумевающееся.

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

1. Щелкните в пустой метке-заполнителе и выберите Единица измерения из меню Вставка, или нажмите значок Вставить единицу измерения.

2. Список справа показывает единицы измерения, встроенные в SMath Studio. Когда в колонке "Размерность" выбран пункт "Все", список всех доступных встроенных единиц измерения представлен в колонке "Единица измерения".

3. В случае необходимости, используйте колонку "Размерность", чтобы выбрать  только те единицы, соответствующие нужному физическому свойству. Это облегчает нахождение единицы измерения или видеть, какой выбор является соответствующим. Можно так же воспользоваться полем "Быстрый поиск"

4. В правом списке, щелкните два раза по единице измерения, которую вы хотите вставить, или щелкните по единице измерения, которую вы хотите вставить и затем щелкаете "Вставить". SMath Studio вставляет эту единицу измерения в пустую метку-заполнитель.

Замечание

SMath Studio выполняет некоторый размерный анализ, пытаясь сопоставить единицы измерения, отобранные вами, с одним из общих физических свойств в колонке "Размерность". Если он найдет соответствие, то Вы будете видеть, что все встроенные соответствующие физическому свойству единицы измерения, будут выдвинуты на первый план в правом списке. Если ничто не соответствует, SMath Studio просто перечисляет все доступные встроенные единицы измерения.

Проверка размерностей

Всякий раз, когда вы входите в выражение, содержащее единицы измерения, SMath Studio проверяет его на соответствие размерностей. Если вы прибавляете или вычитаете значения с несовместимыми единицами, или нарушаете другие принципы размерного анализа, SMath Studio показывает соответствующее сообщение об ошибке.

Например, предположите, что вы определили acc  вместо . Тогда acc находится в единицах измерения скорости, а accg находится в единицах измерения ускорения и неуместно сложить их значения. Когда вы пытаетесь сделать так, SMath Studio показывает сообщение об ошибке (см. рис.8.6).

Другие ошибки в единицах измерения обычно вызваны следующим:

Рис. 8.6 Результат проверки размерностей

8.4 Работа с результатами

Форматирование результата

Способ, которым SMath Studio показывает числа (число десятичных разрядов, или использовать i или j для комплексных чисел, и так далее) называют форматом результата. Вы можете установить формат результата для всего рабочего листа.

Диалоговое окно Опции

Диалоговое окно Опции вызывается при выборе пункта Опции меню Сервис. Внешний вид окна показан на рис. 8.7. Данное диалоговое окно содержит ряд элементов, использующихся для форматирования результатов.

Рис. 8.7 Диалоговое окно Опции

Комплексные результаты

Комплексные числа могут возникнуть в результатах, если вы вводите выражение, которое содержит комплексное число. Даже у выражения SMath Studio, которое возводит в степень только вещественные числа, может быть комплексное значение. Например, если вы напишете , то SMath Studio вернет вам i.

Замечание

Когда доступны комплексные числа, много функций и операторов, о которых мы думаем, что они возвращают единственный результат, становятся многозначными. Вообще, когда функция или оператор многозначны, SMath Studio возвращает основное значение: значение, имеющий наименьший положительный угол относительно положительной действительной оси в комплексной плоскости. Например, когда рассчитываем  и в диалоговом окне Опция для элемента Ответ(множества) выбрана опция Стандарт, SMath Studio возвращает  несмотря на то, что мы обычно думаем, что кубический корень из -1 равен -1. Это происходит потому, что число  имеет угол только 60 градусов относительно положительной действительной оси. Число -1, с другой стороны, имеет угол 180 градусов относительно положительной действительной оси. Если в диалоговом окне Опция для элемента Ответ(множества) выбрана опция Авто, то SMath Studio возвращает -1.

Копирование и вставка числовых результатов

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

Чтобы скопировать единственное число, находящееся справа от знака равенства, нужно:

  1. Нажмите на результат справа от знака равенства. Это помещает курсор в результате.

  2. Выделите выбранный результат.

  3. Выберите пункт Копировать из меню Правка или нажмите значок

  4. Щелкните мышью там, где вы хотите вставить результат. Если вы вставляете в другое приложение, выбираете Вставить из меню Правка этого приложения. Если вы вставляете на рабочий лист SMath Studio, выбираете Вставить из меню Правка SMath Studio или щелкаете на значок

Когда вы вставляете числовой результат в рабочий лист SMath Studio, это появляется как:

8.5 Управление вычислениями

SMath Studio имеет автоматический способ вычислений. Это означает, что SMath Studio обновляет результаты в окне рабочего листа автоматически при каких-либо изменениях на рабочем листе.

Вычисление в автоматическом режиме

Вот то, как SMath Studio работает в автоматическом способе:

Вот что происходит, когда вы обрабатываете определение в автоматическом способе, щелкая вне области уравнения:

Всякий раз, когда SMath Studio требуется время, чтобы закончить вычисления, указатель мыши изменяет свою внешность, и слово "Вычисление" появляется на линии сообщения. Это может произойти, когда Вы входите или вычисляете уравнение.

Если SMath Studio вычисляет выражение, он окружает его зеленым прямоугольником. Это облегчает наблюдение за продвижением вычисления.

Чтобы вынудить SMath Studio повторно вычислить все уравнения всюду по рабочему листу, выберите Пересчитать лист из меню Вычисление.

Прерывание вычислений

Чтобы прерывать происходящее вычисление:

1. Нажмите Esc. Появится диалоговое окно, показанное справа.

2. Нажмите ОК для прерывания вычислений или Отмена для продолжения вычислений

Если Вы щелкаете "ОК", а затем щелкните на уравнение, которое обрабатывалось, когда Вы нажали [Esc], то будет выдано сообщение о том, что вычисление было прервано. Чтобы возобновить прерванное вычисление, выберите Пересчитать лист из меню Вычисление.

Блокирование выражений

Вы можете блокировать уравнение так, чтобы оно больше не вычислялось наряду с другими областями в Вашем рабочем листе. Блокировка уравнения не затрагивает редактирование уравнения SMath Studio, форматирование, и показывает способности.

Чтобы блокировать вычисление для одного уравнения в Вашем рабочем листе, выполните следующие шаги:

1. Нажмите на уравнение, которое вы хотите блокировать.

2. Выберите Запретить вычисление в меню Вычисление

3. SMath Studio показывает небольшой прямоугольник справа сверху после уравнения, чтобы указать, что это блокировано. Пример показан справа.

Совет

Легкий короткий путь для блокирования выражения – щелкнуть правой кнопкой мыши на уравнении, и выбрать Запретить вычисление из всплывающего меню.

Чтобы повторно позволить вычисление для блокированного уравнения:

  1. Щелкните по выражению мышью для его выделения;

  2. Выберите Разрешить вычисление из меню Вычисление.

SMath Studio удаляет небольшой прямоугольник около уравнения, и вычисление позволено повторно.

8.6 Сообщение об ошибках

Если SMath Studio сталкивается с ошибкой, оценивая выражение, он отмечает выражение с сообщением об ошибке и выдвигает на первый план неверное имя или оператор. Сообщение об ошибке видимо только, когда Вы нажимаете на присоединенное выражение, содержащее ошибку (см. рис. 8.8).

Рис. 8.8 Пример сообщения об ошибке

Mathcad не может обработать выражение, содержащее ошибку. Если выражение - определение, переменная или функция, то оно остается неопределенным. Это может быть причиной неопределенности любых выражений, которые ссылаются на неопределенные выражения.

Исправление ошибок

Как только вы определили, какое выражение вызвало ошибку, отредактируйте это выражение, чтобы исправить ошибку или изменить переменные определения, которые привели к ошибке. Когда Вы щелкаете в выражении и начинаете редактировать, SMath Studio удаляет сообщение об ошибке. Когда вы щелкаете вне уравнения, SMath Studio повторно вычисляет выражение. Как только Вы устранили ошибку, SMath Studio тогда повторно вычисляет другие выражения, затронутые выражением, которое Вы изменили.

Замечание

Когда Вы определяете функцию, SMath Studio не пытается оценить ее, пока Вы впоследствии не используете ее в рабочем листе. Если есть ошибка, использование функции отмечено как ошибка, даже при том, что настоящая проблема может лежать непосредственно в определении функции, возможно намного ранее на рабочем листе.

sites.google.com

1. Основы работы - mikkhalichlab

1. Курсор и ввод выражений

1.1 Курсор в Smath Studio.

     В Smath Studio курсор бывает трех типов:

    1. курсор в виде красного крестика "+", указывает позицию.

    2. в виде уголка "__| " или перевернутой буквы "Т" - " _|_ "

          

            Указывает в каком месте математического выражения будет проводиться редактирование (ввод нового символа или удаление неверно введенного символа). Если в данном примере ввести цифру 5, то число 144 изменится на 1454, если же нажать

      delete

      , то получим 14.

           Используя стрелки «влево» и «вправо» вы можете передвигать курсор по введенному выражению. Так же для этих целей можно использовать мышку или пробел (нажмите несколько раз пробел и вы увидите, что курсор будет по очереди выделять части выражения). Таким образом можно расставлять забытые скобки, знаки корня и т.п.

      3. в виде вертикальной черты " | ".

     Указывает позицию в текстовой области, в которой будет производиться редактирование. В данном случае показывает, что редактирование начнется перед словом «мягких».

1.2 Ввод выражений

     Smath Studio можно использовать как простой калькулятор, для этого ткните мышкой в любое свободное место рабочего поля(см.

0. Обзор и краткое введение

) и попробуйте ввести какой нибудь пример как на калькуляторе.

После ввода этой комбинации в Smath Studio вы увидите:

Теперь по порядку:

  • для ввода простых выражений можно пользоваться такими операторами, как "+", "-", "*", "/", "(" и т.п.
  • для того, чтобы получить результат нажмите "=" на клавиатуре или на инструментальной панели.
  • комбинация 3^5 означает 3 в степени 5. Подробнее о комбинациях клавиш смотри в Горячие клавиши
  • для того чтобы получить результат нажмите "="

2. Особенности редактирования выражений

2.1 Коррекция знака

     Иногда при вводе математического выражения случаются досадные опечатки, скажем вместо «+» ввели «-». Допустим при вычислении значение какого-то выражения test вы ошиблись знаком.

1. Для редактирования выражения поместите курсор после знака «+»

2. Теперь при нажатии клавиши «backspace» вместо «+» появится пустое поле ввода символа

3. После этого можно вводить нужный знак «-»

Точно таким же образом можно редактировать любые знаки (:= > < + - и прочие)

2.2 Коррекция неверно введенных скобок.

Этот косяк исправляется только радикальным путем. Последовательность действий:

1. подвести курсор к открывающей скобке

2. нажать клавишу «backspace»

3. сочетанием ctrl+x или же через выпадающее меню по правой кнопке мыши вырезать выделенную часть выражения

4. получатся пустые скобки

5. нажимая клавишу «backspace» удалить скобки

6. в пустое поле вставить ранее вырезанное выражение

ДА, уважаемый анонимус, не только хирурги гланды через ж0пу вырезают!

2.3 Форматирование текста

Начиная с версии 0.88 Smath Studio поддерживает функции форматирования текста (к сожалению она официально не документирована). Введите текст

Обратите внимание : текст можно вводить и без вставки текстовой области. Просто начните набирать нужный текст, при нажатии клавиши «пробел» введенное выражение переведется в текстовую строку.

Важно : если введенный таким образом текст состоит из одного слова и не содержит пробелов, отформатировать его не удастся. Чтобы это исправить просто добавте пробел в конце слова.

Поместите курсор в любое место этой строки и нажмите сочетание клавиш ctrl+b

Если еще раз нажать это сочетание, то текст вновь станет не жирным. Точно так же его можно сделать курсивом (комбинация ctrl+i)

Или подчеркнутым (комбинация ctrl+u)

Как видно, каждый из этих эффектов можно применять к тексту по отдельности, либо все сразу.

На этом все :)

PS:

Автор статьи: zhuk. Правки и дополнения: Михаил Богданов.

sites.google.com

0. Обзор и краткое введение

Что такое Smath Studio ?

План 

  1. Очень краткая предыстория
  2. Введение (или что представляет из себя Smath Studio,  краткое описание возможностей последней версии).
  3. Красный крестик, или как работать с программой :)
  4. Несколько небольших примеров работы
  5. Заключение (описание достоинств и недостатков)

             1. Очень краткая предыстория

    Еще совсем недавно в мире PC-совместимых программ  не было бесплатных, или хотя бы дешевых, аналогов MathCAD. И мне, как инженеру приходилось писать свои расчеты в Ms Excel. Excel конечно не плохая программа, она позволяет сделать очень много. Но применительно к инженерным расчетам Excel не дает наглядности. Да и в экспертизу такой расчет сдать не получится. Так обстояло дело, пока я не узнал об Smath Studio.

     

    2. Что же такое Smath Studio?

     Итак, же это за ЗВЕРЬ такой этот Smath Studio (На момент написания статьи последняя версия была 0.89.8 Бета), что он может ?

    3. Красный крестик, или как работать с программой.

     Программа состоит из 3 областей

        3.1 Основное меню.

         -состоит из основных команд для работы с документом в целом, такие как вставить, вырезать, открыть, сохранить… а также содержит математический справочник и набор примеров. Стоит отметить, что сам справочник набрана в Smath Studio и из него легко можно копировать необходимые формулы.

        3.2 Инструментальная панель разделена по категориям :

     а) Панель «Арифметика»

    Содержит цифры, математические символы, и основные операции. Не вдаваясь в подробности рассмотрим 3 из них.

     б) панель «Матрицы»

        Содержит команды для работы с матрицами. Позволяет находить определитель матрицы, транспонировать ее, находить минор. А также содержит команду векторного умножения, потому как векторы программа рассматривает как матрицу с одним столбцом (или строкой).  

     в) Панель «Булева» 

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

      г) Панель «Функции» 

       Содержит набор часто используемых функций, таких как sin, cos, log и т.п. А также 2 кнопки «2d» и «3d», эти кнопки позволяют вставить соответственно 2-х мерные и 3-х мерные графики. 

     д) Панель «График»

       Эта панель позволяет вращать, перемещать, увеличивать/уменьшать графики функций. 

     Двумерные графики строятся по переменной х, а трехмерные по 2 переменных x, y (переменные должны вводиться в нижнем регистре).

    К сожалению автоматическое масштабирование в последней версии программы еще не реализовано. 

     в) Панель «Программирование» 

         Содержит 4 функции программирования, таких как: ветвление «IF», циклы «WHILE» и «FOR» и вспомогательная функция «LINE» 

     г) Последние две панели называются одинаково «Символы» и содержат греческие символы. 

    3.3 Рабочее поле и первый расчет:

        Рабочее поле занимает самую большую часть программы, здесь мы будем задавать исходные данные. Основным элементом поля является курсор или Фокус ввода (место где будет набираться выражение) он выглядит как красный крестик.

     Итак давайте произведём нехитрые вычисления, для начала сложим 2 числа:

         Рис. 1 Первый расчет.

      Вот мы и набрали первое действие в программе, легко правда ?

     

    3.4 А теперь поговорим об основных правилах написания расчетов в программе:

         

        Используемая в расчете переменная/функция должна быть заранее объявлена в программе, т.е находиться выше либо левее от выражения. При объявлении переменной, можно использовать:

        Для символьных вычислений переменные объявлять не обязательно

    Переменная может содержать в себе не только скалярное значение (численное), но и матрицу/вектор

    3.5 Некоторые горячие клавиши

        Таблица 1. Некоторые сочетания клавиш

     Сочетание клавиш Результат
     Shift + :   Вставляет оператор присвоения «:=» с панели «Арифметика»
     ctrl + . Вставить оператор символьного вычисления «→» с панели «Арифметика»
     = Вставить оператор численного вычисления «→» с панели «Арифметика»
     Enter Закончить ввод выражения и переместиться на строчку ниже

    3.6 Единицы измерения и автоматическая помощь ввода.

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

        Например:

        Щелкните на свободном поле и наберите «s». Рядом откроется небольшой список со всеми функциям/единицами измерения на букву «s» (sin, sign и тп.) см. рис.2. Теперь если два раза кликнуть мышкой на выбранный пункт в списке, то выбранная функция/единица измерения вставиться в документ (так же можно использовать клавишу tab или сечетание ctrl+enter).

    Рис.2. Список предлагаемых функций/единиц измерения. 

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

    Для того, чтобы исправить это, достаточно (см. рис.3):

    рис. 3 вставка единицы измерения через диалог.

      Для ручного ввода единиц измерения

    Рис. 4. Вставка единицы измерения через динамическую помощь ввода.

    б) Вставка функций аналогична вставке единиц измерения

     4. Несколько небольших примеров работы: 

         Работать в программе легко и удобно, оформленные документы смотрятся достойно: 

    Рис. 5. Пример оформленного документа.

    Заключение.

        Хотя Smath Studio и не лишена недостатков, программа иногда глючит, вылетает… есть некоторые другие недоработки. Она уже сейчас представляет собой достойный продукт, с удобным интерфейсом и богатым набором возможностей.

    P.S.

        Автор статьи: Михаил Богданов. Правки: zhuk

    sites.google.com

    7. Графики - mikkhalichlab

    Введение.

        В этой статье будут рассмотрены основы работы с графиками в Smath Studio.

    Основы.

        Графики функции в Smath Studio бывают 2х видов: двухмерные (2d) и трехмерные (3d). Для работы с ними есть специальная панель "График". 

        1) Вставить график в расчет можно несколькими способами:

        2) Как работать с графиком?

        Для начала редактирования графика, необходимо его выделить и поместить курсор в поле ввода данных (черный квадратик)

        Все очень просто, в нижней части графика есть пустое поле, куда нужно вставить:
     Внимание : В объявлении функции можно использовать любые имена переменных.Но график строиться только относительно "х" и "y". Т.е внутри графика функция должна быть вызвана с использованием этих переменных.Например:

        Если Вам нужно построить графики сразу нескольких функции, то можно воспользоваться функцией sys (алгебраическая система), введя ее с клавиатуры или нажав кнопку  с панели "Функции"

    Например:

        При этом разные графики рисуются линиями разного цвета (1й - синий, 2й - красный, 3й - зеленый и тп.), к сожалению в настоящее время в Smath Studio нет возможности выбирать цвета линий графиков самостоятельно (на момент написания статьи актуальная версия Smath Studio 0.89.8 beta)    3) Теперь давайте разберемся с панелью "График"...     Панель содержит 6 кнопок для работы с графиками, слева направо:

        Как пользоваться панелью "График"?

        Достаточно выделить нужный график в области расчета, а затем нажать нужную кнопку на панели "График".

    Некоторые ухищрения для работы с графиками.

        В этом разделе описываются некоторые тонкости и хитрости, позволяющие несколько расширить функциональность и информативность графиков.

        На данный момент отработаны варианты использования двух довольно интересных возможностей:

        1. Построение графика по точкам.

    Для построения графика по точкам нужно использовать ранее изученные матрицы, в таблице 1 показан формат матриц, для 2d и 3d графиков: 

    Таблица 1, формат матриц.

     Для 2D Для 3D

         Эта матрица содержит пары координат Х и Y. Матрицу этого формата можно вывести и в 2D и в 3D графике (на 3D графике изображение построится в плоскости XY )! 

     

         Эта матрица содержит тройки координат X, Y, Z. Матрица такого формата способна отображаться лишь в 3D графике!

     Обратите внимание : Такой подход к построению графиков как правило требует программирования. Для работы с матрицами Вам могут понадобится функции: augment, el(2), el(3), stack (см. также раздел 5. Матрицы, векторы и массивы )

    Ну а теперь примеры построения графика по точкам.

    Пример 1, плоский (2D) график по точкам:

        В этом примере я не стал приводить функции построения графика окружности, т.к. наша задача изучить сам процесс построения графиков. Здесь наглядно видно, что окружность состоит из отрезков соединяющих точки, координаты которых даны в матрице result, а матрица result1 наглядно показывает положение этих точек (что представляет из себя матрица result1 будет рассказано чуть ниже) 

    Пример 2, объемный (3D) график по точкам:

    В этом примере я для наглядности изменил матрицу из примера 1 так, чтобы получилась спираль.

        2. Вывод надписей на графике 

     Обратите внимание : На момент написания статьи - последняя версия программы 89.8beta. Эта версия не поддерживала вывод надписей на 3D графиках.

    Программа позволяет выводить на графике как надписи, так и разного вида "Точки". 

    Формат матрицы для вывода надписей:

    Где: 

     ПараметрОписание 
     X1...Xn Координата Х точки 
     Y1...Yn Координата Y точки
     "text" Сама надпись в кавычках
     txtSize Размер шрифта. Также задает размер спецсимволов (читай ниже)
     "txtColor" Цвет текста, пишется в кавычках. Некоторые значения будут приведены ниже
     Обратите внимание : Последние 2 столбца матрицы являются не обязательными, их можно не использовать, при этом программа сама назначит цвет и размер шрифта. Т.е. Матрица может содержать от 3 до 5 столбцов!

    Рассмотрим параметр

    Таблица 2 - Специальные символы для работы с графиками в SmathStudio

     Спецсимвол Описание
     + знак +, отображается как крестик
     * знак "*" звездочка, отображается в виде пятиконечной звезды
     o знак "o" маленькая буква О в английской раскладке, отображается как окружность
     x знак "x" икс маленькая в английской раскладке, отображается как повернутый крестик.
     . знак "." точка, отображается как жирная точка.
    Таблица 3 - Возможные, но не все значения параметра  "txtColor", 

    Пример 3, график sin(x), cos(x), с использованием спецсимволов разного цвета

         В этом примере я сразу подставил готовые матрицы с результатами работы функций sin и cos(функции генерирующие их см. в приложении "Пример 3а"). На графике, первая рисуется символом  ".", вторая - "х". Обратите внимание на надпись "Пример №3" она в отличии от СпЕцИаЛьНыХ символов на графике смещена вправо и вниз относительно заданных координат, т.к воспринимается программой как обычный ТеКсТ.

    На этом все :)

    Автор статьи: Михаил Богданов. Правки и дополнения: zhuk

    sites.google.com

    4. Функции программирования - mikkhalichlab

    Введение

         В этой статье я расскажу вам про функции программирования:

      Функции программирования позволяют сделать расчет более гибким.

     1. Условный переход if - else       Оператор условного перехода  if - else служит для выполнения определенного набора команд, в зависимости от выполнения условия.

     

    Пример №1:

    a:=5

    b:=6

    if a>b 

         max:=a

    else

         max:=b

    max=6

          Как это работает: в начале функция if  проверяет условие "а>b", и если это правда, то выполняется следующие после if выражение - "max:=a". В противном случае выполняется выражение следующее после else - "max:=b".

         А что если нужно выполнить только одно условие после if или else в таком случае я записываю на месте не нужного выражения 1 или любое другое число, например 0 ...

     

    Пример №2

     

    a:=5b:=6

    if a>b 

         1

    else

         a:=b+1

    a=5

         Здесь если выражение "a>b" правдиво, то программа ничего не будет делать и приступит к вычислению следующего оператора после блока if-else.

         Цикл - специальная конструкция предназначенная для многократного повторения набора инструкций. Количество повторений может задаваться заранее или зависеть от выполнения определенного условия, как в операторе if-else .

     

          Цикл со счетчиком.

     

    Пример №1

    a:=0

    cntr:=8 

    for i:=2 , i<cntr, i:=i+2

        a:=a+1

    a=3

     

         Как это работает:

     Строка  Выражение  Описание

    1

    a:=0 Присваиваем переменной а число 0, для того, чтобы узнать количество повторений цикла

    2

    cntr:=8 Эта переменная нужна для условия цикла

    3

    for i:=2 , i<cntr, i:=i+2

    Самая интересная строчка, здесь мы задаем цикл, итак:

     - i:=2     это счетчки цикла, он показывывает на каком шаге находится цикл

     - i<cntr логическое условие, когда оно станет ложным - цикл закончится

     - i:=i+2  эта конструкция задает шаг цикла, т.е i будет изменяться с шгом 2 (2,4,6,8)

     4

     a:=a+1  Эта переменная позволяет нам узнать, сколько повторений выполнил цикл. В первой строке

    а=0, при превом проходе мы задаем переменной а ее же значение + 1.

     5

     a=3 Мы можем видеть, что поскольку a=3, цикл повторился 3 раза. т.е. строка 4 выполнилась 3 рзаа.

     

          Вот мы и рассмотрели один из цикло со счетчиком.

          Цикл с предварительной проверкой условия.

     Пример:

              Обратите внимания на вертикальную линию под командой while в этом примере я применил команду line, о ней мы поговрим ниже.

     Как это работает:

     Строка  Выражение  Описание

    1

    i:=2 Присваиваем переменной i число 2, эта переменная будет счетчиком цикла

    2

    a:=1 Эта переменная позволяет нам задать, сколько повторений выполнил цикл

    3

    while i<5

    Самая интересная строчка, здесь мы задаем цикл, итак:

    i<5 означает , что цикл будет выполняться пока это условие верно!

     4

     i:=i+1 Изменяем счетчик цикла на единицу.

     4

     a:=a+1  Эта переменная позволяет нам узнать, сколько повторений выполнил цикл. В первой строке

    а=0, при превом проходе мы задаем переменной а ее же значение + 1.

     5

     a=4 Мы можем видеть, что поскольку a=4, цикл повторился 3 раза. т.е. строка 4 выполнилась 3 рзаа.т.к начальное значение а=1!

     

     

    • Важно: все замечания по циклу for(4) также относяться и  к этому циклу.
    • Важно: переменная, которая учавствует в условии цикла, должна быть задана, иначе вы не сможете предсказать, как будет работать цикл, в нашем примере это строка №1
    • Важно: в теле цикла, должна быть предусмотрена конструкция, которая изменяет счечик цикла, иначе цикл будет выполняться бесконечно. Например

     

     

     Этот цикл, аналогичен for(4), но в нем счетчик цикла х меняется сам, и принадлежит диапазону t, см. пример:  

     

         Обратите внимания на 2 строчку t:=1..5 здесь использована функция range(2), которя присваивает переменной t диапазон от 1 до 5, с шагом в 1, для целых чисел шаг обычно равен 1 .      Здесь цикл повторяется пять раз, что видно из значения j=15  во 2 строчке снизу (давайте вместе посчитаетм значение j = 0+1+2+3+4+5=15). Значение x внутри цикла берется из диапазона, если диапазон t = (1,2,3,4,5), то при каждом следующем шаге x будет равен след. значению взятому из этого диапазона:
     шаг  значение Х
     1  x=1
     2  x=2
     3  x=3
     4  x=4
     5  x=5

     

     

     3. Составная команда - Line 

     

         Команда Line позволяет сделать составнюу команду, т.е одну команду из нескольких, вы наверное уже заметили, что все 3 команды циклов ( for(3), for(4), while ),  а также операто ветвления ( If-else ) позволяют записывать внутри себя лиш одну команду. Чтобы внутри этих команд можно было выполнить целый ряд действий и придумана line. На рисунке ниже показана команда line:

         

     

         Обратите внимание, по умолчания она вставляется с 2 пустыпи полями ввода, туда можно записать нужные вам команды. Черный квадратик справа внизу служит для растягивания линий, с его помощью линию можно растянуть/сжать на столько команд, на сколько нужно:

     

     

         Внутрь оператора line можно вставлять еще несколько операторов line, вложений может быть много, но на практике больше 2-3 обычно не используется:

     

     

        Обратите внимание, что если навести на операто line мышкой, то появиться всплывающая подсказка, где показано состояние всех переменных внутри.

     

    На этом все!

    P.S.

        Если Вы всетаки умудрились запустить расчет с бесконечным циклом (или просто надоело ждать когда все просчитает), то в Smath Studio есть кнопка остановки расчета

     Текст статьи: Богданов Михаил. Правки: zhuk

    sites.google.com

    5. Матрицы, векторы и массивы.

    План

         В этой статье я расскажу вам про матрицы с точки зрения Smath Studio (для тек, кому интересна математическая сторона, прошу на wiki):
    1. Матрицы, создание матриц, элементы матриц (mat, matrix, el(2), el(3) )
    2. Чем отличается матрица от вектора ?
    3. Матрица как массив элементов (max, min, cols, row, rows)
    4. Сортировка матриц (sort, csort, rsort)
    5. Объединение матриц(augment, stack)
    6. Субматрицы (submatrix, col, row,)
    Прим.: в Smath Studio нумерация всех элементов начинается с 1. Если вы будете использовать какую-либо функцию с нулевым элементом, то программа выдаст ошибку.

    1 Матрицы, создание матриц, элементы матриц (mat, matrix, el(2), el(3))

         Итак матрица в smath studio это в общем случае прямоугольный набор элементов, который может содержать:

    1.1 Создать матрицу можно несколькими путями: 

       a) Прим помощи команды mat или кнопки "Кубическая матрица" с панели "Матрицы". В результате проделанных действий вы увидите пустую матрицу. Для того чтобы изменить ее размеры, ухватитесь мышкой за черный квадратик справа снизу матрицы и растягивайте/сжимайте ее.  

       б) Командой matrix(arg1, arg2), где arg1 - число строк, arg2 - число столбцов. Так matrix(10,20) создаст матрицу заполненную нулями, состоящую из 10 строк и 20 столбцов:

        в) Создать матрицу можно также прим помощи команд el(2) и el(3), этот метод не очевиден, но он позволяет элегантно работать с матрицами, например для команды el(2):     Т.е. при при увеличении индекса, матрица автоматически меняет свои размеры, а промежуточные элементы заполняются нулями.  Т.о если мы создадим матрицу, присвоив ей сразу 3 элемент (см. выше пример с "y") то первые 2 элемента заполнятся нулями. Как видно из примера выше (см. на матрицу "z") обращаться к элементам матрицы можно в произвольном порядке...      Для функции el(3) все аналогично!

    1.2 В Smath Studio  существют 2 команды для работы с элементами матрицы на прямую, это el(2) и el(3), они позволяют обращаться к элементам матрицы по отдельности. Давайте рассмотрим отличия этих 2 команд в таблице

    2 Чем отличается матрица от вектора ?

    С точки зрения Smath Studio вектор, это матрица состоящая из одного столбца и 3 строчек, см. рис ниже (например командой matrix(3,1) можно создать нулевой вектор).

    Пример команды векторного умножения векторов   с панели матрицы:С векторами можно делать все те же действия, что и с матрицами. 

    3 Матрица как массив элементов (max, min, cols, rows)

    В Smath Studio можно использовать матрицы и как массив для хранения элементов, это возможно благодаря 3 командам рассмотренным выше:

    В матрице можно например накапливать координаты точек для построения графиков(об этом поговорим в одной из следующих статей), или другие данные, с которыми удобно работать, как с массивом (массив очень похож на список элементов, обращение к элементам которого происходит по номеру/индексу элемента в списке).

    Далее будут приведены некоторые команды, которые рассматривают матрицы как массив элементов:

    4 Сортировка матриц/массивов (sort, csort, rsort)

    Сортировка позволяет упорядочить/отсортировать элементы матрицы/массива по порядку (по возрастанию)

     Команда Описание
     sortКоманда применима только к векторам, т.е к матрицам состоящим из одного столбца и нескольких строчек, она сортирует элементы вектора в порядке возрастания.Пример:
     csortКоманда позволяет отсортировать всю матрицу, по элементам выбранного столбца. Т.е. матрица сортируется по строчкам, согласно возрастанию элементов указанного столбца.Пример, сортируем матрицу по 1 столбцу:
     rsortКоманда позволяет отсортировать всю матрицу, по элементам выбранной строки. Т.е. матрица сортируется по столбцам, согласно возрастанию элементов указанной строки.Пример, сортируем матрицу по 1 строчке:

    5. Объединение матриц (augment, stack)

    Эти 2 команды позволяют объединять матрицы, пример смотри в таблице ниже:

     КомандаОписание
     augmentКоманда позволяет объединять матрицы по столбцам.
    • Важно: можно объединить матрицы только с одинаковым числом строк!
    • Команда позволяет объединить за раз несколько матриц, все они отделяются между собой запятыми (символом-разделителем целой и дробной частей).
    • Возможно использовать такую конструкцию:  А:=augment(А, B), где матрица A должна быть определена перед первым использованием этой конструкции, она позволяет прибавлять к матрице А, ее же значение плюс матрицу B. Этот прием используется в основном в циклических конструкциях.
     stackКоманда позволяет объединять матрицы по строкам
    • Важно: можно объединить матрицы только с одинаковым числом столбцов!
    • Команда позволяет объединить за раз несколько матриц, все они отделяются между собой запятыми (символом-разделителем целой и дробной частей).
    • Возможно использовать такую конструкцию:  А:=stack(А, B), где матрица A должна быть определена перед первым использованием этой конструкции, она позволяет прибавлять к матрице А, ее же значение плюс матрицу B. Этот прием используется в основном в циклических конструкциях.

    6. Субматрицы (col, row, submatrix)

     Давайте рассмотрим последнюю группу команд, которая служит для разделения матриц.

     Команда Описание
     colЭта команда позволяет достать из матрицы любой указанный столбец, например возьмем 3 столбец из матрицы:Обратите внимание: разумеется номер требуемого столбца должен быть меньше либо равен количеству столбцов в матрице.
     rowЭта команда позволяет достать из матрицы любую указанную строчку, например:Обратите внимание: разумеется номер требуемой строки должен быть меньше либо равен количеству строк в матрице.
     submatrixЭта команда позволяет достать из матрицы указанную прямоугольную область, например:Итак, что произошло? Мы вычленили из основной матрицы, подматрицу, которая включает в себя строки с 1 по 4 и колонки со 2 по 3 из основной матрицы! Ниже приведена таблица с описанием параметров этой функции:
     № аргументов слева на право. Описание
    1 Сама матрица
    2 Номер начальной строки
    3 Номер конечной строки
    4 Номер начального столбца
    5 Номер конечного столца

    Заключение

        Итак мы рассмотрели почти все специфические команды работы с матрицами, узнали как найти минимальное/максимальное значение, как объединять матрицы, как сортировать. В Smath Studio существует довольно много команд, которые могут работать с матрицами, рассмотреть их все задача не ставилась. Цель этой статьи показать основы работы.

    На этом все :)

    P.S.

    Автор статьи: Михаил Богданов. Примечания и правки: zhuk

    sites.google.com

    Синтез многочлена наилучшего равномерного приближения

    SMath-ный репортаж практикующим инженером.

        Введение

     

         Прежде всего, позвольте представиться. Я, Пахоменков Юрий Михайлович, к.т.н., инженер-схемотехник с более чем 25 летним стажем разработки

    аналоговых и смешанных модулей для систем автоматики. В последней трети 20 века, как программист был «оболванен Бэйсиком без надежды на исцеление». Математическое содержание большинства моих расчетов, выполненных в программе MathCAD (версии от 2.5 до 15), составляют задачи из теории приближения функций (ТПФ), решения систем нелинейных уравнений(СНУ), дифференциальных уравнений (ДУ) и задачи оптимизации, а их основным структурным элементом являются подпрограммы-функции. Интерес к программе SMath возник после сообщения об этой программе, сделанного Вячеславом Николаевичем Мезенцевым на форуме сайта exponenta.ru. Привлекательными сторонами этой программы, для меня являются возможность эксплуатации на мобильных устройствах, наличие портабельной версии, и, конечно бесплатность или (в перспективе) гуманная цена. В порядке освоения этой программы повторим в SMath-е некоторые расчеты, ранее выполненные в MathCAD-е. При этом обратим внимание на «грабли», по которым придется «ступать».

        1. Полином друг инженера (первая часть «марлезонского балета»)

         Первым из рассматриваемых расчетов будет синтез многочлена наилучшего равномерного приближения (МНРП) степени m. Решение этой задачи востребовано при построении термометрических каналов систем управления [1, 2], формирователей гармонических сигналов [3] и в других приложениях.     Синтез МНРП P(t,a,m) для функции f (t ) на отрезке t0   t   t1 заключается в решении задачи      

            где aOPT – вектор коэффициентов МНРП.

        Расчет выполнен на основании теоремы Чебышева "об альтернансе" по алгоритму Ремеза [4], включающему следующие этапы. 

       

            1 Выбор начальных координат точек альтернанса (g ).

            2 Составление и решение системы уравнений Чебышевской аппроксимации.

            3 Определение глобального максимума модуля погрешности аппроксимации 

        

        

            методом сканирования по переменной t с шагом dt .

            4 Анализ и модификацию альтернанса.

        Этапы 2…4 повторяются циклически вплоть до выполнения условия завершения расчета, заключающегося в уменьшении вариации погрешности

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

        Первые неожиданности при реализации этого алгоритма в SMath поджидали уже при записи МНРП в аналитическом виде. Как оказалось, SMath

    позволяет работать с минимальным значением индекса, равным 1, в отличие от MathCAD, где переменная ORIGIN может принимать нулевое и единичное значения. По моему мнению, это не удобно, но вполне терпимо и является лишь особенностью SMath, которую удалось обойти. Более коварная неприятность обнаружилась в ходе вычисления полинома при нулевом значении аргумента. При этом SMath определяет как ошибочное выражение 00 в отличие от программ MathCAD, MATLAB, Calc (из пакета SUNOffice) и даже калькулятора успешно вычисляющих 00 = 1. С учетом отмеченных особенностей пришлось изменить аналитическую запись полинома от стандартной формы, реализованной в документе MathCAD к примененной в расчетном файле SMath.

         Составление и решение системы уравнений Чебышевской аппроксимации осуществляется с помощью подпрограммы-функции X(a) , возвращающей коэффициенты полинома X1...Xm+1 и значение погрешности в точках альтернанса Xm+2 для аргумента текущего вектор точек альтернанса a . Указанная функция формирует и решает следующую систему уравнений

            FI × X = FU ,         (2)

          

            где

              Непосредственное решение этой системы в виде X = FI -1 ×FU сопровождалось сообщением об ошибке. Затруднение было преодолено введением оператора eval() в строке X = eval(FI )-1 ×FU . Следующее сообщение об ошибке не заставило себя долго ждать, и появилось во всей красе при по- пытке сформировать из решений системы (2) вектор коэффициентов полинома с помощью функции submatrix . Причина этого сообщения заключалась в нежелании этой функции работать с аргументом, также являющимся функцией. Решение проблемы предстало в виде программного блока A(a) , в первой строке которого локальной переменной присваивается значение функции текущего аргумента, а во второй строке работает функция submatrix . Следующая подпрограмма-функция Q(t0, t1, a,N) , реализующая метод сканирования функции | r (t,a,m) |=| u(t ) - P(t, a,m) | на отрезке [t0 t1] заработала практически сразу, однако, для того чтобы в качестве аргумента a эта функция воспринимала функцию A(a) , потребовалось во второй строке подпрограммы Q(t0, t1, a,N) ввести оператор eval() . После указанной корректировки эта подпрограмма успешно возвращает вектор первый элемент которого содержит оценку значения аргумента, соответствующего максимуму погрешности аппроксимации (точку экстремума)

    tar = arg{max | r (t, a,m) |} , а второй элемент – экстремальное значение функции | r (tar ,a,m) | .

         На этапе анализа и модификации альтернанса в первую очередь необходимо определить местоположение точки экстремума по отношению к множеству точек альтернанса. Указанная задача решается подпрограммой skm(t,ta), первый аргумент которой – точка экстремума, а второй множество точек альтернанса. Функция возвращает вектор, содержащий значения аргумента из множества точек альтернанса, между которыми расположена точка экстремума, а также порядковый номер ближайшей точки альтернанса, не превосходящей экстремального значения аргумента. При создании этой подпрограммы обнаружена чувствительность функции stack() к типу аргументов, препятствующая формированию с ее помощью вектора из скалярных чисел. Поэтому потребовалось введение фиктивных однокомпонентных векторов h, v.

        При формировании нового альтернанса с помощью подпрограммы gn(a) осуществляется проверка неравенств 

        где

      

    целые числа.

        Если справедливо неравенство (3), то в соответствии с выражением,

            sign{r (tar, a) / am+2} = (-1)v ,                                                  (6)

        где v= j или (j+1); осуществляют замену tav = tar . Остальные компоненты альтернанса оставляют без изменений.

        Если tar удовлетворяет неравенству (4), и при этом равенство (6) выполняется для n=1, то заменяют только минимальную компоненту альтернанса ta1 = tar , иначе осуществляют замену по формулам taj = taj -1, где j=m+2, m+1, … 1; и ta1 = tar .

        Если tar удовлетворяет неравенству (5), и при этом справедливо равенство (6) для n= m+2, то заменяют только максимальную компоненту альтернанса tam+2 = tar , иначе осуществляют замену по формулам taj = taj +1, где j=0, 1, … m+1; и tam+2 = tar .

        Реализация указанной функции с учетом приобретенного опыта не вызвала затруднений.

        Функция управления итерациями altern(a) осуществляет проверку выполнения условий завершения расчета. Особенность реализации указанной

    функции в SMath заключается в замене оператора break , применяемого MathCAD искусственным обнулением вариации погрешности аппроксимации v . На заключительном этапе расчета выполнена интуитивно понятная визуализация его результатов.

        Таким образом, несмотря на «тернии» средствами программы SMath удалось реализовать довольно сложный алгоритм. Приобретенный при этом

    опыт позволяет сделать следующие выводы.

        1. SMath безусловно успешная и полезная программа, которая несомненно найдет свой круг пользователей.

        2. Среди отмеченных особенностей единственным недостатком, требующим исправления, по моему мнению, является проблема 00 = неопределенность (должно быть 00= 1).

        3. Время вычислений существенно больше чем в MathCAD, но с учетом мобильности SMath это вполне приемлемо.

    Успех реализации рассмотренного алгоритма, с учетом наличия разно образных примеров воодушевляет на реализацию средствами SMath других расчетов из «тревожного чемодана».

    (Ю.М. Пахоменков, СПБ, 23.02.2011) (Статья размещена с разрешения автора)

        1. Пахоменков Ю.М. Унифицированный преобразователи сигналов термопар// Схемотехника, 2006г., №4, С.53 –55.

        2. Пахоменков Ю.М. О некоторых алгоритмических методах линеаризации характеристик термопар // Системы управления и обработки информации, СПб. – 2003. – Вып. 6. – С. 160-170.

        3. Пахоменков Ю.М., Янкин Ю.Ю. О некоторых способах построения генераторов гармонических сигналов. // Системы управления и обработки информации: Научн.-техн. сб. / ОАО «Концерн «НПО «Аврора», СПб., 2009. Вып. 18. С. 143-153.

        4. Попов Б.А., Теслер Г.С. Приближение функций для технических приложений. – Киев, Наукова Думка,1980.

    (Продолжение следует)

    Примечания:

    sites.google.com


    Смотрите также