matlab_11
.pdfСимвольные вычисления в 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 символьных переменных, ближайших к 'х' в порядке упорядочения по алфавиту.