Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Символьные вычисления The MATLAB Notebook v1.docx
Скачиваний:
16
Добавлен:
27.03.2015
Размер:
42.88 Кб
Скачать

Матрицы и векторы

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

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])

В данном случае выведется линия, на которой исследуемое выражение рав­но нулю.