Здравствуйте, уважаемые читатели. В этой небольшой статье речь пойдет о работе с символьными переменными в Matlab. На простых примерах мы разберем преобразование символьных выражений, а также символьное дифференцирование и интегрирование.
Создание символьного выражения в Matlab
Иногда символьные выражения крайне необходимы, именно поэтому важно уметь их объявлять в Matlab. Обычно используют два способа. Первый — использование оператора syms.
syms x y;
Таким простым способом мы создали две символьные переменные. Пока они ничего не делают и не представляют какой либо ценности, но чуть позже мы увидим, что они могут быть полезны.
Второй способ — использование команды sym.
f = sym('f');
При ее использовании, можно сразу задать функцию, полином или выражение:
f = sym('cos(x) + cos(y)')
Символьные выражения полезны тем, что вычисления с ними производятся без погрешностей.
Преобразования символьных выражений в Matlab
Возможны несколько типов преобразований:
- Функция раскрытия скобок expand
Для примера зададим символьное выражение и попробуем раскрыть скобки:
>> syms x y;
>> f = (x+2)*(x+3) + (y+5);
>> f = expand(f)
f =
x^2 + 5*x + y + 11
- Функция упрощения simplify
Данная функция помогает упростить символьное выражение в Matlab. Возьмем для примера такое выражение.
>> syms x y;
>> f = (x*y^3 + 2*y + x^4*y)/(y);
>> f = simplify(f)
f =
x^4 + x*y^2 + 2
- Функция разложения на множители factor
Данная функция помогает преобразовать символьное выражение, например, в полином в Matlab. Иногда, это бывает очень важно и необходимо.
>> syms x;
>> f = (x+4)^4 + x^2 + (x-2)^3;
>> f = factor(f)
f =
x^4 + 17*x^3 + 91*x^2 + 268*x + 248
Вычисление значения символьных выражений в Matlab
Конечно, символьные выражения это интересный инструмент в Matlab, но хотелось бы находить значение этого выражения при каких-то заданных значениях переменной.
Для этого можно воспользоваться несколькими функциями. Сначала нужно заменить все переменные на число с помощью оператора subs. Затем перевести полученное выражение в числовое с помощью оператора double. Разберем пример:
>> syms x; >> f = (x^4 + 17*x^3 + 91*x^2 + 268*x) / 248; >> f = subs(f, x, 3) %заменяем все x на 3 f = 2163/248 >> f = double(f) f = 8.7218
Стоит отметить, что после выполнения оператора subs, выражение все еще остается символьным. Поэтому далее выполняется оператор double.
Если же у функции несколько переменных, то придется использовать subs несколько раз.
>> syms x y; >> f = (x+4)^4 + x^2 + (y-2)^3; >> f = double(subs(subs(f, x, 2), y, 3)) f = 1301
Символьное дифференцирование в Matlab
На нашем сайте уже были статьи по численному дифференцированию в среде Matlab, но любой численный метод может давать погрешности. А вычисление в символьном виде может быть очень полезным и точным.
Итак, символьное дифференцирование осуществляется оператором diff. При вызове функции следует указать переменную, по которой будет производиться дифференцирование.
>> f = x^4 + 17*x^3 + 91*x^2 + 268*x + 248; >> diff(f) ans = 4*x^3 + 51*x^2 + 182*x + 268
В этом примере функция зависит от одной переменной, поэтому производная считается по ней автоматически. Если нужно вычислить вторую производную:
>> f = x^4 + 17*x^3 + 91*x^2 + 268*x + 248; >> diff(f, 2) ans = 12*x^2 + 102*x + 182
Теперь посмотрим на функцию от нескольких переменных:
>> syms x y; >> f = 2 * x ^ 5 + x * y + y^3; >> diff(f, 'x') ans = 10*x^4 + y >> diff(f, 'y') ans = 3*y^2 + x
Очевидно, что после получения производных, с ними можно выполнить все действия, описанные выше.
Символьное интегрирование в Matlab
Наряду с дифференцированием, в Matlab можно выполнять символьное интегрирование. Иногда это бывает удобнее, чем численное интегрирование. Символьное интегрирование в Matlab выполняется оператором int.
Оператор выполняется практически также, как и оператор дифференцирования.
>> f = 4*x^3 + 51*x^2 + 182*x + 268;
>> int(f)
ans =
x^4 + 17*x^3 + 91*x^2 + 268*x
Также, возможен расчет определенного интеграла:
>> f = 4*x^3 + 51*x^2 + 182*x + 268; >> int(f, 0, 4) %определенный интеграл на промежутке от 0 до 4 ans = 3872
Другие функции
В Matlab реализовано множество функций для работы с символьными вычислениями. Помимо тех, что были рассмотрены, следует выделить следующие функции:
- ezplot(f) — построение графика функции
- solve(f) — решение символьных уравнений и систем
- taylor(f) — разложение символьной функции в ряд тейлора
- limit(f) — вычисление предела
Эти и многие другие функции в Matlab имеют свои опции и параметры. Очевидно, что среда Matlab дает широкие возможности разработчику при работе с символьными вычислениями.
Заключение
На этом статья подходит к концу. Символьные вычисления в Matlab являются дополнительным инструментом разработчика, и с помощью этой статьи можно ознакомиться с этим инструментом.
Все примеры очень просты и в исходниках не нуждаются. На этом все, встретимся в следующей статье.
Будьте первым, кто оставит комментарий