Skip to content

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

Здравствуйте, уважаемые читатели. В этой небольшой статье речь пойдет о работе с символьными переменными в 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 являются дополнительным инструментом разработчика, и с помощью этой статьи можно ознакомиться с этим инструментом.

Все примеры очень просты и в исходниках не нуждаются. На этом все, встретимся в следующей статье.

Опубликовано вMatlab

Будьте первым, кто оставит комментарий

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *