Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lection_matlab_all / matlab_11

.pdf
Скачиваний:
22
Добавлен:
27.05.2015
Размер:
229.04 Кб
Скачать

Символьные вычисления в MatLab

В систему MATLAB входит пакет расширения Symbolic Math Toolbox, который базируется на ядре символьной математической системы Maple, лидирующей в области автоматизации аналитических вычислений. Пакет Symbolic Math Toolbox обеспечивает в системе MATLAB новые возможности для проведения символьных (аналитических) вычислений, которые по общности результатов и точности вычислений часто намного и принципиально превосходят численные вычисления. Хотя символьные вычисления пока используются намного реже, чем численные, возможность их применения это именно то, чего системе MATLAB не хватало с момента ее появления.

Переменные системы MATLAB по умолчанию задаются как векторные, матричные, числовые и т. д., то есть не имеющие отношения к символьной математике. Для реализации символьных вычислений в простейшем случае можно определить строковые переменные, заключив их имена в апострофы (устарело; в современных версиях не используется):

>> sin(x)^2 + соs(х)^2

??? Undefined functiono or variable 'x' >> sin('x')^2 + соs('х')^2

ans =1

Для создания символьных переменных используется также функция sym:

S = sym(A) — возвращает символьный объект s класса sym для входного параметра А. Если А — строка, то будет получена символьная строка или символьная переменная, а если А — это число (скаляр) или матрица, то будут получены их символьные представления.

х = sym('x') — возвращает символьную переменную с именем 'х' и записывает результат в х.

х = sym ('х' , 'real ' ) — возвращает символьную переменную вещественного типа, а х = sym ('х' , 'unreal' ) — комплексного.

Для преобразования чисел или матриц в символьную форму применяется функция sym в формате

S = sym(A, flag)

Параметр flag может иметь следующие значения:

'f' - число с плавающей точкой в формате 'l.F'*2^(e), где F - строка из 13 шестнадцатеричных чисел, а е - целое число;

'r' - число в рациональной форме (по умолчанию);

'е' - число в рациональной форме плюс оценка машинной погрешности;

'd' - число в расширенной десятичной форме с числом верных цифр, заданных функцией digits

Для создания группы символьных объектов служит функция syms:

syms argl arg2 ... — создает группу символьных объектов, подобную выражениям argl = sym('arg1'); arg2 = sym('arg2'); ...;

syms argl arg2 ... real и syms argl arg2 ... unreal — создают группы символьных объектов с вещественными (real) и невещественными (unreal) значениями. Последнюю функцию можно использовать для отмены задания вещественности объектов.

Примеры:

%будут созданы символьные объкты %и инициализованы указанными значениями

>>syms x y z;

>>a = sym('alpha'); r = sym('Rho','real'); d = sym('1/10')

%будут созданы символьные объкты с цифровыми значениями

>>sym(1/50, 'f') → ans = '1.47ae147ae14 7b'*2^(-6)

>>sym(4/6, 'r') → ans = 2/3

>>sym(4/6, 'e') → ans = 2/3-eps/6

>>sym(4/6, 'd' ) → ans = .66666666666666662965923251249478

>>digits (12)

>>sym(4/6, 'd') → ans = .666666666667

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

>>sqrt(3) → ans = 1 .7321

>>sqrt(sym(3)) → ans = 3^(1/2)

>>exp(1) → ans = 2.7183

>>exp(sym(1)) → ans = exp(1)

>>pi/2 → ans = 1.5708

>>sym(pi/2) → ans = pi/2

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

Ввыражениях могут использоваться арифметические операторы +, —, *, /, ^, а также функции математической библиотеки. В общем случае выражения подразумевают действия над векторами и матрицами. Если необходимы операторы поэлементные, то надо использовать операторы .+, .—, .*, ./ и .^. Фукции, если это не оговорено особо, принимают аргументы-массивы и работают с ними, используя поэлементные операции.

Пример:

>>syms x;

>>sin ( [1 2 3]) → ans = 0.8415 0.9093 0.1411

>>2.*sin ( [1 2 3] ) → ans = 1.6829 1.8186 0.2822

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

findsym (S) — возвращает в алфавитном порядке список всех символьныхпеременных выражения s. При отсутствии таковых возвращается пустая строка.

findsym (S,N) — возвращает список N символьных переменных, ближайших к 'х' в порядке упорядочения по алфавиту.

Соседние файлы в папке lection_matlab_all