Матрицы и векторы
Символические переменные могут являться элементами матриц и векторов. Элементы строк матриц при вводе отделяются пробелами или запятыми, а столбцов — точкой с запятой, так же как и для обычных матриц. В результате образуются символические матрицы и векторы, к которым применимы матричные и поэлементные операции и встроенные функции.
syms a b c d e f g h
A=[a b;c d]
A =
[ a, b]
[ c, d]
B=[e, f;g, h]
B =
[ e, f]
[ g, h]
C=A*B
C =
[ a*e+b*g, a*f+b*h]
[ c*e+d*g, c*f+d*h]
Функция sym позволяет преобразовать значения числовых переменных в символические. Введите массив типа double array:
A=[1.3 -2.1 1.9;
6.9 3.7 8.5]
A =
1.3000 -2.1000 1.9000
6.9000 3.7000 8.5000
и образуйте соответствующий ему символический массив:
B=sym(A)
B =
[ 13/10, -21/10, 19/10]
[ 69/10, 37/10, 17/2]
Создайте вектор-столбец
c=[3.2; 0.4; -2.1]
c =
3.2000
0.4000
-2.1000
d=sym(c)
d =
16/5
2/5
-21/10
e=B*d
e =
-67/100
571/100
Использование рациональных дробей при выполнении символических вычислений означает, что всегда получается точный результат, не содержащий погрешность округления.
Пример преобразования типов переменных.
format long
1.0e+10+10+1.0e-10
ans =
1.000000001000000e+010
Символические переменные:
large=sym(1.0e10);
small=sym(1.0e-10);
s=large+small
s =
100000000000000000001/10000000000
Рациональная дробь является точным значением суммы.
Разумеется, символические вычисления требуют значительных временных затрат по сравнению с обычными.
Преобразование в числовые значения
Вычисления с рациональными дробями позволяют получить значение символического выражения с любой степенью точности, т. е. найти сколь угодно много значащих цифр результата.
Функция vpa предназначена для вычисления символических выражений:
c=sym('sqrt(2)')
cn=vpa(c)
c =
sqrt(2)
cn =
1.4142135623730950488016887242097
cn=vpa(c,4)
cn =
1.414
Посмотрим описание использованной функции vpa
help vpa
Symbolic Math Toolbox |
|
|
vpa
Variable precision arithmetic
Syntax
R = vpa(A) R = vpa(A,d)
Description
R = vpa(A) uses variable-precision arithmetic (VPA) to compute each element of A to d decimal digits of accuracy, where d is the current setting of digits. Each element of the result is a symbolic expression.
R = vpa(A,d) uses d digits, instead of the current setting of digits.
То есть, эта функция использует арифметику переменной точности для вычисления каждого элемента A с d десятичными знаками после запятой. Каждый элемент результата является символьным выражением.
Графическое представление функций
Визуализация символической функции одной переменной осуществляется при помощи ezplot.
help ezplot
EZPLOT Easy to use function plotter
EZPLOT(FUN) plots the function FUN(X) over the default domain
-2*PI < X < 2*PI.
EZPLOT(FUN2) plots the implicitly defined function FUN2(X,Y) = 0 over
the default domain -2*PI < X < 2*PI and -2*PI < Y < 2*PI.
EZPLOT(FUN,[A,B]) plots FUN(X) over A < X < B.
EZPLOT(FUN2,[A,B]) plots FUN2(X,Y) = 0 over A < X < B and A < Y < B.
EZPLOT(FUN2,[XMIN,XMAX,YMIN,YMAX]) plots FUN2(X,Y) = 0 over
XMIN < X < XMAX and YMIN < Y < YMAX.
doc ezplot
Самый простой вариант использования ezplot состоит в указании символической функции в качестве единственного входного аргумента, при этом в графическое окно выводится график функции на отрезке
f=sym('x^2*sin(x)');
ezplot(f)
Функция ezplot имеет некоторые отличия от своего аналога — функции fplot (посмотрите описание!), применяемой к числовым функциям. В частности, возможно указание символической функции, зависящей от двух аргументов:
z=sym('x^2+y^3');
ezplot(z, [-2 1 -3 4])
В данном случае выведется линия, на которой исследуемое выражение равно нулю.