суббота, 12 июля 2014 г.

Scilab. Не путать с Freemat

Многое из того, что было сказано про Freemat, относится к Scilab. Это и общий синтаксис выражений, и работа с матрицами, и большинство "стандартных" функций. Поэтому я опишу только отличия, которые существуют.


  • Строчные комментарии начинаются с "//", а не "#". Язык сообщения может быть любым.
  • Встроенные константы начинаются со знака "%", например %i - комплексная единица, %pi - число "пи", %e - число Эйлера.
  • Отличается способ создания пользовательских функций.
Создать собственную функцию можно двумя способами, начнём со второго, который почти не отличается от работы с текстовым редактором в Freemat. Разница в том, что в Scilab ввод тело функции заканчивается командой "endfunction", и при этом не обязательно переходить в текстовый редактор. Но подсветка синтаксиса, форматирование и т.п. делают его более удобным инструментом, так что откроем Applications - SciNotes. Функция записывается в виде
  function [a1,a2...an]=f(x1,x2...xm)
      тело функции
  endfunction
Хочу обратить внимание, что если нам не нужен результат промежуточных вычислений, строки желательно заканчивать ";". Результатом функции является значение, присвоенное переменной в квадратных скобках (в данном случае y1).
Чтобы воспользоваться данной функцией, необходимо предварительно загрузить одноимённый файл с помощью File - Execute (или Ctrl + E). Если программа подтвердила успешную загрузку ("Execution done"), можно работать дальше.
Второй способ определить функцию - это воспользоваться выражением
  deff('определение функции','тело функции')
Предыдущий пример мог бы быть записан в следующем виде:
  • В Scilab полином изображается с помощью псевдографики, а не вектора. Задать его можно функцией p = poly(A, 'x', 'f'),  где A - вектор чисел, x - символьная переменная, f - необязательный параметр, определяющий характер вектора A: по умолчанию f = r (roots), A задаёт корни полинома, при f = c (coeff) через A определены его коэффициенты. Полиномы p можно складывать, вычитать, умножать, делить, возводить в степень, а функция roots(p) находит корни.
  • И напоследок про матрицы. Функции max(M) и min(M) возвращают наибольший и наименьший элементы для всей матрицы (а не по столбцам, как в Freemat). Чтобы получить результат для  каждого из столбцов, необходимо вторым аргументом функции установить 'c', для строк - 'r'.

Комментариев нет:

Отправить комментарий